Hi,
hab folgendes TDictionary ergänzt:
FTagDict: TDictionary<string, TTreeNode>;
Daraus ergibt sich folgender Code:
Delphi-Quellcode:
procedure UpdateList;
var
i, k: integer;
varStringArray: TStringDynArray;
varTreeNodeItem: TTreeNode;
begin
FTagDict.Clear;
TreeView.Items.BeginUpdate;
TreeView.Items.Clear;
for i := 0 to FObjects.Count-1 do
begin
// Wurde ein Tag gesetzt?
if (trim(FObjects[i].tags) <> '') then
begin
varStringArray := SplitString(FObjects[i].tags, ';');
end
else
begin
setlength(varStringArray, 1);
varStringArray[0] := 'Untagged Objects';
end;
for k := 0 to length(varStringArray)-1 do
begin
// Leere Tags ignorieren
if varStringArray[k] = '' then Continue;
if FTagDict.ContainsKey(varStringArray[k]) then
varTreeNodeItem := FTagDict.Items[varStringArray[k]]
else
varTreeNodeItem := nil;
if Assigned(varTreeNodeItem) then
begin
TreeView.Items.AddChild(varTreeNodeItem, FObjects[i].ItemCaption);
end
else
begin
varTreeNodeItem := TreeViewBusinessObjects.Items.Add(nil, varStringArray[k]);
FTagDict.Add(varStringArray[k], varTreeNodeItem);
TreeView.Items.AddChild(varTreeNodeItem, FObjects[i].ItemCaption);
end;
end;
end;
TreeView.Items.EndUpdate;
end;
Es wird besser
Danke & Viele Grüße