荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: oopilix (优雅的), 信区: Visual
标  题: [zz]TForm
发信站: 荔园晨风BBS站 (Mon Jun  2 18:35:21 2003), 站内信件


一、让窗口总是在最前面
    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;
       }




--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 61.144.235.41]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店