Использование TButtonPanel

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Использование TButtonPanel

Сообщение Nik » 10.06.2010 20:22:04

Собственно, интересно, использовал ли кто-нибудь сабжевый компонент из 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.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Использование TButtonPanel

Сообщение alexs » 14.06.2010 23:00:14

Он предназначен именно для стандартного управления окном. Т.е. закрыть с сохранением или отказаться от сохранения. Также даёт стандарную помощь или просто кнопку закрытия.
Навешивать на него свой функционал - это уже руками.
А если разово тебе просто обработать закрытие формы надо - то используй FormClose или FormCloseQuery.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Использование TButtonPanel

Сообщение Максим » 16.06.2010 03:16:23

Nik писал(а):Если на Name ещё можно забить, а Caption присвоить в Runtime, то что делать с OnClick - вообще не понятно.

Не понял, откуда взялись непонятки. :mrgreen:
Присваивать событие так же, как и свойство Caption, в Runtime.

Nik писал(а):В Bug tracker запостил сперва насчёт Caption (заметил в первую очередь), там отмазались и багу закрыли.

Там не "отмазались". Бага была закрыта из-за того, что такое поведение у этого компонента не является ошибкой. Другой вопрос, что такой дизайн не очень интуитивен и, наверное, требует доработки. Именно поэтому я не стал багу закрывать повторно. Пусть висит в качестве напоминания. :)

Что касается OnClick и других событий: по этому поводу уже есть сообщение. Именно поэтому там нет комментариев. Пользуйтесь поиском.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Использование TButtonPanel

Сообщение Nik » 16.06.2010 20:59:11

Да, похоже я тупо не понял назначение этого компонента. Если судить по набору свойств и событий, но кажется более универсальным. На FormClose навешивать можно, но в моём случае нужно отличать Ok и Cancel.

Фиг с ним, буду юзать обычгные баттоны :)

Что касается OnClick и других событий: по этому поводу уже есть сообщение. Именно поэтому там нет комментариев. Пользуйтесь поиском.

Вроде искал. Наверное где-то очепятался в названии компонента :(
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Использование TButtonPanel

Сообщение alexs » 16.06.2010 21:55:01

Nik писал(а):но в моём случае нужно отличать Ok и Cancel.

Фиг с ним, буду юзать обычгные баттоны

Не надо так. Компонент удобен хотябы тем что быстро позволяет расположить стандартные кнопки и не думать о их привязке. Тем более он сам распологает эти кнопки в той последовательности, которая принята в ОС.
А в OnClose проверй свойство ModalResult - легко различить, зачем и как закрыли форму.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Использование TButtonPanel

Сообщение Nik » 17.06.2010 14:33:08

Компонент удобен, не спорю. Но в нынешнем виде его удобства не очевидны. Когда будет возможность использовать без лишнего геморроя Name, Caption и OnClick - цены ему не будет при проектировании диалогов (именно за возможность быстро расположить однотипные кнопки абсолютно одинаково во всех окнах).
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Использование TButtonPanel

Сообщение скалогрыз » 17.06.2010 14:46:43

Nik писал(а):Компонент удобен, не спорю. Но в нынешнем виде его удобства не очевидны. Когда будет возможность использовать без лишнего геморроя Name, Caption и OnClick - цены ему не будет при проектировании диалогов (именно за возможность быстро расположить однотипные кнопки абсолютно одинаково во всех окнах).

ты можешь написать свой, используя Frame-ы
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Использование TButtonPanel

Сообщение Brainenjii » 17.06.2010 15:12:48

Зачем фреймы? Обычная панелька с динамически создаваемыми кнопками разве не пододёт?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Использование TButtonPanel

Сообщение скалогрыз » 17.06.2010 15:29:51

Brainenjii писал(а):Зачем фреймы? Обычная панелька с динамически создаваемыми кнопками разве не пододёт?

слишком сложно же :mrgreen:

с фреймами можно использовать "глазуальное программирование" поводил мышкой - компонент готов! :D
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Использование TButtonPanel

Сообщение Nik » 18.06.2010 00:07:40

Свой компонент написать не проблема (хотя в Лазаре ещё с эти не разбирался, а тут отличия есть от Delphi, насколько я понял). Но здесь вопрос целесообразности. Пока не вижу в том особой нужды :) Можно и вообще всю отрисовку с нуля делать (писал для Delphi с использованием G32 свои компоненты-кнопки и ProgressBar совмещённый с TrackBar'ом), но для такой мелочи, как кнопки Ok и Cancel в диалогах заморачиваться смысла нет, имхо.

Вот с панелькой (ToolButton), пожалуй, самый удобный вариант. Только не нашёл, как там можно кнопки по правому краю выровнять :(
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Использование TButtonPanel

Сообщение Nik » 27.06.2010 19:12:08

Багу всё-таки пофиксили, теперь Name и Caption сохранятся нормально :)
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Использование TButtonPanel

Сообщение Максим » 28.06.2010 00:37:06

Тогда в честь этого славного события закройте баг, сделайте одолжение. :)
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Использование TButtonPanel

Сообщение Nik » 28.06.2010 08:55:18

Вроде ещё вчера закрывал, но видимо как-то не правильно :) Теперь точно закрыл :)

PS. Спасибо за оперативное решение :)
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 38

Рейтинг@Mail.ru