【发布时间】:2011-06-20 22:05:13
【问题描述】:
我想在工具栏图标的关联操作将“已检查”属性设置为 true 时突出显示它们。我想以类似于 Microsoft Office 2003 的方式进行操作,例如请参阅此图像中的粗体和左对齐图标:
图像周围有一个框,背景已更改为橙色。
我如何使用 Delphi 2009 实现这一点?
作为奖励,是否还有一种方法可以对相关项目的菜单中的图标执行相同的操作?例如与标尺和标记条目如下:
跟进:
感谢安德烈亚斯,感谢您对我的问题的简单而正确的回答。作为一名转换为 Delphi 2009 的 Delphi 4 程序员,我对 Delphi 5 到 7 的 VCL 添加不够熟悉,因此 TActionManager、TActionToolbar 及其工作原理不在我的 Delphi 词汇表中。这是基于 Delphi 使用类似于 Microsoft O/S 主题的样式的能力。
但是,根据您的回答以及使用它的一些研究,我确认我不想以这种方式这样做。一个有启发性的 Embarcadero 线程回复:弹出菜单:"Checked" items with icon no longer shown as sunken?,Peter 下面贡献了他的专业知识,让我意识到我根本不想更改为 XP 主题,因为这会对 Vista 和 Windows 7 用户产生影响,带他们回到青铜时代。
真正的罪魁祸首是操作系统主题希望您尊重某些事情。德尔福试图遵守规则。我可以回到 XP、XP 风格/主题和 XP 颜色映射。在这种模式下,选中的项目将被突出显示。这就是我真正想要的——突出显示检查的项目。我以 Office 2003 为例,因为它是我想要的那种亮点。但我真的不想完全改变主题并强制我的程序焕然一新。对于 Vista 和 Windows 7 用户来说,这尤其会使事情看起来不自然。
理想的情况是,如果我可以拥有另一组图像,这些图像将在对象被检查时应用......但没有“CheckedImages”属性。或者,如果选中,则以编程方式或自动修改图像(例如,禁用图像获得其启用图像的灰度版本)。
我仍然不介意听取任何人的意见,如果有任何方法可以实现这个或其他可能同样有效的方法,而不会改变我的程序的整个外观。
【问题讨论】:
-
标准的
TToolbar、TMainMenu和TPopupMenu不是已经这样做了吗?而且它们甚至比您有屏幕截图的那些更好,因为它们以本地方式进行! -
我个人使用 Toolbar2000+SpTBX,比起 TToolbar 和 TActionManager 组件更喜欢它们。
标签: delphi user-interface menu toolbar