我的问题是:在设计MDI子窗口的,打开同一个窗体,并且只能打开一次。再一次打开的时候,不会新建第二张于此相同的窗体。比如打开一个“采购订单”表单后,再一次打开这个表单的后,当前窗体上不会出现两个相同的表单。
请问各位大哥,如何办到呀?谢谢!

解决方案 »

  1.   

    设mdi子窗体名为:mdi1:Tmdi1procedure Tmainform.openMDIClick(Sender: TObject);
    var
    li_loop:integer;
    lbl_falg:boolean;  //窗口是否打开的标志
    begin
    lbl_falg:=false;
    //判断要打开的子窗体中是否已经打开
    for  li_loop:=0 to self.MDIChildCount-1 do
      begin
      if self.MDIChildren[li_loop] is Tmdi1 then
        begin
        lbl_falg:=true;    //判断出窗口已打开
        end
      end;   if lbl_falg then  //如果子窗体已打开,则将它激活
          begin
          mdi1.Show;//激活
          if mdi1.WindowState=wsMinimized then
          ShowWindow(mdi1.Handle,SW_SHOWNORMAL);//如果是最小化就显示为正常
          end
       else              // 如果子窗体未打开,则创建它
          begin
          mdi1:=Tmdi1.Create(Self);
          mdi1.Show;
          end;
    end;这就是我平时用的,绝对可以解决你的问题