如何在打開Mdi窗口時主窗體的MainMeun增加一個菜單按扭主窗體的MainMenu有XXXX XXXXX Windows
XXXX XXXX  
XXXX XXX
XXXX XXXX
在Windows的MenuItem下 增加一個以MDI窗體的名的MenuItem
點擊相關MenuItem 關聯的MDI窗體會顯示到最前面請高手指教!!!!

解决方案 »

  1.   

    //TForm1  MDI主窗体类
    //TForm2  MDI子窗体类procedure TForm1.mFormClick(Sender: TObject);
    var
      FormName : string;
    begin
      FormName := TMenuItem(Sender).Caption;
      TForm2(Form1.FindComponent(FormName)).Show;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      M : TMenuItem;
    begin
      MainMenu1.AutoHotkeys := maManual;
      with TForm2.Create(self) do
        begin
        M := TMenuItem.Create(self);
        M.Caption := Name;
        M.OnClick := mFormClick;
        MainMenu1.Items[2].Add(M);
        Show;
        end;
    end;
      

  2.   

    忘了告訴你
    你每一個窗體都可以打開多個的我可以用TForm2.handle來顯示該窗體嗎?因為我每個窗體都有個Create方法
    初始化所有參數後就加一句 showWindow(Form2.handle,SW_RESTORE);
      

  3.   

    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);
      Child.Show;
    end;
      

  4.   

    function TMainFrame.EditMenu(sCaption:String;isNew:Boolean):Boolean;
    var
      M : TMenuItem;
    begin
      MainMenu1.AutoHotkeys := maManual;
      if isNew then
      begin
      M := TMenuItem.Create(self);
      M.Caption := sCaption;
      M.OnClick := WindowItemClick;
      MainMenu1.Items[2].Add(M);
      end
      else
      begin
        M := MainMenu1.Items[2].Find(sCaption);    if M <> nil then
        begin
          MainMenu1.Items[2].Delete(MainMenu1.Items[2].IndexOf(M));
        end;
      //  MainMenu1.Items[2].Delete();
      end;
      show;
    end;我在主窗體寫了這個方法
    怎樣在MDI窗體創建時調用這個方法 給出窗體的Caption和New就在WINDOW建一個按扭因為我在主窗體uses了每一個MDI窗體我在MDI窗體就提示我Circular unit reterence to 'MainWindow'
      

  5.   

    不好意思最後一句話可能打得有問題實例  主窗體 MainWindow   MDI窗體 Form1
    我在MainWindow 已經引用了Form1的單元
    如  uses XXXX,XXXXXXX,Unit1,XXX;我想每個MDI窗體在創建和關閉時都調用MainWindow的方法應該怎樣做呢?