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