Форум Программирование Химеры программеров |
|
Задавшись вопросом вызова прародительского метода при наследовании, не нашел ни одного законного способа, кроме хака, ссылку на которого предоставил Вадим. Тема создана для сбора и обсуждения таких не совсем правильных, но иногда нужных приёмов. "Digital Networked Knight" | ||||||
|
Ох. Я, пожалуй, даже вставлю сюда это. Сурово, не додумался бы до такого. И это все тот же inherited. но как! Интересно было бы получить TX(@TDaddy.X) (Self); но подозреваю, что так не выйдет. type TGranny = class public procedure X; virtual; end; TDaddy = class (TGranny) public procedure X; override; end; TMe = class (TGranny) public procedure X; override; end; procedure TForm14.Button1Click(Sender: TObject); begin TMe.Create.X; end; { TGranny } procedure TGranny.X; begin ShowMessage ('Granny'); end; { TDaddy } procedure TDaddy.X; begin ShowMessage ('Daddy'); end; { TMe } type TX = procedure of object; procedure TMe.X; var GrannyX: TX; M: TMethod absolute GrannyX; begin ShowMessage ('Me, Lovely'); M.Code := @TGranny.X; M.Data := Self; GrannyX; end; // или procedure TMe.X; type TX = procedure(ASelf: TGranny); begin ShowMessage ('Me, Lovely'); TX(@TGranny.X) (Self); end; Ⓐ свобода сопротивление солидарность | ||||||
Перейти в раздел:
© 2004 - 2024, Delphi.int.ru |
Версия форума: 1.10 (19.01.2010) |
Выполнено за 0.02 сек. |