2014-09-19 5 views
2

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

  • правильно тематические как TButton (имеет замирание/проявки влияние на наведении мыши в Windows 7 и выше)
  • поддерживает глифы как TBitBtn но Без использования ImageLists (так же, как TBitBtn).

Если такого компонента нет, можно ли было бы модифицировать тематическое поведение TBitBtn для тиражирования TButton? Я не хозяин тематики, но, может быть, вы могли бы получить различные фазы постепенного исчезновения из ThemeServices? Или вам нужно было бы создать эффект выцветания самостоятельно, исходя из жаркого и не горячего состояния?

+2

Что случилось с списками изображений? Лично я нахожу 'TBitBtn' как нечто, что нужно было давно удалить из Delphi (и [' Я не одинок'] (http://stackoverflow.com/a/4629905/960757)). Почему вы предпочитаете «TBitBtn»? – TLama

ответ

5

Причина, по которой VCL TButton реализует поддержку изображений с использованием списков изображений, заключается в том, что основной элемент управления Win32 BUTTON поддерживает изображения. Если вы хотите иметь полную поддержку темы с анимацией fade-in/fade-out, вам нужно использовать собственный элемент управления. Ну, вы могли бы попытаться воспроизвести эти эффекты самостоятельно, но я думаю, что шансы на успех низки, и вы всегда будете подвержены будущим изменениям в теме. Это то, что вас кусает TBitBtn.

Итак, способ решить вашу проблему - использовать элемент управления TButton с изображением. Реализация TButton использует личный список изображений в любом случае, поскольку индексы, необходимые базовому элементу управления, являются фиксированными. Таким образом, элемент управления TButton все равно копирует ваши изображения. Таким образом, вы можете легко написать свой собственный кнопочный элемент управления на основе TButton или одного из его предков, который предоставляет свойство глифа. А затем перетащил этот глиф в список изображений, а затем в базовый элемент управления Win32.

Если у вас есть версия Delphi, которая не поддерживает свойства ImageList и ImageIndex, вам необходимо реализовать свой собственный кнопочный элемент управления, который обертывает элемент управления Win32 BUTTON.