TMainMenu太恶心了

dong163 2002-02-28 12:18:21
那个像Delphi、IE、Word中那种可以拖动的菜单是什么组件?我用TActionMainMenuBar试了试,很难用,并且我想要做成做Delphi那样含有Image的可以拖动菜单。因为TMainMenu太恶心了,放到窗体上怎么看都特别扭。
...全文
252 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hamzsy 2002-02-28
  • 打赏
  • 举报
回复
帮你UP
dong163 2002-02-28
  • 打赏
  • 举报
回复
up
dong163 2002-02-28
  • 打赏
  • 举报
回复
up
stiwin 2002-02-28
  • 打赏
  • 举报
回复
coolbar可以拖动;
在www.dephibox.com只有FlatMenu
memuxp.zip下载
zzz2 2002-02-28
  • 打赏
  • 举报
回复
TMainMenu太恶心了?不至于吧!
“下拉菜单”是上世纪计算机界面的最大发明之一。
sm2002 2002-02-28
  • 打赏
  • 举报
回复
你所说的大概是工具栏制作,这里提供你用ToolBar制作工具栏的方式,
还可以用TControlBar 、TCoolBar制作工具栏的方法,更爽。
不过只允许我放这点字符,只能割爱了。
全部文字都选至本人的著书,绝无D版。
其中插图无法在这显示,请谅解。

7.2.2 使用工具栏组件
Delphi提供了新的工具栏(ToolBar)组件,位于组件板的[Win32]选项卡上,可用来直接创建工具栏。
用工具栏组件设计工具栏非常容易,下面我们仍利用上面的例程来进行说明,用工具栏组件进行设计。
1.打开应用程序
启动Delphi,从[File]菜单中选取[Reopen]命令或[Open Project]命令,打开应用文件Project5_2。此时,应用程序将打开例程5-2窗体,修改Form1的Caption属性为“工具栏设计”。
2.往窗体中添加一个ToolBar组件——ToolBar1。
如果要求工具栏上按钮是平的,只有当鼠标停驻在按钮上才凸显,可将ToolBar1的Flat属性设置为True。
如果要求工具栏显示边界,可根据需要将EdgeBorders属性的四个子属性ebLeft(左边界)、ebTop(上边界)、ebRight(右边界)、ebBottom(底边界)设置为True。
3.工具栏上添加快捷按钮(不是快捷按钮组件)。
右击工具栏组件,打开一快捷菜单,如图7-3所示。如果要添加按钮,选择[New Button]命令;如果要添加分隔条,选择[New Separator]命令。

图7-3 工具栏组件快捷菜单
这里,我们往工具栏上添加了七个按钮和三条分隔条,见表7-5:
表7-5 工具栏上ToolButton的属性
按钮Name 作用 Hint Style Grouped
ToolButton1 [颜色] 颜色 tbsButton False
ToolButton2 分隔条
ToolButton3 [加粗] 加粗 tbsCheck False
ToolButton4 [倾斜] 倾斜 tbsCheck False
ToolButton5 [下划线] 下划线 tbsCheck False
ToolButton6 分隔条
ToolButton7 [左对齐] 左对齐 tbsCheck True
ToolButton8 [居中] 居中 tbsCheck True
ToolButton9 [右对齐] 右对齐 tbsCheck True
ToolButton10 分隔条
4.设置工具栏上按钮的属性。
工具栏上添加的按钮属于TToolButton类型,可用对象查看器来设置属性。
①Style属性
TToolButton对象有一个基本属性——Style属性,该属性提供了以下属性值:
·tbsButton:表示标准按钮。
·tbsCheck:表示具有复选功能或单选功能的按钮。
如果该按钮不与其他按钮编组,则具有复选功能;
如果与其他按钮一起编组,则具有单选功能。
·tbsDevider:表示一条竖线型分隔条。
·tbsDropDown:表示凹陷式按钮,但需要使用其他组件进行支持。
·tbsSeparator:表示空格型分隔条。
②Grouped属性
要使一组按钮具有单选功能,通常要给工具栏上相邻按钮分组,将组中每个TToolButton按钮的Grouped属性设置为True,这些按钮必须是相邻的。按钮分组时,如果遇到一个按钮的Grouped属性不是True,或其Style属性不是tbsCheck,或添加了一个分隔条,则分组自动结束。
③MenuItem属性
要使工具栏上按钮与相应的菜单命令对应,请在MenuItem属性中选择相应的菜单命令名称(Name属性)。但是设置MenuItem属性后,按钮将不再保留位图。
④Hint属性
各工具栏上按钮的功能提示。要在程序运行时能显示按钮的功能提示,还得将窗体Form1的ShowHint属性和工具栏ToolBar1的ShowHint属性设置为True。
这里,我们将ToolButton2—ToolButton7的Style属性设置为tbsCheck。将ToolButton5—ToolButton7的Grouped属性设置为True。同时,添加相应的功能提示文本。
5.为按钮提供位图。
右击窗体中的ImageList1组件,将打开一个快捷菜单,从中选择[ImageList Editor]命令,打开图像列表编辑器窗口,如图7-4所示。单击[Add]按钮,可增加一幅位图。将工具栏上按钮用到的位图按顺序加载到[Images]列表中,然后单击[OK]按钮返回。

