您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

TForm的一些技巧

2024/5/24 21:31:57发布42次查看
欢迎进入c/c++编程社区论坛,与300万技术人员互动交流 >>进入 一、让窗口总是在最前面 form 的formstyle属性设置为fsstayontop值。 二、 动态调用窗体form 在缺省情况下, 由file/new form生成添加入项目文件中的 窗体都具有\auto create\(自动创建)的特
欢迎进入c/c++编程社区论坛,与300万技术人员互动交流 >>进入
一、让窗口总是在最前面
    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 controlcount;i++)
     {
     if(panel1- > controls[i]- > classnameis(namestring))
       {
       tedit *p=dynamic_cast (panel1- >controls[i]);
       p->text=\\;
       }
[nextpage]
}
四、不规则窗口
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;
       }
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product