Вниз
Скачать: CL | DM;

Пару вопросов про ооп   Найти похожие ветки 

 
Максим_В.   (2007-12-08 17:05) [0]

1. У меня есть класс унаследованный от другого класса (другой в свою очередь унаследован от TComponent). В моем классе есть конструктор constructor Create; virtual;, каждый раз получаю предупреждение: Method "Create" hides virtual method of base type "...".
Этого можно избежать как-то? Я понял, что единственное решение - это переименовать конструктор в моем классе. Это единственное решение?

2. Про этот же класс, унаследованный. У родителя есть event: property OnOneEvent: TOnOneEvent read  FOnOneEvent;
Как в наследнике обработать этот event? Я делал в наследнике процедуру (_OnOneEvent -- TOnOneEvent) и в конструкторе писал OnOneEvent := _OnOneEvent. Это делается так?


 
MBo ©   (2007-12-08 17:15) [1]

constructor Create(Owner: TComponent); override;

>Как в наследнике обработать этот event
событие обрабатывается не в самом компоненте, а в другом - например, событие OnClick кнопки обрабатывается формой, если задать обработчик


 
Максим_В.   (2007-12-08 17:20) [2]


> событие обрабатывается не в самом компоненте, а в другом
> - например, событие OnClick кнопки обрабатывается формой,
>  если задать обработчик

Так а я хочу обработать событие родителя в своем классе. Я пример привел, он походит на пример OnClick и формы, но нормально ли это?


 
MBo ©   (2007-12-08 17:30) [3]

непонятно, для чего это нужно
событие обычно вызывается из динамического метода (например, метод Click), вот его можно перекрыть и добавить нужный код


 
Максим_В.   (2007-12-08 17:39) [4]

Возможно я уже чушь несу. Приведу пример:
У меня есть у родителя свойство - TOnOne = procedure(Sender: TObject; Data1: string; Data2: Integer);. А у моего унаследованного класса есть свое свойство - TOnTwo = procedure(Sender: TObject; Data1: string; Data2: Boolean);. Я хочу в своем классе обработать событие родителя TOnOne, и возбудить вызвать вместо него в своем классе TOnTwo.

TClass1 = class(TClass0)
 constructor Create;
 procedure _OnOne(Sender: TObject; Data1: string; Data2: Integer)
 property OnTwo: TOnTwo read write
end;

constructor TClass1.Create;
begin
 inherited;
 OnOne := _OnOne;
end;

procedure _OnOne(Sender: TObject; Data1: string; Data2: Integer)
begin
 if Assigned(FOnTwo) then
   FOnTwo(Self, Data1 + IntToStr(Data2), False);
end;



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.006 c
4-1181989365
cosinus
2007-06-16 14:22
2008.01.06
Как с помощью WinAPI расшарить папку на удаленном компе?


3-1188556394
Yurikon
2007-08-31 14:33
2008.01.06
Логическое поле в grid`е


2-1197048755
Leonid
2007-12-07 20:32
2008.01.06
ComboBox и Object


15-1196592345
homm
2007-12-02 13:45
2008.01.06
Вот так вот получается


2-1197356647
dumka
2007-12-11 10:04
2008.01.06
Строки




   Наверх