2 helenxd Helenxd 于 2016.01.25 19:58 提问

delphiMDI程序的设计

本人在自学delphi,有一段代码看不懂,求教各位大神解释,越详细越好
procedure OpenChildForm(FormClass: TFormClass; var Fm; AOwner:TComponent);
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms[i].ClassType=FormClass then
begin
Child:=Screen.Forms[i];
if Child.WindowState=wsMinimized then
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA);
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(Fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;

2个回答

caozhy
caozhy   Ds   Rxr 2016.01.25 20:08
已采纳
 procedure OpenChildForm(FormClass: TFormClass; var Fm; AOwner:TComponent); 打开子窗口(窗口类型,父窗口)
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms[i].ClassType=FormClass then //遍历屏幕上所有的窗口,寻找类型和参数传来的一样的
begin
Child:=Screen.Forms[i];
if Child.WindowState=wsMinimized then //如果窗口最小化,那么显示它
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA); //否则隐藏它
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront; //把窗口放入前台
Child.Setfocus; //设置输入焦点
TForm(Fm):=Child;
exit; //退出
end;
Child:=TForm(FormClass.NewInstance); //如果没找到,那么就走不到退出的地方,进入这里
TForm(fm):=Child; //创建新窗口
Child.Create(AOwner);
end;
Helenxd
Helenxd 谢谢!
2 年多之前 回复
lyhoo163
lyhoo163   Rxr 2016.02.13 08:56

一、子窗口要动态创建
二、调用子窗口的代码
if not Assigned(SetSaleFrm) then
begin
SetSaleFrm:=TSetSaleFrm.Create(Self);
SetSaleFrm.WindowState:=MID_WindowState;
end
else SetSaleFrm.BringToFront;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
HPDS2003公路路面设计程序系统
HPDS2003公路路面设计程序系统 东南大学毛世怀很好用的路面计算程序+破解
设计一个魔方(六面)的程序 【微软面试100题 第四十四题】
题目要求:   设计一个魔方(六面)的程序。 题目分析:   把魔方从正面看展开成一个平面,如图1所示。设计一个类,其中Spacexy[SPACE][LEN][LEN];中的SPACE为0~5表示六个面,每个数字代表哪一面见图1.LEN为0~2,[LEN][LEN]表示某个面的3*3的9个格子。   类中的方法是根据展开的平面设计的,具体的某个面的某个格子由Spacexy[
基于单片机的数字时钟设计程序
基于C51单片机的数字时钟设计程序,很使用的一个制作。
机械优化设计程序
1.外推法 2.黄金分割法 3.二次插值法 4.坐标轮换法 5.随机方向法 6.四杆机构优化设计
桥梁设计计算小程序
纯WINDOWS的直观、友好、方便的操作界面,采用了即输即得的编程技术,任何一个输入数据的变化,马上就能看到输出结果的同步变化。所有的计算书采用EXCEL电子表格的格式存储,便于粘贴到ACAD文件中打印输出,省去在ACAD中又做表格又输数据的麻烦。 大量采用了即指即现的帮助系统,当你对某个输入或输出的数据含义有疑问时,只要把鼠标移到输入框或命令钮上,它就会出现相应的帮助,同时配置了必要的示意图,图文并茂,数据输入一目了然。程序中应用了必要的错误处理机制,再也不会发生因为输入数据的不完整或错误而退出整个应用程序的悲剧,最大限度地保障数据的安全性。
Effective C++ 改善程序与设计的55个具体做法 读书笔记
Effective C++ 改善程序与设计的55个具体做法 读书笔记
《顺序结构的程序设计》教学设计
(一)教材分析   教育科学出版社《算法与程序设计》(选修)模块第二章第三节《程序的基本结构》一共三课,本课选用的是第一小节《顺序结构》。众所周知,无论多么复杂的程序都可以分解为顺序、选择、循环这三种基本结构,因此本节内容的学习效果将影响后续章节的程序编写效率。     (二
传动轴校核分析设计(小程序)
输入基本参数,即可校核传动轴基本强度,通过程序化剪掉计算!非常好用的!还有悬架设计用的程序
中断分析以及程序设计
在设计涉及到外中断的时候,比如按键中断就要研究一下怎么编了:这里对EINT4567研究:首先ARM芯片要中断设置要是能中断向量,然后当有IRQ中断来之后,CPU自动的到0x18地址处取指。0x18处的指令呢是CPU根据中断源算好的(比如:中断EINT4567来了,那么0x18处的指令就是跳转到地址0x30处)。然后就执行“ldr pc,=HandlerEINT4567”这条指令。这条指令的
java设计一个按优先数调度算法实现处理器调度的程序。
java 优先数调度 处理器调度 java设计一个按优先数调度算法实现处理器调度的程序。