Hallo,
nichts einfacher als das.
Hier eine abgespecktes Beispiel aus meinem aktuellen Projekt.
Delphi-Quellcode:
TValue = class(TObject)
private
FValuename : String; // Dies ist der Monatsname !!!
FValue : Currency;
public
property Valuename : String read FValuename write FValuename;
property Value : Currency read FValue write FValue ;
end; // TValue = class(TObject)
TValues = class(TListbase)
private
function GetValue(aValueName: String): TValue;
function GetItems(X: Integer): TValue;
public
function Add : TValue; overload;
function Add(aValueName : String) : TValue; overload;
property Items[X : Integer] : TValue read GetItems; default;
property Value[aValueName : String] : TValue read GetValue;
end; // TValues = class(TListbase)
implementation
uses JsList;
{ TValues }
function TValues.Add: TValue;
begin
Result:=TValue.Create;
Result.Parent:=Self;
List.Add(Result);
end;
function TValues.Add(aValueName: String): TValue;
begin
Result:=Value[aValueName]; // Prüfen ob es schon ein TValue in der Collection
// mit dem Namen aValueName gibt.
If Result=Nil then
begin
Result:=Add;
Result.Valuename:=AnsiUppercase(Trim(aValueName));
end;
end;
function TValues.GetItems(X: Integer): TValue;
begin
Result:=TValue(List[X]);
end;
function TValues.GetValue(aValueName: String): TValue;
var
iCnt : Integer;
_Valuename : String;
begin
Result:=Nil;
_Valuename:=AnsiUppercase(Trim(aValueName));
For iCnt:=0 to Count-1 do
begin
If Items[iCnt].Valuename=_Valuename then
begin
Result:=Items[iCnt];
Exit;
end; // If Items[iCnt].Name=_Name then
end; // For iCnt:=0 to Count-1 do
end;
end.
In
property Value[aValueName : String] : TValue read GetValue;
und
function TValues.GetValue(aValueName: String): TValue;
steckt die Magie