Wieso sollte ein nochmaliges Überschreiben nicht funkionieren? Das wäre ja gegen alles, was ich von
OOP so kenne. Gegenbeispiel:
Delphi-Quellcode:
type
TClassA = class
protected
procedure Blubb; virtual;
end;
TClassB = class(TClassA)
protected
procedure Blubb; override;
end;
TClassC = class(TClassB)
protected
procedure Blubb; override;
end;
TClassD = class(TClassC)
public
procedure Blubb; override;
end;
{ TClassA }
procedure TClassA.Blubb;
begin
ShowMessage('Bubb aus Class A');
end;
{ TClassB }
procedure TClassB.Blubb;
begin
inherited;
ShowMessage('Blubb aus Class B');
end;
{ TClassC }
procedure TClassC.Blubb;
begin
inherited;
ShowMessage('Blubb aus Class C');
end;
{ TClassD }
procedure TClassD.Blubb;
begin
inherited;
ShowMessage('Blubb aus Class D');
end;
procedure TForm5.FormCreate(Sender: TObject);
var
Dingens: TClassD;
begin
Dingens := TClassD.Create;
try
Dingens.Blubb;
finally
Dingens.Free;
end;
end;
Da kommen alle Messages schön von "oben" nach "unten" durchgeblubbert, hab ich auch nicht anders erwartet.
Probier das mal mit der Paint Procedure so wie ich und versuche die mal 2x zu überschreiben, genau das ist ja das Problem z.Z.