Ich hätte einen Vorschlag: Bei der Verwendung der
GUI ist es hilfreich, wenn man Komponenten über ihren Namen ansprechen kann. Dazu würde ich folgende Ergänzung in der AdGUI vorschlagen:
Delphi-Quellcode:
TAdComponents = class(TAdList)
private
procedure SetItem(Index:integer;AValue:TAdComponent);
function GetItem(Index:integer):TAdComponent;
function GetItemNamed(Name: String): TAdComponent; // Neu
procedure SetItemNamed(Name: String; const Value: TAdComponent); // Neu
function IndexOf(Name: String): Integer; // Neu
public
property Items[index:integer]:TAdComponent read GetItem write SetItem; default;
property ItemNamed[Name: String]: TAdComponent read GetItemNamed write SetItemNamed;
end;
Und die Definition:
Delphi-Quellcode:
function TAdComponents.GetItemNamed(Name: String): TAdComponent;
var i: Integer;
begin
Result := Nil;
for I := 0 to Count - 1 do
if Lowercase(Items[i].Name) = Lowercase(Name) then begin
Result := Items[i];
Break;
end;
end;
function TAdComponents.IndexOf(Name: String): Integer;
var i: Integer;
begin
Result := -1;
for I := 0 to Count - 1 do
if Lowercase(Items[i].Name) = Lowercase(Name) then begin
Result := i;
Break;
end;
end;
procedure TAdComponents.SetItemNamed(Name: String; const Value: TAdComponent);
var i: Integer;
begin
i := IndexOf(Name);
if i <> -1 then
Items[i] := Value;
end;
Die Idee ist von TJvSimpleXML übernommen und klappt bis jetzt wunderbar
PS: Danke fürs Lob, die anderen Tutorials werde ich mir bei Gelegenheit mal vornehmen