Ob das in FPC schon so implementiert ist kann ich nicht adhoc sagen (müsste ich jetzt nachschauen ... kannst du ja auch machen
) in Delphi gibt es die virtuelle Methode
TObject.ToString. Diese wird einfach überschrieben.
Delphi-Quellcode:
TPerson = class
private
FFirstname : string;
FLastname : string;
public
function ToString : string; override;
property Firstname : string read FFirstname write FFirstname;
property Lastname : string read FLastname write FLastname;
end;
function TPerson.ToString : string;
begin
Result := FLastname + ', ' + FFirstname;
end;
Das macht man dann für jede Klasse, die man in so ein Listencontrol reinklatschen möchte.
Und nun ganz einfach damit das Control füllen:
Delphi-Quellcode:
procedure FillStrings( AStrings : TStrings; ADataList : TObjectList );
var
LIdx : Integer;
begin
AStrings.BeginUpdate;
try
AStrings.Clear;
for LIdx := 0 to ADataList.Count - 1 do
begin
AStrings.AddObject(
ADataList[LIdx].ToString, // da wird das jetzt benutzt
ADataList[LIdx] );
end;
finally
AStrings.EndUpdate;
end;
end;
Die Methode
ToString
ist eben für so eine String-Repräsentation von einer Instanz vorgesehen um diese z.B. in so einem einfachen List-Control (ListBox, ComboBox, etc.) anzuzeigen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)