Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Приделать свойство Flat обычной кнопке Button


Автор: Нитонисе 4.4.2013, 21:52
Есть кнопки Button, на них можно отображать картинки *.ico, но нет свойства Flat. Есть кнопки SpeedButton, у них есть свойство Flat, но картинки только в формате *.bmp. У меня есть набор иконок для кнопок в формате *.ico, если их конвертировать в *.bmp - теряется качество. Поэтому хочу использовать их в родном формате, но и хочу свойство Flat кнопкам. Можно ли как-то прикрутить свойство Flat к Button, или возможность отображения форматов *.ico к SpeedButton?

Автор: artsb 4.4.2013, 22:35
Есть такой стиль - http://msdn.microsoft.com/en-us/library/windows/desktop/bb775951(v=vs.85).aspx.
Вот ещё http://stackoverflow.com/questions/6295720/how-to-create-a-flat-button-in-winapi-with-visual-style.
Ну и ничего не мешает изобрести свой велосипед smile

Автор: Нитонисе 4.4.2013, 23:01
Тулбар с одной кнопкой это интересно smile А как использовать свойство BS_FLAT?

Автор: artsb 4.4.2013, 23:50
Цитата(Нитонисе @  4.4.2013,  23:01 Найти цитируемый пост)
А как использовать свойство BS_FLAT? 

http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633591%28v=vs.85%29.aspx + GWL_STYLE.
Например, в конструкторе формы:
Код

SetWindowLong( Button1->Handle, GWL_STYLE, GetWindowLong( Button1->Handle, GWL_STYLE ) | BS_FLAT );

Автор: _Dimon_ 6.4.2013, 00:45
Нитонисе, а в каком билдере работаешь? 

Если > 2009 то можно использовать *.png (думаю при конвертации качество картинки не потеряешь)
 
И TImageList никто не отменял, он поддерживает *.ico, а к TSpeedButton можно прикрутить TImageList

Автор: Нитонисе 6.4.2013, 22:37
artsb, ваш код задания стиля кнопок BS_FLAT не срабатывает.


Цитата(_Dimon_ @  6.4.2013,  00:45 Найти цитируемый пост)
Нитонисе, а в каком билдере работаешь? 
У меня Builder XE, но SpeedButton в свойстве Glyph хочет изображение с расширением *.bmp. И TImageList к этим кнопкам не прикручивается. По крайней мере стандартными средствами. 

Автор: Avazart 6.4.2013, 23:13
Код

Button1->Style= bsCommandLink;

Не подойдет ?

Автор: Нитонисе 7.4.2013, 00:18
Цитата(Avazart @  6.4.2013,  23:13 Найти цитируемый пост)
Не подойдет ?

Хм, может быть и подойдет. Что-то я раньше не видел, что у кнопок есть стиль. Есть правда один недостаток - положение картинки фиксировано, всегда слева. Но впринципе можно ширину кнопки такую подобрать, чтобы картинка находилась посередине.

Уж коль пошла речь о стилях кнопок, то для чего нужен стиль bsSplitButton? Стрелочка на кнопке появляется, как будто что-то раскрываться должно типа комбобокса, но ничего такого нет...

И еще один вопрос попутно - зачем у кнопок свойство Font? Пытался изменить цвет шрифта - не меняется.

Автор: Avazart 7.4.2013, 00:47
Выравнивание изображение вроде тоже задается, и там можно еще манипулировать свойством Margins.

bsSplitButton для прикрутки PopupMenu.

Цитата(Нитонисе @  7.4.2013,  00:18 Найти цитируемый пост)
И еще один вопрос попутно - зачем у кнопок свойство Font? Пытался изменить цвет шрифта - не меняется. 

Эт не знаю вероятно наследие ...

Автор: _Dimon_ 7.4.2013, 01:15
Цитата(Нитонисе @  6.4.2013,  22:37 Найти цитируемый пост)
У меня Builder XE, но SpeedButton в свойстве Glyph хочет изображение с расширением *.bmp. И TImageList к этим кнопкам не прикручивается. По крайней мере стандартными средствами. 


Действительно, просто перепутал с альфовскими TsSpeedButton, там можно.

Автор: artsb 7.4.2013, 14:41
Цитата(Нитонисе @  7.4.2013,  00:18 Найти цитируемый пост)
И еще один вопрос попутно - зачем у кнопок свойство Font? Пытался изменить цвет шрифта - не меняется. 

Кривизна реализации в Билдере. Плюс, если включены стили, то используется шрифт, которые указан в стиле, ЕМНИП. Попробуйте поменять шрифт средствами WinAPI.

На счёт плоской кнопки: почему бы просто не воспользоваться TImage?

Автор: Нитонисе 7.4.2013, 15:02
Цитата(artsb @  7.4.2013,  14:41 Найти цитируемый пост)
На счёт плоской кнопки: почему бы просто не воспользоваться TImage?

Так надо программировать поведение как у кнопки со свойством Flat. Вообще я все же использовал конвертированные картинки *.bmp и SpeedButton. Впринципе сойдет.


Цитата(Avazart @  7.4.2013,  00:47 Найти цитируемый пост)
Выравнивание изображение вроде тоже задается, и там можно еще манипулировать свойством Margins.

Выравнивание задается для стиля bsPushButton. И свойство Margin тоже работает только с этим стилем.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)