如何使用Delphi实现突出显示的工具栏图标?

lke*_*ler 5 delphi user-interface menu toolbar

当他们的相关操作将其"checked"属性设置为true时,我想突出显示我的工具栏图标.我想以类似于Microsoft Office 2003的方式执行此操作,例如,请参阅此图像中的Bold和Align Left图标:

工具栏示例

图像用围绕它的框绘制,背景已变为橙色.

我怎么能用Delphi 2009实现这个呢?

作为奖励,还有一种方法可以使用相关项目的菜单中的图标做同样的事情吗?例如,如下所示,标尺和标记条目:

菜单示例


跟进:

谢谢Andreas,我的问题是一个简单而正确的答案.作为Delphi 4程序员转换为Delphi 2009,我对Delphi 5到7的VCL添加不太熟悉,因此TActionManager,TActionToolbar及其工作不在我的Delphi词汇表中.这是基于Delphi使用类似于Microsoft O/S主题的风格的能力.

但是,通过你的回答和使用它的一些研究,我确认我不想以这种方式做到这一点.一个有启发性的Embarcadero线程:弹出菜单:带有图标的"已检查"项目不再显示为凹陷?与Peter Under贡献他的专业知识,让我意识到我根本不想改变XP主题,因为那将为Vista和Windows 7用户做一些事情,让他们回到青铜器时代.

这里真正的罪魁祸首是O/S主题要求您尊重某些事物.德尔福试图遵守规则.我可以回到XP,XP风格/主题和XP Color Map.在此模式下,已检查的项目将被点亮.这就是我想要的 - 突出显示已检查的项目.我以Office 2003为例,因为它是我想要的那种高光.但我真的不想完全改变主题并强迫我的程序焕然一新.对于Vista和Windows 7用户来说,这会让事情看起来不自然.

什么是理想的是如果我可以有另一组图像,当对象被检查时将适用...但没有"CheckedImages"属性.或者,如果选中,则以编程方式或自动修改图像的方式(例如,禁用图像获得其启用图像的灰度版本).

我仍然不介意听到任何人,如果有任何方法可以实现这个或其他可能同样有效的方法,而不改变我的程序的整个外观.

And*_*and 13

添加TActionManager到表单,并创建一些操作(例如,粗体,斜体和下划线).确保AutoCheck为每个操作将属性设置为true.然后添加一个TActionToolbar.双击动作管理器,然后将三个动作拖动到工具栏.现在添加一个TXPColorMap表单,并将其分配给操作管理器.还添加一个TImageList并添加粗体,斜体和下划线(从C:\Program Files (x86)\Common Files\CodeGear Shared\Images\GlyFX\Icons\BMP\16x16)的图标.将图像列表分配给操作管理器.

将工具栏图标设置为仅显示字形而不显示标题.最后,将ActionManager的Style属性设置为XP Style.最终的结果就是你所寻求的.

工具栏示例http://privat.rejbrand.se/toolbar.png


And*_*and 2

也可以用普通的TToolBar,用DrawingStyleset to dsGradient,我刚发现。

使用 dsGradient 作为 DrawingStyle 的示例工具栏