From 14492371ebf2d5b52dde4e71413cf39235c91c0f Mon Sep 17 00:00:00 2001 From: blikblum Date: Sun, 14 Oct 2012 20:49:09 +0000 Subject: [PATCH] demos: improve dragdrop example git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2554 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../branches/4.8/demos/dragdrop/fmain.lfm | 4 +-- .../branches/4.8/demos/dragdrop/fmain.pas | 31 +++++++++++-------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/components/virtualtreeview-new/branches/4.8/demos/dragdrop/fmain.lfm b/components/virtualtreeview-new/branches/4.8/demos/dragdrop/fmain.lfm index 73d187468..1a05dd278 100644 --- a/components/virtualtreeview-new/branches/4.8/demos/dragdrop/fmain.lfm +++ b/components/virtualtreeview-new/branches/4.8/demos/dragdrop/fmain.lfm @@ -7,7 +7,7 @@ object MainForm: TMainForm ClientHeight = 362 ClientWidth = 461 Position = poDesktopCenter - LCLVersion = '0.9.31' + LCLVersion = '1.1' object VirtualStringTree1: TVirtualStringTree Left = 8 Height = 315 @@ -43,7 +43,7 @@ object MainForm: TMainForm 'List Item 5' 'List Item 6' ) - ItemHeight = 23 + ItemHeight = 15 OnDragDrop = ListBox1DragDrop OnDragOver = ListBox1DragOver ScrollWidth = 190 diff --git a/components/virtualtreeview-new/branches/4.8/demos/dragdrop/fmain.pas b/components/virtualtreeview-new/branches/4.8/demos/dragdrop/fmain.pas index 729acd704..4dbcd8912 100644 --- a/components/virtualtreeview-new/branches/4.8/demos/dragdrop/fmain.pas +++ b/components/virtualtreeview-new/branches/4.8/demos/dragdrop/fmain.pas @@ -6,7 +6,7 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - VirtualTrees, FakeActiveX; + VirtualTrees, {$ifdef windows}ActiveX{$else}FakeActiveX{$endif}; type @@ -20,8 +20,7 @@ type State: TDragState; var Accept: Boolean); procedure VirtualStringTree1DragDrop(Sender: TBaseVirtualTree; Source: TObject; DataObject: IDataObject; Formats: TFormatArray; - Shift: TShiftState; const Pt: TPoint; var Effect: Integer; Mode: TDropMode - ); + Shift: TShiftState; const Pt: TPoint; var Effect: Integer; Mode: TDropMode); procedure VirtualStringTree1DragOver(Sender: TBaseVirtualTree; Source: TObject; Shift: TShiftState; State: TDragState; const Pt: TPoint; Mode: TDropMode; var Effect: Integer; var Accept: Boolean); @@ -91,24 +90,30 @@ procedure TMainForm.VirtualStringTree1DragDrop(Sender: TBaseVirtualTree; Shift: TShiftState; const Pt: TPoint; var Effect: Integer; Mode: TDropMode); var Node: PVirtualNode; - S: String; + NodeTitle: String; begin + case Mode of + dmAbove: Node := Sender.InsertNode(Sender.DropTargetNode, amInsertBefore); + dmBelow: Node := Sender.InsertNode(Sender.DropTargetNode, amInsertAfter); + dmNowhere: Node := Sender.InsertNode(Sender.DropTargetNode, amNoWhere); + else + Node := Sender.AddChild(Sender.DropTargetNode); + end; + Sender.ValidateNode(Node, True); if Source = ListBox1 then begin - Node := Sender.AddChild(Sender.DropTargetNode); if ListBox1.ItemIndex = -1 then - S := 'Unknow Item from List' + NodeTitle := 'Unknow Item from List' else - S := ListBox1.Items[ListBox1.ItemIndex]; - Sender.ValidateNode(Node, True); - PNodeData(Sender.GetNodeData(Node))^.Title := S; + NodeTitle := ListBox1.Items[ListBox1.ItemIndex]; end else if Source = Sender then begin - Node := Sender.AddChild(Sender.DropTargetNode); - Sender.ValidateNode(Node, True); - PNodeData(Sender.GetNodeData(Node))^.Title := VirtualStringTree1.Text[Sender.FocusedNode, 0]; - end; + NodeTitle := VirtualStringTree1.Text[Sender.FocusedNode, 0]; + end + else + NodeTitle := 'Unknow Source'; + PNodeData(Sender.GetNodeData(Node))^.Title := NodeTitle; end; procedure TMainForm.VirtualStringTree1DragOver(Sender: TBaseVirtualTree;