MainMenu控件:要用ToolBar关联一个MainMenu生成主菜单。但在MainMenu添加了菜单项以后会在窗体顶端自动生成一个菜单,如何才能让菜单不出现在窗体最顶端呢?谢谢! 

解决方案 »

  1.   

    Form1.Menu := '';
    放置MainMenu后,把窗体的Menu屬性清空即可!
      

  2.   

    将MainMenu所在的窗口的 Menu属性设置为空,ToolBar中的ToolButton的MenuItem指向 MainMenu中的某一菜单项。
      

  3.   

    用menubar{*******************************************************}
    {                                                       }
    {  Implements a TToolbar descendant that has a Menu to  }
    {  make IDE like Toolbar menus very easy.  This works   }
    {  only in Delphi 5                                  }
    {                                                       }
    {       Copyright (c) 1995,98 Inprise Corporation       }
    {                                                       }
    {*******************************************************}unit MenuBar;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ToolWin, ComCtrls, Menus;type
      TMenuBar = class(TToolBar)
      private
        FMenu: TMainMenu;
        procedure SetMenu(const Value: TMainMenu);
      protected
        procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
      public
        constructor Create(AOwner: TComponent); override;
      published
        property EdgeBorders default [];
        property Menu: TMainMenu read FMenu write SetMenu;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Samples', [TMenuBar]);
    end;{ TMenuBar }constructor TMenuBar.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      Flat := True;
      ShowCaptions := True;
      EdgeBorders := [];
      ControlStyle := [csCaptureMouse, csClickEvents,
        csDoubleClicks, csMenuEvents, csSetCaption];
    end;procedure TMenuBar.GetChildren(Proc: TGetChildProc; Root: TComponent);
    begin
    end;procedure TMenuBar.SetMenu(const Value: TMainMenu);
    var
      i: Integer;
      Button: TToolButton;
    begin
      if FMenu = Value then exit;
      if Assigned(FMenu) then
        for i := ButtonCount - 1 downto 0 do
          Buttons[i].Free;
      FMenu := Value;
      if not Assigned(FMenu) then exit;
      for i := ButtonCount to FMenu.Items.Count - 1 do
      begin
        Button := TToolButton.Create(Self);
        try
          Button.AutoSize := True;
          Button.Grouped := True;
          Button.Parent := Self;
          Buttons[i].MenuItem := FMenu.Items[i];
        except
          Button.Free;
          raise;
        end;
      end;
      { Copy attributes from each menu item }
      for i := 0 to FMenu.Items.Count - 1 do
        Buttons[i].MenuItem := FMenu.Items[i];
    end;end.