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