![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пару вопросов про ооп [D7, XP, 2003]
Максим_В. © (2007-12-08 17:05:00)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. Это делается так?
Максим_В. (2007-12-08 17:39:00) [1]Возможно я уже чушь несу. Приведу пример:
У меня есть у родителя свойство -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;
MBo (2007-12-08 17:30:00) [2]непонятно, для чего это нужно
событие обычно вызывается из динамического метода (например, метод Click), вот его можно перекрыть и добавить нужный код
Максим_В. (2007-12-08 17:20:00) [3]
> событие обрабатывается не в самом компоненте, а в другом
> - например, событие OnClick кнопки обрабатывается формой,
> если задать обработчик
Так а я хочу обработать событие родителя в своем классе. Я пример привел, он походит на пример OnClick и формы, но нормально ли это?
MBo (2007-12-08 17:15:00) [4]constructor Create(Owner: TComponent); override;
>Как в наследнике обработать этот event
событие обрабатывается не в самом компоненте, а в другом - например, событие OnClick кнопки обрабатывается формой, если задать обработчик