Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
ВнизПару вопросов про ооп Найти похожие ветки
← →
Максим_В. (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 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c