手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

TForm的一些技巧

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
一、让窗口总是在最前面
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;
}




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS