Ответы пользователя по тегу Lazarus
  • Как вызвать метод предка в методе предка?

    @M_PRO
    На сколько я понял есть:
    TMyObject = class(TObject)
      procedure DoA; virtual;
      procedure DoB; virtual;
    end;
    
    TMyObject2 = class(TMyObject)
      procedure DoA; override;
      procedure DoB; override;
    end;
    
    ...
    
    TMyObject.DoA;
    begin
       DoB;
    end;
    
    TMyObject.DoB;
    begin
      WrtieLn('MyObject');
    end;
    
    TMyObject2.DoA;
    begin
       inherited DoA; // fix
    end;
    
    TMyObject2.DoB;
    begin
      WriteLn('MyObject2');
    end;


    И вы ожидаете получить в результате вызова метода DoA класса TMyObject2, исправив строку с пометкой fix
    строку MyObject в консоли строку MyObject вместо MyObject2.

    Ответ: это не возможно.

    Решение:
    1. Если классы написаны Вами - думать над проектированием.
    2. Если классы написаны не Вами - думать о том, как их использовать. Возможно "патчить" исходники если совсем припёрло. В таком случае нужна существенно более подробная информация.
    Ответ написан
    2 комментария