⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 58.htm

📁 C++Builder教学大全
💻 HTM
字号:


<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>TForm</title>

</head>

<div><center>

<table border="0" width="640">

  <tr><td align="center"><b>TForm</b></td></tr>

  <tr><td align="center"><font color="#CC9933"></font></td></tr>

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

</table></center></div> 

</html> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -