![]() |
Node.GetNext !!!
Hallo,
in dem Tutorials-Code stimmt nicht Result:=Node.GetNext Ich lege 2 identische Werte in Treeview und dann suche Das Programm findet nur eines und die Markierung bleibt stehen !!! was ist falsch in Code ? ![]() |
Re: Node.GetNext !!!
Wenn ein Eintrag gefunden wird, wird ja abgebrochen.
|
Re: Node.GetNext !!!
Das Break ist falsch.
|
Re: Node.GetNext !!!
Würd ich nicht so sagen.
|
Re: Node.GetNext !!!
Naja, das Break bricht ab, im Endeffekt sagtest Du das gleiche ja auch ;)
Ich hab nur Deine Aussage mit dem Code konkretisiert. |
Re: Node.GetNext !!!
Aber das Entfernen des breaks ist ja nicht die Lösung oder?
|
Re: Node.GetNext !!!
Hab ich auch nicht gesagt, aber das Break führt zum Abbruch ;)
|
Re: Node.GetNext !!!
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; |
Re: Node.GetNext !!!
Wenn es mehrere gibt, dann kannst du aber nicht nur eins als Rückgabewert bekommen?!
Also vielleicht so...
Delphi-Quellcode:
Gruss
type
TSelectedTreeNodes = array of TTreeNode; : : function GetNodeByText(ATree: TTreeView; AValue:String): TSelectedTreeNodes; var Node: TTreeNode; begin setlength(Result, 0); Node := ATree.Items.GetFirstNode; while assigned(Node) do begin if UpperCase(Node.Text) = UpperCase(AValue) then begin setlength(Result, length(Result)+1); Result[high(Result)] := Node; end; Node := Node.GetNext; end; end; Thorsten |
Re: Node.GetNext !!!
Ich würde aus der Function das Break entfernen und stattdessen
Delphi-Quellcode:
hinschreiben.
Node.Selected := True;
Somit werden alle Nodes durchgegangen und bei Übereinstimmung markiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz