Hi,
hier erstmal folgender Code, der das Problem relativ einfach beschreibt:
Delphi-Quellcode:
type TRec1 = record
dertext : string;
procedure ShowText;
end;
type TRec2 = record
dertext : string;
procedure ShowText;
end;
type TKlasse = class
private
FText : string;
FDaten : TRec1;
procedure SetText(Value : string);
public
property Text : string read FText write SetText;
property Daten : TRec1 read FDaten;
end;
type TSubKlasse = class (TKlasse)
private
FDaten : TRec2;
public
property Daten : TRec2 read FDaten;
end;
//...
{ TRec1 }
procedure TRec1.ShowText;
begin
Showmessage('Rec1 '+dertext);
end;
{ TRec2 }
procedure TRec2.ShowText;
begin
Showmessage('Rec2 '+dertext);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
test := TSubKlasse.Create;
test.Text := 'asdf';
test.Daten.ShowText;
test.Free;
end;
{ TKlasse }
procedure TKlasse.SetText(Value: string);
begin
FDaten.dertext := value;
FText := text;
end;
Wenn test jetzt vom Typ TKlasse ist, dann funktioniert das ganze, Ergenbis ist dann:
Rec1 asdf
Wenn test allerdings vom Typ TSubKlasse ist, dann funktioniert das ganze nicht mehr, es erscheint nur
Rec2
Klar, (F)Daten überschreibe ich, ist ja ein neuer Typ. Aber F(Text) und SetText bleibt doch im Prinzip gleich oder???
Thx,
bin mir sicher das die Antwort jedem der
OOP besser beherrscht (davon gibts sicher viele^^) schnell einfällt.
Lg,
Flips
Philipp F.