2016-04-11 15 views
1

私はボタンを押したときにTVirtualStringTreeの先頭にノードを移動しようとしていますので、まず最初に、次のコード特定のノードを最初のインデックスに移動するにはどうすればよいですか?私は

function Tform1.lookingTreeView(name: String): PVirtualNode; 
var 
    Node: PVirtualNode; 
    Data: PUserData; 
begin 
    Result := nil; 
    Node := Vts1.GetFirst; 
    while ((Node <> nil) and (Result = nil)) do 
    begin 
    Data := Vts1.GetNodeData(Node); 
    if (Tuserdataclass(Data.FObject).userUid = name) then 
     Result := Node; 
    Node := Vts1.GetNext(Node); 
    end; 
end; 

によってノードのための検索ですし、私のことができるようにするための手順を設定します、

procedure Tform1.checkmove; 
var 
    Node: PVirtualNode; 
    Data: PUserData; 
begin 

    Node := lookingTreeView(LineToid); 

    if not Assigned(Node) then 
    Exit; 
    if (Node <> nil) then 
    begin 
    Data := vts1.GetNodeData(Node); 
    if Tdataclass(Data.FObject).name = 'Martin' then 
    begin 

     // start move but dont know what to do to bring this node to first index 

    end; 
    end; 
end; 
+0

コードを少しだけフォーマットして、実際に読むことができます。 –

+0

@RudyVelthuisコードフォーマット – MartinLoanel

+0

非常に良い、ありがとう。 –

答えて

4

としてがCOMENTで言及されたノードは、たとえばのために等しい場合に、 "マーティン" をチェックし使用MoveTo

Vts1.MoveTo(Node, Vts1.GetFirst, amInsertBefore, False);