On Fri, Jan 14, 2011 at 10:38 PM, Torsten Bonde Christiansen
<t...@epidata.dk>wrote:

> Hi List.
>
> Is it possible to jump a couple of levels in the inherited hierarchy when
> calling "inherited" on a method?
>
>
Hmm, don't know whether you're the same person or not :), but I replied in a
stackoverflow question the next day after it was asked (see here:
http://stackoverflow.com/questions/4662744/delphi-how-to-call-inherited-inherited-ancestor/4670457#4670457)
and it looked like the host didn't notice :). At least this variant
seemed
to work

code is self-explanatory

type
  TGrandParent = class(TObject)
  public
    procedure Show;virtual;
  end;

  TParent = class(TGrandParent)
  public
    procedure Show;override;
  end;

  THackParent = class(TGrandParent)
  private
    procedure CallInheritedShow;
  end;

  TMyObject = class(TParent)
  public
    procedure Show;override;
  end;


{ TGrandParent }

procedure TGrandParent.Show;
begin
  MessageDlg('I''m the grandparent', mtInformation, [mbOk], 0);
end;

{ TParent }

procedure TParent.Show;
begin
  inherited;
  MessageDlg('I''m the parent', mtInformation, [mbOk], 0);
end;

{ THackParent }

procedure THackParent.CallInheritedShow;
begin
  inherited Show;
end;

{ TMyObject }

procedure TMyObject.Show;
begin
  THackParent(Self).CallInheritedShow;
end;

procedure TForm6.Button6Click(Sender: TObject);
var
  Obj: TMyObject;
begin
  Obj:=TMyObject.Create;
  try
    Obj.Show;
  finally
    Obj.Free;
  end;
end;
+


Max
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to