Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make my Deskband's (Taskbar Toolbar) Form transparent

I'm working on a Windows Deskband in Delphi XE2 for Windows XP, Vista and 7 (Win32 and Win64)...

I've implemented all the necessary interfaces (ITrayDeskBand, IDeskBandInfo, IDeskBand2, IDeskBand) in my code, and that all works exactly as it should (there are no warnings on Vista/7 complaining about compatibility as others have experienced).

The problem I have is that my Deskband Form appears with a non-transparent band. Also, only certain Controls are displaying (in this case TBitBtn and TImage containing a PNG). I need it to display TEdit and TComboBox objects properly too, but they won't appear at all.

I've tried enabling GlassFrame and SheetOfGlass properties on my Form, but this doesn't help one bit.

Furthermore, the Form itself is exceeding the top boundary of the Taskbar, meaning you cannot (for example) resize the Taskbar if the cursor is in-line with the top of the Taskbar immediately above my Deskband.

I believe there is something Delphi's VCL TForm type is doing behind the scenes which renders the TForm type incompatible as a Deskband container... but this is just a suspicion.

Here's a screenshot illustrating the various problems:

enter image description here

As you can see (above), the Deskband's Form is pale (instead of Transparent), it overlaps the top of the Taskbar (preventing resizing and Autohide triggering when the Taskbar is "hidden")

Any ideas?

UPDATE 1 Okay, I have been playing around and noticed that a totally different behaviour is observed when creating a TToolBar control to be used for the Deskband, rather than a form:

enter image description here

Notice there are three TToolButton controls (with their text virtually invisible due to the Glass theme)? There should also be a TEdit and TComboBox between two separators, but these refuse to display at all.

Also notice the artefacting (the repetition of actual Taskbar Icons)?

I'm not sure if this is a step in the right direction or not, but it might help you (or others) to deduce a solution!

like image 297
LaKraven Avatar asked Dec 27 '11 15:12

LaKraven


1 Answers

Okay... I've finally figured this out, and it is the most absurd thing I've ever come across.

I'm posting my findings here for the benefit of others (to save you going through the nuisance I've just been through).

To get all of the controls on your Deskband Form to display and function properly, simply set the Visible property of your Form (in the IDE designer) to True.

Ridiculous, I know, but it works and is easily repeatable.

like image 79
LaKraven Avatar answered Sep 30 '22 19:09

LaKraven