procedure OpenForm(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;
这个调用过程的作用是打开一个窗体,但是我不知道每句的意思,请高手每句每句分析,谢谢!分不够可以加
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;
这个调用过程的作用是打开一个窗体,但是我不知道每句的意思,请高手每句每句分析,谢谢!分不够可以加
//打开formclass所指定类型的窗口,并且只允许该窗口类型存在一个实例。
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do//遍历所有已经代开了的窗口。
if Screen.Forms[i].ClassType = FormClass then begin//如果该窗口的类型(formclass)和需要打开的窗口类型相同,则认为这个窗口已经实例化了,只要将这个已有的窗口显示出来就可以了,以下是现实代码。
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;