在Delphi5中如何将menu做到工具条上?(100分)


{*******************************************************}
{ }
{ Implements a TToolbar descendant that has a Menu to }
{ make IDE like Toolbar menus very easy. This works }
{ only in Delphi 4.0 }
{ }
{ Copyright (c) 1995,98 Inprise Corporation }
{ }
{*******************************************************}
unit MenuBar;
interface
uses
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;
implementation
procedure 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 - 1do
wnto 0do
Buttons.Free;
FMenu := Value;
if not Assigned(FMenu) then
exit;
for i := ButtonCount to FMenu.Items.Count - 1do
begin
Button := TToolButton.Create(Self);
try
Button.AutoSize := True;
Button.Grouped := True;
Button.Parent := Self;
Buttons.MenuItem := FMenu.Items;
except
Button.Free;
raise;
end;
end;
{ Copy attributes from each menu item }
for i := 0 to FMenu.Items.Count - 1do
Buttons.MenuItem := FMenu.Items;
end;

end.
 
ToolBar按钮有一个菜单属性,将其置为标题菜单项即可。另外ToolBar和ToolButotn的
AutoSize属性一定要为ture,
 

给你做了一个例子(一句代码都不用写)
请查收。
 
好象ToolBar 的botton有dropdown属性,就这个东西可以连接popmenu
 
不是dropdown,是menuitem,好要注意设定grouped和allowallup
 
Delphi 的demo中有一个例子docking
 
试试ABC for Delphi5吧。
http://www.net-wing.net/kangwei
 
呵呵,友人推荐ABC,俺推荐TB97,呵呵
 
1、好像用不着其它控件。
2、在ToolButton的style为tbsButton时,DropMenu和MenuItem做出的效果是一样
的,区别是:
DropMenu是指定一个PopupMenu,ToolButton的Caption要自己设,每个按钮需
要一个PopupMenu;
MenuItem指定的是PopupMenu的一个菜单项,此时,ToolButton的Caption自动
变成该菜单项的Caption,该菜单项的子菜单形式上就成了ToolButton的
DropMenu。用这种方法,所有的菜单可以做在一个PopupMenu中。
3、ToolButton的style为tbsDropDown时,区别同上,不过ToolButton旁边多了个
下箭头,就像Windows98资源管理器中的“查看”按钮一样。
 
e-mail给你一个demo
 
接受答案了.
 
顶部