分享
 
 
 

[CB]TForm应用技巧

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

一、让窗口总是在最前面

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上指向所有控件的数组

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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有