2011-12-27 91 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

相關問題