TBitBtn отображается только с использованием устаревшей темы Windows

Я создал файл манифеста для своего приложения Delphi 6, чтобы он мог отображать элементы управления в соответствии с темой, определенной в Windows (элементы управления 6.0). Все выглядит хорошо, кроме TBitBtn компонент, который отображается с использованием устаревшей темы:

Legacy TBitBtn

Поведение в Windows XP и Windows 7 одинаково, независимо от текущей темы, даже если изображение не назначено TBitBtn составная часть.

Теперь, когда я ставлю обычный TButton компонент на форме, он отображает ОК. Если я затем программно установить изображение для этой кнопки во время выполнения (используя SendMessage(Handle, BM_SETIMAGE, IMAGE_ICON, LPARAM(Icon))), он немедленно возвращает свой стиль к старому.

Есть ли способ сделать TBitBtn использовать правильный стиль, или для отображения глифа на регулярной TButton не возвращаясь к старому в Delphi 6?

1 ответ

Решение

В Delphi 6 недостаточно просто добавить манифест comctl32 v6. Вы также должны изменить VCL, чтобы быть в курсе темы. TBitBtn control - это реализованный на VCL элемент управления, который в своем воплощении Delphi 6 ничего не знает о темах XP.

Стандартный способ справиться с этим - добавить стороннее программное обеспечение, которое выполняет магию. Это менеджер тем XP от Майка Лишке.

Вот скриншот из приложения Delphi 6, в которое входит менеджер тем:

Другие вопросы по тегам