2016-04-11 18 views
1

Ich versuche, einen Knoten an die Spitze der TVirtualStringTree zu bewegen, wenn ich auf einen Knopf drücken, um erste, was ich suche nach dem folgenden Code für den Knoten zu tun istWie verschiebe ich bestimmte Knoten zum ersten Index?

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; 

i das Verfahren dann eingestellt werden können, überprüfen, ob Knoten ist gleich zum Beispiel "Martin"

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

Vielleicht möchten Sie Ihren Code ein wenig besser formatieren, damit die Leute ihn besser lesen können. –

+0

@RudyVelthuis Code formatiert – MartinLoanel

+0

Viel besser, danke. –

Antwort

4

Wie in einem coment erwähnt, verwenden MoveTo:

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