Du hast gesagt, dass das break falsch ist.
Ich würde den Code in etwa so anpassen:
Delphi-Quellcode:
function GetNodeByText
(ATree : TTreeView; AValue:String;
AVisible: Boolean; StartNode: TNode): TTreeNode;
var
Node: TTreeNode;
begin
Result := nil;
if ATree.Items.Count = 0 then Exit;
if StartNode = Nil then Node := ATree.Items[0] else Node = StartNode;
while Node <> nil do
begin
if UpperCase(Node.Text) = UpperCase(AValue) then
begin
Result := Node;
if AVisible then
Result.MakeVisible;
Break;
end;
Node := Node.GetNext;
end;
end;