
Controls sind zum
Anzeigen von Daten gedacht und nicht als
Datenspeicher!
Ja weiß ich. Deswegen habe ich ja nach einer cleveren Lösung gefragt obwohl die Möglichkeiten des Grids ja wirklich verlockend sind...

Na dann bau dir doch da einfach was ...
Anfangen müsstest du mit der Beschreibung, was geht rein und was soll rauskommen.
Also eventuell so?
Delphi-Quellcode:
type
TPhoneNumberResolver = class abstract
public
function GetPersonFrom( const APhoneNumber : string ) : string; virtual; abstract;
end;
Eine simple konkrete Klasse wäre dann z.B.
Delphi-Quellcode:
type
TSimplePhoneNumberResolver = class( TPhoneNumberResolver )
private
FPhoneNumberStrings : TStrings;
public
constructor Create( APhoneNumberStrings : TStrings );
destructor Destroy; override;
function GetPersonFrom( const APhoneNumber : string ) : string; override;
end;
constructor TSimplePhoneNumberResolver.Create( APhoneNumberStrings : TStrings );
begin
inherited Create;
FPhoneNumberStrings := TStringList.Create;
FPhoneNumberStrings.Assign( APhoneNumberStrings );
end;
destructor TSimplePhoneNumberResolver.Destroy;
begin
FPhoneNumberStrings.Free;
inherited;
end;
function GetPersonFrom( const APhoneNumber : string ) : string;
begin
Result := FPhoneNumberStrings.Values[APhoneNumber];
end;
Je nachdem wie gut deine Programmierkenntnisse voranschreiten, kannst du die konkrete Ableitung noch verbessern oder eine neue, raffiniertere zusammenbauen.
Deine Anwendung selber bleibt aber gleich, denn die spricht nur die abstrakte Klasse an und der Aufruf bleibt gleicht
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)