Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Nodes verschieben im VirtualTreeView (https://www.delphipraxis.net/64969-nodes-verschieben-im-virtualtreeview.html)

marlem 13. Mär 2006 15:18

Re: Nodes verschieben im VirtualTreeView
 
ich habe getrickst:

Delphi-Quellcode:
procedure TFormMain.TreeViewBaumClick(Sender: TObject);
var
Node: PVirtualNode;
begin
Node:=TreeViewBaum.FocusedNode;
SourceNode := Node;
end;

procedure TFormMain.TreeViewBaumDragOver(Sender: TBaseVirtualTree;
  Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint;
  Mode: TDropMode; var Effect: Integer; var Accept: Boolean);
begin
Accept := true;
end;

procedure TFormMain.TreeViewBaumDragDrop(Sender: TBaseVirtualTree;
  Source: TObject; DataObject: IDataObject; Formats: TFormatArray;
  Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);
var
  Data: PTreeData;
  Dataziel : TTreeData;
begin
Data:=TreeViewBaum.GetNodeData(sourcenode);
//Mit dem Trick kann man PTreedata in TTreedata konvertieren
Dataziel.FCaption := Data.FCaption;
//Zuletzt markierter Knoten an Mausposition hinzufügen
AddNode(TreeViewBaum,Sender.DropTargetNode,Dataziel);
TreeViewBaum.DeleteNode(SourceNode);
TreeViewBaum.Invalidate;
end;
so funktioniert es!

ein problem habe ich noch.
der "verschobene" node ist nicht sofort "anklickbar"!
weiß jemand warum?

habe noch ein problem:
die unterknoten werden nicht mit verschoben.
hat jemand ne idee wie man das hinbekommt?

marlem 15. Mär 2006 09:16

Re: Nodes verschieben im VirtualTreeView
 
ohje! manchmal ist die lösung so einfach:

Delphi-Quellcode:
procedure TFormMain.TreeViewBaumDragOver(Sender: TBaseVirtualTree;
  Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint;
  Mode: TDropMode; var Effect: Integer; var Accept: Boolean);
begin
Accept := true;
end;

procedure TFormMain.TreeViewBaumDragDrop(Sender: TBaseVirtualTree;
  Source: TObject; DataObject: IDataObject; Formats: TFormatArray;
  Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);
var
  WSourceNode,WTargetNodeUr : PVirtualNode;
begin
(* Eigenschaften setzen für drag and drop:
   DragMode = dmAutomatic
   DragType = dtVCL
*)

WSourceNode := SourceNode;
WTargetNodeUr := Sender.DropTargetNode;
TreeViewBaum.MoveTo(WSourceNode,WTargetNodeUr,amAddChildLast,false);
end;
funzt! :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz