TWinControl child для TWinControl компонента - как?

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

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

TWinControl child для TWinControl компонента - как?

Сообщение Browny » 09.07.2010 17:55:01

Попытался создать кастомный компонент - наследник TEdit, и на нём кнопка. Нарвался на сообщение, что "can not have TButton as child". Оказалось, что кнопка тоже TWinControl. В Lazarus нашёл TEditButton - но это неподходящий пример. Хотелось бы иметь пример, близкий TSpinEdit - т.е. кнопка лежит поверх.

Единственный путь - тупо сказать чилду, что парентом является парент "материнского" компонента? И сделать ZOrder (BringFront и прочее)? Это же совершенно независимые компоненты будут.. И надо следить будет, когда первый двигают, и прочие неудобности...

alexs, как к автору порта rxlib, особо взываю к Вашей помощи-мнению.. :)
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Re: TWinControl child для TWinControl компонента - как?

Сообщение alexs » 09.07.2010 20:31:43

Это на самом деле spinedit - это компонент самого виджета - поэтому он так выглядит.
Даже в винде в оригинале rx редактор с кнопкой реализовывался через хак. а кросплатформенное решение - мне кажется не реально.
ButtonEdit именно из-за этого имеет именно такую реализацию. Я тоже пощёл по томуже пути.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: TWinControl child для TWinControl компонента - как?

Сообщение hinst » 09.07.2010 20:51:24

ИМХО: эти неудобности совсем не неудобности. а наоборот самое разумное, несложное и естесственное решение.
Ещё можно сделать TPanel и на неё положеть поле ввода, кнопки и настроить ZOrder на ней. тогда за движением наверное не надо будет следить
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: TWinControl child для TWinControl компонента - как?

Сообщение alexs » 11.07.2010 12:11:44

hinst писал(а):Ещё можно сделать TPanel и на неё положеть поле ввода, кнопки и настроить ZOrder на ней

Этот путь влечёт за собой проблему - я в принципе уже с ней смирился - но сначала было дико.
Нажатие на кнпку ButtonEdit-a генерирует вызов события OnExit у компоненты - в дельфине этого нет.
Особенно это провяляется у DBGrid-а
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 231

Рейтинг@Mail.ru