AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)
Thema durchsuchen
Ansicht
Themen-Optionen

Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

Ein Thema von oki · begonnen am 6. Apr 2009 · letzter Beitrag vom 9. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 6. Apr 2009, 21:51
Hi Leute,

entweder es ist zu spät oder ich weis auch nicht. Ich möchte die Position eines Nodes im Zweig eines Baumes eine Position nach oben oder nach unten verschieben. Also ein klassisches MoveUp/MoveDown. Die Hilfe war fruchtlos, die Suche in der DP auch und in meinem Gehirn gleich ganz. Kann mir mal einer die Erleuchtung bringen?

Dank und Gruß oki
42
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 7. Apr 2009, 05:47
Hallo

ungetestet:
z.B den nächsten Node ermitteln mit VST.GetNext(..)
Dann VST.MoveTo(...) anwenden.
Thomas
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 7. Apr 2009, 09:29
Hi Toms,

nach MoveTo hatte ich gesucht, leider nur im pdf zum VTree. Ich schau noch mal nach. Da muss mir dann was entgangen sein. Naja, war gestern auch nicht mehr sehr früh am Tag. Kann das leider erst heute abend machen. Melde mich dann noch mal mit den Ergebnissen.

Dank für die Antwort und Gruß

oki
42
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 7. Apr 2009, 10:19
Hi,

ich habs mal so versucht, aber in dem Fall wird mir die erste Node immer an die letzte Stelle verschoben. Warum nur?

Delphi-Quellcode:
procedure TForm1.btn_down_itemClick(Sender: TObject);
var
  Node: PVirtualNode;
begin
  Node:=VST.FocusedNode;

  if Node <> nil then
    begin
      vst.MoveTo(Node,vst,amInsertAfter,false);
    end;
    vst.Selected[vst.GetFirst] := true; //selektiere die erste node
    list_menu_itemsClick(self); //führe code beim selektieren aus
end;
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 7. Apr 2009, 11:24
Also ich habe den Code nochmal geändert.
Mit dem Update der Komponente (von März 2009) und dem geänderten Code, gehts nun.
Wenn´s jemandem helfen sollte, freuts mich!

Delphi-Quellcode:
//bewege node 1 nach unten
procedure TForm1.btn_down_itemClick(Sender: TObject);
var
  Node: PVirtualNode;
begin
  Node:=VST.FocusedNode;

  if Node <> nil then
    begin
      vst.MoveTo(Node,vst.GetNext(Node),amInsertAfter,false);
    end;
    vst.Selected[Node] := true; //selektiere das node gleich noch
    list_menu_itemsClick(SELF); //führe update für selektion aus, falls nötig
end;

//bewege node 1 nach oben
procedure TForm1.btn_up_itemClick(Sender: TObject);
var
  Node: PVirtualNode;
begin
  Node:=VST.FocusedNode;

  if Node <> nil then
    begin
      vst.MoveTo(Node,vst.GetPrevious(Node),amInsertBefore,false);
    end;
    vst.Selected[node] := true; //selektiere das node gleich noch
    list_menu_itemsClick(SELF); //führe update für selektion aus, falls nötig
end;
Danke
Tom
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 7. Apr 2009, 18:54
Hi torud,

auch dir Dank für die Hilfe. Ich hab das pdf noch mal durchstöbert. Dabei ist mir aufgefallen, dass ich MoveTo wirklich übersehen hatte. Keine Ahnung warum.
Dein erster Code ist schon korrekt. MoveTo gibt es in überladener Version mit dem Aufruf für die Angabe eines Knotens sowie eines VTree als Ziel.
Dieser Code:
  vst.MoveTo(Node,vst,amInsertAfter,false); verschiebt den Node in das VTree vst an die letzte (amInsertAfter) Stelle (wobei vst der eigene Tree ist). Es wird also die Methode:
procedure MoveTo(Node: PVirtualNode; Tree: TBaseVirtualTree; Mode: TVTNodeAttachMode; ChildrenOnly: Boolean); overload; verwendet.

In deinem zweiten Beispiel rufst du wie folgt auf:
  vst.MoveTo(Node,vst.GetPrevious(Node),amInsertBefore,false); Da wird dann diese Methode verwendet:
procedure MoveTo(Source: PVirtualNode; Target: PVirtualNode; Mode: TVTNodeAttachMode; ChildrenOnly: Boolean); overload; Ich denke mal, da steckt das ganze Geheimnis. Ob vor dem Update die Methode überladen war kann ich aber auch nicht sagen. Ich denke mal eher ja.

Ich hatte ganz vergessen meine Frage als beantwortet zu kennzeichen. Das werd ich jetzt nachholen. Besten Dank an euch beide,

bis die Tage

oki
42
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 7. Apr 2009, 19:46
Servus Oki,

danke für Dein Feedback. Auch vor dem Update war die Methode überladen, aber die von mir gelisteten Codes verschoben die Node IMMER an letzte respektive letzte Stelle. Naja und das wollte ich nicht. Seit dem Update gehts aber einwandfrei.
Danke
Tom
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 7. Apr 2009, 20:21
Ah, gut zu wissen. Welche Version war denn bei dir die alte und welche ist die neue? Nicht, dass ich in die selbe Falle tappe.

Gruß oki
42
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 8. Apr 2009, 07:38
Servus,

also die aktuelle Version ist die 4.8.5.
Kann sein, dass ich vorher die 4.7.0 installiert hatte.

Hier noch schnell der Link http://www.soft-gems.net
Danke
Tom
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Virtual TreeView Nodes vertauschen (MoveUp/MoveDown)

  Alt 8. Apr 2009, 17:46
Hi torud,

habs bei mir getestet und läuft anstandslos.

Dank für die Hilfe und Gruß

oki
42
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz