2011-12-27 110 views
11

我工作在Windows Deskband在Delphi XE2适用于Windows XP,Vista和Windows 7(Win32和Win64的)...如何使我的Deskband的(任务栏上的工具栏)形式透明

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

我遇到的问题是我的Deskband表格出现了一个不透明的乐队。此外,只显示某些控件(在本例中为TBitBtn和包含PNG的TImage)。我需要它正确显示TEdit和TComboBox对象,但它们不会出现。

我试过在窗体上启用GlassFrameSheetOfGlass属性,但这并没有帮助。

此外,窗体本身超出了任务栏的顶部边界,这意味着如果光标与我的Deskband正上方的任务栏顶部一致,则无法(例如)调整任务栏的大小。

我相信有些东西是Delphi的VCL TForm类型在后台渲染的TForm类型不兼容的Deskband容器......但这只是一个怀疑。

这里的说明的各种问题的屏幕截图:

enter image description here

正如你可以看到(见上文),所述Deskband的表格是苍白(而不是透明的),它重叠任务栏的顶部(防止调整并在任务栏“隐藏”时自动触发)

任何想法?

更新1 好吧,我一直在玩周围,发现,创造一个TToolBar控制在一个完全不同的行为被观测到用于Deskband,而不是一种形式:

enter image description here

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

还注意artefacting(重复实际的任务栏图标)?

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

+0

你试过摆弄窗体的'AlphaBlend'属性吗? – Pateman 2011-12-27 16:09:25

+0

是......绝对无济于事!它似乎是唯一的财产,使任何区别是GlassFrame/SheetOfGlass ...但只让我到图中显示的点! – LaKraven 2011-12-27 16:13:16

+0

您是否尝试过将'GlassFrame'与'AlphaBlend'结合起来? :) – Pateman 2011-12-27 16:22:40

回答

14

好的...我已经终于想通了,这是我见过的最荒唐的事情。

我在这里发布我的发现为他人的利益(为了节省你经历我刚才经历的讨厌)。

为了得到控制所有您Deskband表上显示并正常运行,只需设置窗体的Visible属性(在IDE设计师)到True

可笑,我知道,但它的工作原理,很容易重复。

+0

默认情况下是否为假? – 2011-12-27 22:25:20

+0

是的......至少在XE2中,VCL TForm的'Visible'属性默认为'False' – LaKraven 2011-12-27 22:56:55

+0

LOOOL !!这对于“跆拳道”的发现来说真的很棒! – ComputerSaysNo 2011-12-28 03:48:07