Подтвердить что ты не робот

Как сделать панель Deskbar (панель инструментов панели задач) прозрачной

Я работаю над Windows Deskband в Delphi XE2 для Windows XP, Vista и 7 (Win32 и Win64)...

В моем коде реализованы все необходимые интерфейсы (ITrayDeskBand, IDeskBandInfo, IDeskBand2, IDeskBand), и все работает точно так, как должно было (нет предупреждений о том, что Vista/7 жалуется на совместимость, как это было у других).

Проблема заключается в том, что моя форма Deskband появляется с непрозрачной полосой. Также отображаются только определенные элементы управления (в данном случае TBitBtn и TImage, содержащие PNG). Мне тоже нужно отображать объекты TEdit и TComboBox, но они вообще не появятся.

Я пробовал включить свойства GlassFrame и SheetOfGlass в моей Форме, но это не помогает одному биту.

Кроме того, сама форма превышает верхнюю границу панели задач, что означает, что вы не можете (например) изменить размер панели задач, если курсор находится в строке с верхней частью панели задач сразу над моей Deskband.

Я считаю, что что-то типа Delphi VCL TForm делает за кулисами, что делает тип TForm несовместимым как контейнер Deskband... но это всего лишь подозрение.

Вот скриншот, иллюстрирующий различные проблемы:

enter image description here

Как вы можете видеть (выше), форма Deskband является бледной (вместо прозрачной), она перекрывает верхнюю часть панели задач (предотвращая изменение размера и запуск Autohide, когда панель задач "скрыта" )

Любые идеи?

ОБНОВЛЕНИЕ 1 Хорошо, я играл и замечал, что при создании элемента управления TToolBar, который будет использоваться для Deskband, наблюдается совершенно другое поведение, а не форма:

enter image description here

Обратите внимание, что есть три элемента управления TToolButton (их текст практически невидим из-за темы Glass)? Также должно быть TEdit и TComboBox между двумя разделителями, но они вообще не отображаются.

Также обратите внимание на артефакты (повторение фактических значков панели задач)?

Я не уверен, что это шаг в правильном направлении или нет, но он может помочь вам (или другим) вывести решение!

4b9b3361

Ответ 1

Хорошо... Я наконец понял это, и это самая абсурдная вещь, с которой я когда-либо сталкивался.

Я публикую свои выводы здесь для других (чтобы спасти вас от неприятностей, которые я только что пережил).

Чтобы все элементы управления формы Deskband отображались и функционировали правильно, просто установите для свойства Visible для вашей формы (в дизайнере IDE) значение True.

Смешно, я знаю, но он работает и легко повторяется.