Как сделать мою форму Deskband (панель инструментов панели) прозрачной - PullRequest
11 голосов
/ 27 декабря 2011

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

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

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

Я пытался включить свойства GlassFrame и SheetOfGlass в моей форме, но это не помогает ни на шаг.

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

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

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

enter image description here

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

Есть идеи?

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

enter image description here

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

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

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

1 Ответ

14 голосов
/ 27 декабря 2011

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

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

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

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

...