Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: TCollectionItem ansprechen über Schlüsselwert anstatt In

  Alt 21. Mai 2006, 21:05
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
I come from outer space to save the human race
  Mit Zitat antworten Zitat