demos: improve dragdrop example

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2554 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
blikblum
2012-10-14 20:49:09 +00:00
parent 88138f32aa
commit 14492371eb
2 changed files with 20 additions and 15 deletions

View File

@@ -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

View File

@@ -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;