a窗体为 fsMDIForm 
建了很多N个 fsMDIForm子窗体每次建fsMDIForm 子窗体 并把建子窗体name放到一个edit.text 中.
如何通过 edit.text的值 把对应的窗体show 出来

解决方案 »

  1.   

      if not ScanFormOpened(名字) then
        名字:=TfsMDIForm.Create(self); 
      名字.Show;
      

  2.   

    我的办法:
    function TfrmMain.FindForm(AName: string): Boolean;
    var
      i: Integer;
    begin
      Result := False;
    //  Caption := AName; //Debug
      for i := 0 to MDIChildCount - 1 do
      begin
        if MDIChildren[i].Name = AName then
        begin
            SetWindowPos(MDIChildren[i].Handle, HWND_TOP, 0, 0, 0, 0,
              SWP_NOMOVE or SWP_NOSIZE);
          Result := True;
          Break;
        end;
      end;
    end;procedure TfrmMain.act_scExecute(Sender: TObject);
    begin
      if not FindForm('frmCustomer') then OpenFormCustomer(Application);
      {说明:OpenFormCustomer(...)函数是Customer窗体单元中的全局函数,是用于创建该单元窗体的。我的应用程序中所有其他子窗体都不是自动创建的。因此,如果楼主要使用我的方法的话,需要改一下这个地方。}
    end;
      

  3.   

    哦,忘了改代码了,FindForm('frmCustomer') 应改为 FindForm(Edit.Text),不好意思
      

  4.   

    晕,连本人发的回帖都不能修改,那还给出“修改”链接干什么?借用1楼代码,再罗嗦一下:
    procedure TfrmMain.act_scExecute(Sender: TObject);
    begin
      if not FindForm('frmCustomer') then
      begin
        frmN := TfsMDIForm.Create(self);
        frmN.Show;
      end;
    end;