TForm 一、让窗口总是在最前面 Form 的FormStyle属性设置为fsStayOnTop值。 二、 动态调用窗体Form 在缺省情况下， 由File/New Form生成添加入项目文件中的 窗体都具有"Auto Create"（自动创建）的特性。即只要程序运行，该窗体就存在于 内存中了，不管当前它是否被调用。具有这种特性的窗体一般适用于窗体属性比较 固定、经常被调用的情况。其优点是速度快，缺点是占用内存。在实际程序设 计中，会遇见大量类似对话框功能的窗体，它们用于显示状态或输入信息，仅须在程 序中调用一下，完成其功能就行了，无需常驻内存。这时可以通过选择Project/Options/Forms，将"Auto--Create forms " 栏中相应的窗体, 如Form1，用" >" 键移动到 "Available forms"栏中，并在程序需调用该窗体处，加入下列语句： TForm1 *myform=new TForm1(this); myform- >ShowModal(); delete myform; 窗体Form1仅是在需要调 用时才调入内存，调用完成后，即用delete清除出内存。这样可减少程序对内存资源 的占用。 三、遍历窗体控件的方法 要访问或修改窗体上的控件，方法很简单，以TEdit为例子： Edit1- >Text=""; Edit2- >Text=""; 但如果窗体上有十来个像Edit1 这样的控件，需要进行相同的初始化，用上面的方法一个一个地进行，岂不麻烦 ！ 所以有必要掌握 遍 历窗 体 控 件 的 方 法。 在 介 绍 该 方 法 之 前， 让 我 们 先了 解 一 下 窗 体Form 的Components 和Controls 属 性。 参 见 表 一。 表 一 属性 类型 说明 ComponentCount Int 目前Form上各类 控件的总数 Components TCompont* 目前Form上指向 所有控件的数组 目前Form上指向 所有控件的数组 ControlCount Int 目前Form上某一子 区域上各类控件的总数 Controls TControl* 目前Form上指向某一子 区域上所有控件的数组 Form1的ComponentCount=6, 而Panel1的ControlCount=4.， 其中：数组对象 Components[0] Panel1 Components[1] Label1 Components[2] Edit1 Components[3] Label2 Components[4] Edit2 Components[5] Button1 数 组 对 象 Controls[0] Label1 Controls[1] Edit1 Controls[2] Label2 Controls[3] Edit2 下面这段代码完成了对Panel1上所有TEdit 控件的遍历初始化。读者稍加修改，即可对其它控件进行遍历。这里有一个小技巧， 我们把需要进行初始化的控件放置在了一Panel1上，与不需要初始化的控件区分开 来，这样便于编程。 AnsiString namestring="TEdit"; for(int i=1;i< Panel1- > ControlCount;i++) { if(Panel1- > Controls[i]- > ClassNameIs(namestring)) { TEdit *p=dynamic_cast < TEdit* > (Panel1- >Controls[i]); P- >Text=""; } } 四、不规则窗口 1.在窗口定义中,加入HRGN hWndRgn; 2.在TForm::OnCreate()消息函数最后,加入下面的代码: hWndRgn=::CreateEllipticRgn(0,0,Width,Height); ::SetWindowRgn(hWndRgn,TRUE); 3.设置TForm的属性为无标题，无边框。 4.编译连接应用程序,就可以看到一个椭圆形窗口。 五、MDI Form 1.Application->CreateForm(__classid(Tjjcginput), &jjcginput); 后不用在使用显示Form的语句就可以显示出来了。 2.form 的onclose 事件必须用下面语句释放空间： void __fastcall TMDIChild::FormClose(TObject *Sender, TCloseAction &Action) { Action = caFree; }