Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.27;
Скачать: CL | DM;

Вниз

Динамическое зменение события у компонентов, помещаемых на форму?   Найти похожие ветки 

 
Mishenka   (2008-03-31 15:10) [0]

Пишу компонент потомок от TForm. Нужно сделать, чтобы всем компонентам, которые бросают на форму в событие OnKeyUp подставлялся метод от формы.
Пробовал сделать следующим образом:
procedure TMyForm.Notification(AComponent: TComponent;
 Operation: TOperation);
begin
 inherited Notification(AComponent, Operation);
 if (AComponent is TWinControl) and (Operation = opInsert) then
   TWinControl(AComponent).OnKeyUp := DoneKeyUp;
 if (AComponent is TWidgetControl) and (Operation = opInsert) then
   TWidgetControl(AComponent).OnKeyUp := DoneKeyUp;
end;

однако пишет Undeclared identifier OnKeyUp, потому-что в TWinControl и TWidgetControl свойство OnKeyUp объявлено как private. Как всё-таки поменять событие у всех помещаемых на форму компонентов, не перечисляя всех возможных типов ?


 
Palladin ©   (2008-03-31 15:18) [1]


Type
THackWinControl=Class(TWinControl)
Public
 Property OnKeyUp;
End;

THackWidgetControl=Class(TWinControl)
Public
 Property OnKeyUp;
End;

procedure TMyForm.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (AComponent is TWinControl) and (Operation = opInsert) then
  THackWinControl(AComponent).OnKeyUp := DoneKeyUp;
if (AComponent is TWidgetControl) and (Operation = opInsert) then
  THackWidgetControl(AComponent).OnKeyUp := DoneKeyUp;
end;


 
Mishenka   (2008-03-31 15:32) [2]

Так ведь всякие там TCombobox, TListBox, TEdit наследуются от TWinControl и TWidgetControl и разве они унаследуют это свойство от THackWidgetControl ?


 
Игорь Шевченко ©   (2008-03-31 15:34) [3]


> Так ведь всякие там TCombobox, TListBox, TEdit наследуются
> от TWinControl


> разве они унаследуют это свойство от THackWidgetControl
> ?


RTFS: Controls.pas


 
Palladin ©   (2008-03-31 15:52) [4]


> Mishenka   (31.03.08 15:32) [2]

это я описАлся конечно не THackWidgetControl=Class(TWinControl), а THackWidgetControl=Class(TWidgetControl)


 
Leonid Troyanovsky ©   (2008-03-31 18:14) [5]


> Mishenka   (31.03.08 15:10)

> Пишу компонент потомок от TForm. Нужно сделать, чтобы всем
> компонентам, которые бросают на форму в событие OnKeyUp
> подставлялся метод от формы.


Странный дизайн.
Может достаточно TAplicationEvents или даже KeyPreview.

А если, все же, решаем исходную задачу, то неясно нужно ли,
чтобы оное отображалось в инспекторе объектов, т.е. в дизайнтайме,
и нужно ли, чтобы назначенный для некоторого контрола обработчик
мог заменять пользователь оной формы.

--
Regards, LVT.


 
Mishenka   (2008-04-01 09:41) [6]


> Leonid Troyanovsky ©   (31.03.08 18:14) [5]
> Странный дизайн.
> Может достаточно TAplicationEvents или даже KeyPreview

Да, действительно KeyPreview лучше. Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2008.04.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1207234217
XP_Style
2008-04-03 18:50
2008.04.27
Как узнать, что у Windows XP включены стили XP?


2-1206772803
Zaicev
2008-03-29 09:40
2008.04.27
Ошибка в цикле "for ii := 0 to FormOnOff.ControlCount-1 do"


15-1205501602
sds
2008-03-14 16:33
2008.04.27
TADOTable


2-1206806274
KiLLiR
2008-03-29 18:57
2008.04.27
Запрет на вставку текста из буфера в Edit


15-1205350043
Interfer0n
2008-03-12 22:27
2008.04.27
Ищем программистов Delphi, C++/Visual Studio