图7-4 图像列表编辑器
提示:如果要加载的位图不是16x16大小,请先设置ImageList1组件的Height属性和Width属性。
再将ToolBar1组件的Images属性设置为ImageList1组件的Name属性——ImageList1。
提示:如果ImageList加载位图的顺序与工具栏上的按钮顺序不一致,请将每一个TToolButton对象的ImageIndex属性设置位图加载的序号。
如果工具栏上按钮在灰显时要用另外的位图图像表示,请再增加一个ImageList组件,加载按钮要用到的位图后,再将ToolBar1组件的DisabledImages属性设置该ImageList组件。
如果工具栏上按钮在鼠标停驻时要用另外的位图图像表示,请再增加一个ImageList组件,加载按钮要用到的位图后,再将ToolBarl组件的HotImages属性设置该ImageList组件。
6.往工具栏中添加其他组件。
工具栏组件是—个容器型组件,也可以添加其他组件。这里往工具栏中添加一个组合框ComboBox1,用于设置字号。其Items为10、12、15、18、21、24共6项,Text属性为10,Width属性为50。
7.链接工具栏按钮和菜单命令的OnClick事件。
同上一节一样,可以将工具栏上各按钮的OnClick事件与相应的菜单命令的OnClick事件链接起来,以便按钮与相应菜单命令具有相同的功能。
工具栏各按钮的OnClick事件选定的响应过程为:[颜色]按钮ToolButton1—Button1Click、[左对齐]按钮ToolButton7——OptionAlignLeftClick、ToolButton8—OptionAlignCenterClick、ToolButton9——OptionAlignRightClick。
8.编写事件响应代码
同上一节一样,我们所添加的[加粗]、[倾斜]、[下划线]按钮和[字号]组合框,没有原菜单命令项,所以必须独立编写事件。
[加粗]按钮事件代码:
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
if ToolButton3.Down then
Memo1.Font.Style:=Memo1.Font.Style+[fsBold]
else
Memo1.Font.Style:=Memo1.Font.Style-[fsBold];
end;
[倾斜]按钮事件代码:
procedure TForm1. ToolButton4Click(Sender: TObject);
begin
if ToolButton4.Down then
Memo1.Font.Style:=Memo1.Font.Style+[fsItalic]
else
Memo1.Font.Style:=Memo1.Font.Style-[fsItalic];
end;
[下划线]按钮事件代码:
procedure TForm1.ToolButton5Click(Sender: TObject);
begin
if ToolButton5.Down then
Memo1.Font.Style:=Memo1.Font.Style+[fsUnderline]
else
Memo1.Font.Style:=Memo1.Font.Style-[fsUnderline];
end;
ComboBoxl组件的OnChange事件响应过程为ComboBox1Change,其代码与上一节相同。
9.保存程序
将单元文件另存为“Unit7_2.pas”,将项目文件另存为“Project7_2.dpr”。
10.编译运行程序
单击工具栏上[Run]按钮即可运行程序。运行后,单击工具栏上[颜色]按钮,可设置文本的背景颜色;单击[加粗]、[倾斜]、[下划线]按钮,可将文本相应地加粗、倾斜和加下划线,由于这一组按钮为复选按钮,因此可综合使用;而单击[左对齐]、[右对齐]、[居中]按钮,则可调整文本的对齐方式,这一组按钮为单选按钮,一次只有一个按钮有效。
另外,将鼠标指向工具栏上的快捷按钮,稍停,将会出现该按钮的功能提示。
这样,例程中的工具栏就改造完毕,编译程序后,将与前面例程的运行效果完全相同。不过,显然工具栏的外观效果要美观得多。图7-5给出了例程的设计效果。

图7-5 用工具栏组件设计工具栏 图7-6 浮动式工具栏
如果要将工具栏设置为浮动式,可将其DockSite属性设置为False,DragKind属性设置为dkDock,DragMode属性设置为dmAutomatic,窗体Form1的DockSite属性设置为True。再给工具栏的OnEnd事件添加响应过程ToolBar1EndDock,其代码如下:
procedure TForm1.ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
ToolBar1.Left:=0;
ToolBar1.Top:=0;
end;
编译程序后,可用鼠标拖动工具栏形成浮动式效果,如图7-6所示。其中浮动窗口名“工具栏”是ToolBarl组件的Caption属性值。
PoolD 2002-02-28
  • 打赏
  • 举报
回复
TCoolBar + TToolBar + TMainMenu
或者
TControlBar + TToolBar + TMainMenu

1. 将form的MainMenu属性设置为空,这样MainMenu就不会显示在form上
2. 将ToolBar放在CoolBar或者ControlBar上
3. 将ToolBar的Flat属性设置为true
4. 在ToolBar上添加ToolButton,将按钮的Grouped属性设置为true
5. 利用ToolButton的MenuItem属性将按钮和菜单关联

腊月三毛 2002-02-28
  • 打赏
  • 举报
回复
CoolBar+TActionMainMenuBar
hamzsy 2002-02-28
  • 打赏
  • 举报
回复
用Toolbar+Controlbar可以的
laofeng 2002-02-28
  • 打赏
  • 举报
回复
使用CONTROLBAR和Toolbar即可!
可以看看我用DELPHI写的游戏!
http://laofeng.y365.com/
fontain 2002-02-28
  • 打赏
  • 举报
回复
再加popupmenu
fontain 2002-02-28
  • 打赏
  • 举报
回复
用coolbar+speedbutton
lazygod 2002-02-28
  • 打赏
  • 举报
回复
问题是ControlBar+ToolBar+MainMenu的组合中:
MainMenu的快捷键都不能用了!
delphiplayer 2002-02-28
  • 打赏
  • 举报
回复
用xpmenu吧

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