Конференция "Начинающим" » Динамическое зменение события у компонентов, помещаемых на форму? [D6, XP]
 
  • Mishenka (31.03.08 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 © (31.03.08 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 (31.03.08 15:32) [2]
    Так ведь всякие там TCombobox, TListBox, TEdit наследуются от TWinControl и TWidgetControl и разве они унаследуют это свойство от THackWidgetControl ?
  • Игорь Шевченко © (31.03.08 15:34) [3]

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


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


    RTFS: Controls.pas
  • Palladin © (31.03.08 15:52) [4]

    > Mishenka   (31.03.08 15:32) [2]

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

    , а
    THackWidgetControl=Class(TWidgetControl)

 
Конференция "Начинающим" » Динамическое зменение события у компонентов, помещаемых на форму? [D6, XP]
Есть новые Нет новых   [134433   +22][b:0][p:0.001]