我是用主程序调用DLL里的子窗口,但是不知道如何控制相同子窗口被重复打开中,请高手指教呀。具体一点。

解决方案 »

  1.   

    Dll声明唯一的frmChild:TfrmChild;
    调用的时候
    子窗体的调用函数
    if Not assigned(frmChild) then
      frmChild:=TfrmChild.create(Self);
    try
      frmChild.ShowModel;
    finally
      frmChild.free;
      frmChild:=Nil;
    end;
    已经创建的就不会再创建,只能Show出来
      

  2.   

    function CheckMDIForm(MDIForm:TForm;MDIFormName:string):boolean;
    var
      I: integer;
    begin
      Result := False;
      with MDIForm do
      begin
        for I := MDIChildCount-1 downto 0 do
          if lowercase(MDIChildren[I].Name) = lowercase(MDIFormName) then
            Result:=True;
      end;
    end;