Использование TButtonPanel
Модератор: Модераторы
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
Использование TButtonPanel
Собственно, интересно, использовал ли кто-нибудь сабжевый компонент из LCL? Штука, в общем-то, удобная, и я решил попробовать. Но вот незадача - любые попытки назначить на событие OnClick одной из кнопок панели функцию-обработчик, не приводят к ожидаемому результату: после компиляции кнопка ничего не делает, а после сохранения/закрытия/открытия юнита и формы привязка в редакторе свойств исчезает. Также не сохраняются свойства Button.Name и Button.Caption. Если на Name ещё можно забить, а Caption присвоить в Runtime, то что делать с OnClick - вообще не понятно. В Bug tracker запостил сперва насчёт Caption (заметил в первую очередь), там отмазались и багу закрыли. Потом дополнил замечанием насчёт Name и OnClick, но комментариев от разработчиков пока нет.
Интересно, что что-то подозрительно похожее на TButtonPanel в прогах на Lazarus мелькает довольно часто, а значит у кого-то оно работает...
PS. Lazarus - последний Daily Snapshot (0.9.29) для Win32/64.
Интересно, что что-то подозрительно похожее на TButtonPanel в прогах на Lazarus мелькает довольно часто, а значит у кого-то оно работает...
PS. Lazarus - последний Daily Snapshot (0.9.29) для Win32/64.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Он предназначен именно для стандартного управления окном. Т.е. закрыть с сохранением или отказаться от сохранения. Также даёт стандарную помощь или просто кнопку закрытия.
Навешивать на него свой функционал - это уже руками.
А если разово тебе просто обработать закрытие формы надо - то используй FormClose или FormCloseQuery.
Навешивать на него свой функционал - это уже руками.
А если разово тебе просто обработать закрытие формы надо - то используй FormClose или FormCloseQuery.
Nik писал(а):Если на Name ещё можно забить, а Caption присвоить в Runtime, то что делать с OnClick - вообще не понятно.
Не понял, откуда взялись непонятки.
Присваивать событие так же, как и свойство Caption, в Runtime.
Nik писал(а):В Bug tracker запостил сперва насчёт Caption (заметил в первую очередь), там отмазались и багу закрыли.
Там не "отмазались". Бага была закрыта из-за того, что такое поведение у этого компонента не является ошибкой. Другой вопрос, что такой дизайн не очень интуитивен и, наверное, требует доработки. Именно поэтому я не стал багу закрывать повторно. Пусть висит в качестве напоминания.
Что касается OnClick и других событий: по этому поводу уже есть сообщение. Именно поэтому там нет комментариев. Пользуйтесь поиском.
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
Да, похоже я тупо не понял назначение этого компонента. Если судить по набору свойств и событий, но кажется более универсальным. На FormClose навешивать можно, но в моём случае нужно отличать Ok и Cancel.
Фиг с ним, буду юзать обычгные баттоны
Вроде искал. Наверное где-то очепятался в названии компонента
Фиг с ним, буду юзать обычгные баттоны
Что касается OnClick и других событий: по этому поводу уже есть сообщение. Именно поэтому там нет комментариев. Пользуйтесь поиском.
Вроде искал. Наверное где-то очепятался в названии компонента
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Nik писал(а):но в моём случае нужно отличать Ok и Cancel.
Фиг с ним, буду юзать обычгные баттоны
Не надо так. Компонент удобен хотябы тем что быстро позволяет расположить стандартные кнопки и не думать о их привязке. Тем более он сам распологает эти кнопки в той последовательности, которая принята в ОС.
А в OnClose проверй свойство ModalResult - легко различить, зачем и как закрыли форму.
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
Компонент удобен, не спорю. Но в нынешнем виде его удобства не очевидны. Когда будет возможность использовать без лишнего геморроя Name, Caption и OnClick - цены ему не будет при проектировании диалогов (именно за возможность быстро расположить однотипные кнопки абсолютно одинаково во всех окнах).
Nik писал(а):Компонент удобен, не спорю. Но в нынешнем виде его удобства не очевидны. Когда будет возможность использовать без лишнего геморроя Name, Caption и OnClick - цены ему не будет при проектировании диалогов (именно за возможность быстро расположить однотипные кнопки абсолютно одинаково во всех окнах).
ты можешь написать свой, используя Frame-ы
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Зачем фреймы? Обычная панелька с динамически создаваемыми кнопками разве не пододёт?
Brainenjii писал(а):Зачем фреймы? Обычная панелька с динамически создаваемыми кнопками разве не пододёт?
слишком сложно же
с фреймами можно использовать "глазуальное программирование" поводил мышкой - компонент готов!
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
Свой компонент написать не проблема (хотя в Лазаре ещё с эти не разбирался, а тут отличия есть от Delphi, насколько я понял). Но здесь вопрос целесообразности. Пока не вижу в том особой нужды
Можно и вообще всю отрисовку с нуля делать (писал для Delphi с использованием G32 свои компоненты-кнопки и ProgressBar совмещённый с TrackBar'ом), но для такой мелочи, как кнопки Ok и Cancel в диалогах заморачиваться смысла нет, имхо.
Вот с панелькой (ToolButton), пожалуй, самый удобный вариант. Только не нашёл, как там можно кнопки по правому краю выровнять
Вот с панелькой (ToolButton), пожалуй, самый удобный вариант. Только не нашёл, как там можно кнопки по правому краю выровнять
Тогда в честь этого славного события закройте баг, сделайте одолжение. 
