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;
这个调用过程的作用是打开一个窗体,但是我不知道每句的意思,请高手每句每句分析,谢谢!分不够可以加

解决方案 »

  1.   

    procedure OpenForm(FormClass: TFormClass; var fm; AOwner:TComponent);
    //打开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;