Delphi中实现MDI子窗体(转)

时间:2022-05-21 08:22:05

用MDI实现浏览子窗口,具有窗口打点成果,同屏不雅观看多个网页的内容 
  ① 多文档窗体(MDI) 
MDI窗体是一种具有主子布局的窗体体系,微软的Word等于此中的一个范例例子。MDI体系中至少需要两种窗体,只能将此中之一设置为主窗体,其余窗体全部则全部为子窗体,主窗体卖力子窗体的打点、切换等事情。自然,子窗体上承载的内容可各不不异。Tidy浏览器最终实现了三种差此外窗体:主窗体、浏览子窗体、源代码子窗体。 
  ② 设置窗体类型 
  我们通过窗体的FormStyle属性设置窗体类型,它是一个枚举类型,可取的值包孕:fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop。分袂对应:普通窗体, MDI子窗体,MDI主窗体, 普通顶部窗体。 
  值得注意的是,窗体的FormStyle属性应在设计期确定,运行期间变动是不成取的。 
  ③ 子窗体的创建 
  一般而言,主窗体在应用措施启动时自动创建,子窗体凡是在响应用户的有关行动之后才创建。并且,同一类子窗体实例可以多次被创建。为了制止措施启动时即创建子窗体,可通过C++Builder的集成环境IDE上的菜单Project\Options上的Form标签页,将所有子窗体从Auto-create forms窗口中,移至Available forms窗口。 
  ④ 子窗体的* 
  MDI窗体技术中另一个值得注意的问题是,用户点击MDI子窗体的*按钮企图*子窗体,系统默认的行动倒是将其最小化。为了真正的实现*子窗体并释放所占用的内存,可在OnClose事件中将引用参数Action设置为caFree。Action的其他可取值为:caNone,caHide,caMinimize,分袂对应无行动、隐藏、最小化。 
  ⑤ 主窗体的重要属性的使用 
  ActiveMDIChild属性,指向当前勾当的子窗体。此乃TForm *类型的指针,须要时可强制转换为任意类型的子窗体实例。 
  MDIChildCount属性,用于判断已经创建的子窗体的总数。 
  MDIChildren属性,是一个TForm *类型的指针数组,指向目前存在的所有的子窗体。结合MDIChildCount属性,可以实现子窗体的遍历。 
  ⑥ 子窗体之间的切换 
  直接引用主窗体的要领Previous()、Next(),,可以实现子窗体的前、后切换。 
  ⑦ 子窗体的构造 
  直接引用主窗体的要领Tile()、Cascade(),可以实现子窗体的平铺、层叠构造。


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

delphi中判断子窗体是否打开 (2008-10-07 15:21:52)
标签:it 分类:DELPHI措施设计
今天在一个措施中,需要判断子窗体是否打开,写了这段代码共享出来


在一个MDI窗体中限制打开多个子窗体,给与遍历的方法判断子窗体是否已经存在:

procedure Tf_Main.btnUpdateClick(Sender: TObject);
var
i:Integer;
begin
for i :=0 to f_main.MDIChildCount -1 do //MDIChildCount:总的子窗体个数
if (f_main.MDIChildren[i] is Tf_Pass) then //判断子窗体是否存在
begin
self.MDIChildren[i].BringToFront; //把窗体放在最前面
MDIChildren[i].SetFocus; //窗体获得焦点
Exit; //退出函数体

end;

//创建新窗体
Application.CreateForm(Tf_Pass,f_Pass);
f_Pass.Show;
end;


允许单击*按钮时*子窗体:

procedure Tf_Pass.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
f_Pass := nil;
end;