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

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

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

Ответить
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

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

Сообщение Nik »

Собственно, интересно, использовал ли кто-нибудь сабжевый компонент из 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.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Он предназначен именно для стандартного управления окном. Т.е. закрыть с сохранением или отказаться от сохранения. Также даёт стандарную помощь или просто кнопку закрытия.
Навешивать на него свой функционал - это уже руками.
А если разово тебе просто обработать закрытие формы надо - то используй FormClose или FormCloseQuery.
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

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

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

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

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

Что касается OnClick и других событий: по этому поводу уже есть сообщение. Именно поэтому там нет комментариев. Пользуйтесь поиском.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

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

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

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

Вроде искал. Наверное где-то очепятался в названии компонента :(
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

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

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

Не надо так. Компонент удобен хотябы тем что быстро позволяет расположить стандартные кнопки и не думать о их привязке. Тем более он сам распологает эти кнопки в той последовательности, которая принята в ОС.
А в OnClose проверй свойство ModalResult - легко различить, зачем и как закрыли форму.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

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

Сообщение скалогрыз »

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

ты можешь написать свой, используя Frame-ы
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Зачем фреймы? Обычная панелька с динамически создаваемыми кнопками разве не пододёт?
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

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

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

с фреймами можно использовать "глазуальное программирование" поводил мышкой - компонент готов! :D
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

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

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

Сообщение Nik »

Багу всё-таки пофиксили, теперь Name и Caption сохранятся нормально :)
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

Тогда в честь этого славного события закройте баг, сделайте одолжение. :)
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

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

PS. Спасибо за оперативное решение :)
Ответить