我正在为 Windows XP、Vista 和 7 (Win32 和 Win64) 使用 Delphi XE2 开发一个桌面工具栏(Deskband)...
我在代码中实现了所有必要的接口(ITrayDeskBand、IDeskBandInfo、IDeskBand2、IDeskBand),它们都按照预期工作(与其他人遇到的兼容性警告不同,Windows Vista/7 没有抱怨)。
问题在于我的 Deskband 窗体显示为非透明窗口。此外,只有特定的控件会显示(在这种情况下是 TBitBtn 和包含 PNG 的 TImage)。我也需要 TEdit 和 TComboBox 对象正常显示,但它们根本不会出现。
我尝试在我的窗体上启用 GlassFrame 和 SheetOfGlass 属性,但这并没有任何帮助。
此外,窗体本身超出了任务栏的顶部边界,这意味着如果光标与我 Deskband 正上方的任务栏顶部对齐,则无法调整任务栏的大小。
我相信 Delphi 的 VCL TForm 类型正在幕后执行一些操作,这导致 TForm 类型不兼容作为 Deskband 容器...但这只是一种猜测。
以下是说明各种问题的屏幕截图:
如上图所示,Deskband 窗体很浅(而不是透明),它重叠在任务栏的顶部(防止调整大小并触发“自动隐藏”功能,当任务栏被“隐藏”时)。
有什么想法吗?
更新 1 好吧,我已经尝试了一些方法,并注意到当创建一个 TToolBar 控件用于 Deskband 时,会出现完全不同的行为:
请注意有三个TToolButton
控件(由于玻璃主题,它们的文本几乎不可见)?还应该有一个TEdit
和TComboBox
在两个分隔符之间,但它们拒绝显示。
同时注意到图标的重复现象(实际任务栏图标的重复)?
我不确定这是否是正确的方向,但它可能会帮助你(或其他人)推断出解决方案!
AlphaBlend
属性了吗? - PatemanGlassFrame
和AlphaBlend
结合起来使用吗? :) - Pateman