Wieso überprüfst du denn mit deiner Funktion ob der Knoten doppelt ist?
Lass dir doch lieber den Knoten zurückgeben und überprüfe dann ob der Knoten halt Assigned ist,
also so in etwa:
Delphi-Quellcode:
...
var s:tstringlist;j:TTreeNode;n:integer;
begin
ADOQuery1.open;
ADOQuery1.first;
while not (ADOQuery1.eof) do
begin
s:=tstringlist.create;
separate(s,ADOQuery1.FindField('Steuerfeld').asstring,'>');
j:=SearchNodebyString(TreeView1.items,s.Strings[0]);
TreeView1.Items.BeginUpdate;
if not Assigned (j) then
begin
j:=TreeView1.Items.AddChild(nil,s.Strings[0])
end
else
begin
// Knoten schon vorhanden
end;
TreeView1.Items.EndUpdate;
for N:=1 to s.Count-1 do
Begin
j:=SearchNodebyString(TreeView1.items,s.Strings[n]);
if not Assigned (j) then
begin
j:=TreeView1.Items.AddChild(j,s.Strings[n])
end
else
begin
// Knoten schon vorhanden
end;
end;
s.Clear;
ADOQuery1.next;
end;
s.free;
...
Edith sagt:
Noch hier vll. als kleine Hilfe bzw Lösung
http://delphi.about.com/od/vclusing/l/aa010703a.htm
MfG Alaitoc