【问题标题】:How to make my Deskband's (Taskbar Toolbar) Form transparent如何使我的桌带(任务栏工具栏)表单透明
【发布时间】:2011-12-27 15:50:01
【问题描述】:

我正在开发用于 Windows XP、Vista 和 7(Win32 和 Win64)的 Delphi XE2 中的 Windows Deskband...

我已经在我的代码中实现了所有必要的接口(ITrayDeskBand、IDeskBandInfo、IDeskBand2、IDeskBand),并且所有接口都完全按照它应该的方式工作(Vista/7 上没有任何警告抱怨其他人经历过的兼容性)。

我遇到的问题是我的桌带表格出现了不透明的带子。此外,仅显示某些控件(在这种情况下,TBitBtn 和 TImage 包含 PNG)。我也需要它来正确显示 TEdit 和 TComboBox 对象,但它们根本不会出现。

我尝试在我的表单上启用GlassFrameSheetOfGlass 属性,但这一点帮助都没有。

此外,表单本身超出了任务栏的顶部边界,这意味着如果光标与我的桌带上方的任务栏顶部对齐,则无法(例如)调整任务栏的大小。

我相信 Delphi 的 VCL TForm 类型在幕后做了一些事情,导致 TForm 类型与 Deskband 容器不兼容......但这只是一个怀疑。

这是一个说明各种问题的屏幕截图:

如您所见(上图),Deskband 的表格是苍白的(而不是透明的),它与任务栏的顶部重叠(防止在任务栏“隐藏”时调整大小和触发自动隐藏)

有什么想法吗?

更新 1 好的,我一直在玩,并注意到在创建用于 Deskband 的 TToolBar 控件而不是表单时观察到了完全不同的行为:

注意到有三个 TToolButton 控件(由于 Glass 主题,它们的文本几乎不可见)?两个分隔符之间还应该有一个TEditTComboBox,但它们根本拒绝显示。

还注意到人工制品(实际任务栏图标的重复)吗?

我不确定这是否是朝着正确方向迈出的一步,但它可能会帮助您(或其他人)推断出解决方案!

【问题讨论】:

  • 你试过摆弄表单的AlphaBlend属性吗?
  • 是的……完全没有用!似乎唯一有区别的属性是 GlassFrame/SheetOfGlass... 但这只会让我明白图片中显示的点!
  • 您是否尝试过将GlassFrameAlphaBlend 结合使用? :)
  • 是的......绝对没有什么区别。

标签: delphi taskbar delphi-xe2 deskband


【解决方案1】:

好的...我终于想通了,这是我遇到过的最荒谬的事情。

我在这里发布我的发现是为了让其他人受益(以免你经历我刚刚经历过的麻烦)。

要让您的 Deskband 表单上的所有控件正常显示和运行,只需将表单的 Visible 属性(在 IDE 设计器中)设置为 True

我知道这很荒谬,但它很有效并且很容易重复。

【讨论】:

  • 是的...至少在 XE2 中,VCL TForm 的 Visible 属性默认为 False
  • LOOOL!这真的是“WTF”好发现的墙!
  • @LaKraven ,即使在 Delphi 7 TForm 的 Visible 属性默认为 False
  • TForm.Visible 默认为 False 自 Delphi 1 以来一直是正确的,并且在大多数情况下都有意义 - 在您准备好 Show 或 @ 之前,您不希望表单可见987654328@。不过,在这种情况下,它显然不能正常工作。您是否像往常一样在 DFM 中使用Application.CreateForm 来设置您的主窗体?。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多