Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 666

/ вопрос решён /

Приветствую, уважаемые эксперты!
Допустим, есть структура классов, представленная в листинге. Есть ли какой-либо способ вызвать из t3.show родительский метод t1.show в обход вызова t2.show?

type
  t1 = class
    public
      procedure show; virtual;
  end;
 
  t2 = class(t1)
    public
      procedure show; override;
  end;
 
  t3 = class(t2)
    public
      procedure show; override;
  end;
 
{ t1 }
 
procedure t1.show;
begin
  ShowMessage('1');
end;
 
{ t2 }
 
procedure t2.show;
begin
  ShowMessage('2');
end;
 
{ t3 }
 
procedure t3.show;
begin
  inherited show; // как вызвать show предка t1 ?
end;

dmistand Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: dmistand (статус: 1-ый класс)
Вопрос отправлен: 30 июня 2017, 12:05
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: DNK

Здравствуйте, dmistand!
Вопрос разбирался на форуме здесь.

Приложение:
  1. type
  2. TGranny = class
  3. public
  4. procedure X; virtual;
  5. end;
  6.  
  7. TDaddy = class (TGranny)
  8. public
  9. procedure X; override;
  10. end;
  11.  
  12. TMe = class (TGranny)
  13. public
  14. procedure X; override;
  15. end;
  16.  
  17. procedure TForm14.Button1Click(Sender: TObject);
  18. begin
  19. TMe.Create.X;
  20. end;
  21.  
  22. { TGranny }
  23.  
  24. procedure TGranny.X;
  25. begin
  26. ShowMessage ('Granny');
  27. end;
  28.  
  29. { TDaddy }
  30.  
  31. procedure TDaddy.X;
  32. begin
  33. ShowMessage ('Daddy');
  34. end;
  35.  
  36. { TMe }
  37.  
  38. type
  39. TX = procedure of object;
  40.  
  41. procedure TMe.X;
  42. var
  43. GrannyX: TX;
  44. M: TMethod absolute GrannyX;
  45. begin
  46. ShowMessage ('Me, Lovely');
  47. M.Code := @TGranny.X;
  48. M.Data := Self;
  49. GrannyX;
  50. end;
  51.  
  52.  
  53.  
  54. procedure TMe.X;
  55. type
  56. TX = procedure(ASelf: TGranny);
  57. begin
  58. ShowMessage ('Me, Lovely');
  59. TX(@TGranny.X) (Self);
  60. end;


Ответ отправил: DNK (статус: Студент)
Время отправки: 30 июня 2017, 12:52
Оценка за ответ: 5

Комментарий к оценке: ответил быстро, по существу и без издевательских шуточек, которые можно часто встретить на различных форумах

Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 30 июня 2017, 13:17; участников в обсуждении: 2.
DNK

DNK (статус: Студент), 30 июня 2017, 12:54 [#1]:

dmistand: Ты никак решил мажорный номер вопроса застолбить?
"Digital Networked Knight"

30 июня 2017, 13:14: Статус вопроса изменён на решённый (изменил автор вопроса — dmistand)

dmistand

dmistand (статус: 1-ый класс), 30 июня 2017, 13:17 [#2]:

DNK: нет, так само получилось, честно. Я сюда заходил последний раз пару лет назад, но в попытке переопределить Paint у TImage и внутри вызвать метод "деда", столкнулся с проблемой :)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 21 сентября 2017, 11:32
Выполнено за 0.05 сек.
Рейтинг@Mail.ru