⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++biulder 程序设计两点技巧 (转).txt

📁 C&C++论坛精华
💻 TXT
字号:
作者:hxfwsk
email: hxfwsk@hotmail.com
日期:6/15/2001 7:26:24 PM
我在开发一个软件的过程中,遇到了不少的困难。其中有些问题,是系统的帮助、一般的书籍是不可能提到的,只能靠自己摸索。以下是我在实践中总结的一些经验,现在整理出来让同行们参考,避免走弯路。不对之处,请多多指正。 

一、窗体的访问: 

---- 由系统直接建立的窗体(全局可见)、由父窗体动态建立的子窗体,可直接通过名称访问。但是如果父窗体也是动态建立的,而由父窗体动态建立的子窗体想要访问父窗体,则不能通过直接引用父窗体的名称来实现。如在父窗体(类:TfrmParent 实例:frmParent)有以下代码: 

TfrmChild *frmChild=new TfrmChild (this);
   frmChild->Show( );( 或ShowModal ( ) )

---- 动态生成了一个子窗体,而在子窗体想要访问父窗体的Edit1成员,则应该使用下面的方式: 
---- ((TfrmParent*)this->Owner)->Edit1->Text="从子窗体访问父窗体的成员Edit1。"; 

二、组件数组的使用: 

---- VB的控件数组非常方便,可以使多个控件通过索引来进行集体引用,并且共享同一个带索引参数的事件处理程序。在C++Biulder中不直接支持这样的控件数组,给编写需要大量同一个类型控件的程序带来不便。通过摸索,我发现可用TList类来实现这个想法。如在一个窗体中大量使用CheckBox控件: 

---- 1、在窗体类中声明一个变量:TList *CHKBXList; 

---- 2、在窗体的构造函数中加入以下代码: 

---- CHKBXList=new Tlist;//使用的系统类提供的抽象类,声明了定义后, //还要在实现文件中用new生成实例对象。 

  CHKBXList ->Add(CheckBox1);
  CHKBXList ->Add(CheckBox2);
  CHKBXList ->Add(CheckBox3);
  ……

---- 3、引用方法: 

---- ((TCheckBox *) CHKBXList)->Items[ i ])->Checked= true; 

---- 注意两点:首先,因为Tlist的Item 属性返回的是 Void * 类型的指针,所以要用(TCheckBox *)对此指针进行强制转换。其次,索引的编号是从0开始的,即 i 应该从0开始算,不要搞错了。 

---- 对于共享事件处理,可以采用其中任意一个控件的的事件处理程序。如: 

 void __fastcall TForm1::CheckBox1Click(TObject *Sender)
 {
  …….//添入事件处理代码
 }

---- 然后,在其它控件的属性工具窗口中选择 Events 标签,再在OnClick 栏点击下拉框,选择CheckBox1Click 即可。 
---- 以上程序在win98、C++Biulder 5 环境下调试成功。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -