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

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

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

Ответить
Аватара пользователя
Browny
новенький
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

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

Сообщение Browny »

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

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

alexs, как к автору порта rxlib, особо взываю к Вашей помощи-мнению.. :)
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Это на самом деле spinedit - это компонент самого виджета - поэтому он так выглядит.
Даже в винде в оригинале rx редактор с кнопкой реализовывался через хак. а кросплатформенное решение - мне кажется не реально.
ButtonEdit именно из-за этого имеет именно такую реализацию. Я тоже пощёл по томуже пути.
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

ИМХО: эти неудобности совсем не неудобности. а наоборот самое разумное, несложное и естесственное решение.
Ещё можно сделать TPanel и на неё положеть поле ввода, кнопки и настроить ZOrder на ней. тогда за движением наверное не надо будет следить
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

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

Этот путь влечёт за собой проблему - я в принципе уже с ней смирился - но сначала было дико.
Нажатие на кнпку ButtonEdit-a генерирует вызов события OnExit у компоненты - в дельфине этого нет.
Особенно это провяляется у DBGrid-а
Ответить