Componentes.Terceros.Mustan.../official/1.7.0/EasyListview/Demos/DragDrop/VCL DragDrop/Unit1.pas
david 778b05bf9f Importación inicial
- Mustangpeak Common Library - 1.7.0
  - EasyListview - 1.7.0

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.Mustangpeak@2 60b41242-d4b9-2247-b156-4ccd40706241
2007-09-11 08:33:06 +00:00

229 lines
6.6 KiB
ObjectPascal

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, ActiveX, ImgList, MPCommonObjects, EasyListview;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
LabelDragItem: TLabel;
LabelDraggingOverItem: TLabel;
LabelDragDropItem: TLabel;
LabelDragDroppedItem: TLabel;
Splitter1: TSplitter;
ImageList1: TImageList;
Label3: TLabel;
LabelTargetCC: TLabel;
Label4: TLabel;
LabelMousePosX: TLabel;
LabelMousePosY: TLabel;
Label5: TLabel;
Label6: TLabel;
ELV1: TEasyListview;
ELV2: TEasyListview;
Splitter2: TSplitter;
cbViews: TComboBox;
CheckBoxMultiSelect: TCheckBox;
CheckBoxHeader: TCheckBox;
CheckBoxEnable: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure ELV1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ELV1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure ELV2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure ELV2StartDrag(Sender: TObject; var DragObject: TDragObject);
procedure ELV1StartDrag(Sender: TObject; var DragObject: TDragObject);
procedure ELV2DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure cbViewsChange(Sender: TObject);
procedure CheckBoxMultiSelectClick(Sender: TObject);
procedure CheckBoxHeaderClick(Sender: TObject);
procedure CheckBoxEnableClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
Item: TEasyCollectionItem;
Group: TEasyCollectionItem;
begin
cbViews.ItemIndex := 0;
ELV1.BeginUpdate();
ELV2.BeginUpdate();
Group := ELV1.Groups.Add;
Group.Caption := 'Group 1';
for i := 0 to 99 do
begin
Item := ELV1.Groups[0].Items.Add;
Item.Caption := 'Item: ' + IntToStr(Item.Index);
Item.ImageIndex := 0;
end;
Group := ELV2.Groups.Add;
Group.Caption := 'Group 2';
for i := 0 to 99 do
begin
Item := ELV2.Groups[0].Items.Add;;
Item.Caption := 'Item: ' + IntToStr(Item.Index);
Item.ImageIndex := 1;
end;
ELV1.EndUpdate();
ELV2.EndUpdate();
Mouse.DragImmediate := False;
end;
procedure TForm1.ELV1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
// Update the UI
if Assigned(ELV1.DragManager.DropTarget) then
LabelDragDroppedItem.Caption := IntToStr(ELV1.DragManager.DropTarget.Index)
else
LabelDragDroppedItem.Caption := '[Background]';
LabelTargetCC.Caption := '[None]';
end;
procedure TForm1.ELV1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
case State of
dsDragMove:
begin
// Update the UI
if Assigned(ELV1.DragManager.DropTarget) then
LabelDraggingOverItem.Caption := IntToStr(ELV1.DragManager.DropTarget.Index)
else
LabelDraggingOverItem.Caption := '-1';
LabelDragDroppedItem.Caption := '-1';
LabelTargetCC.Caption := '1';
LabelMousePosX.Caption := IntToStr(X);
LabelMousePosY.Caption := IntToStr(Y);
LabelDraggingOverItem.Update;
end;
dsDragLeave:
begin
LabelTargetCC.Caption := '[None]';
LabelMousePosX.Caption := '-1';
LabelMousePosY.Caption := '-1';
end;
dsDragEnter:
begin
end
end;
end;
procedure TForm1.ELV2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
case State of
dsDragMove:
begin
// Update the UI
if Assigned(ELV2.DragManager.DropTarget) then
LabelDraggingOverItem.Caption := IntToStr(ELV2.DragManager.DropTarget.Index)
else
LabelDraggingOverItem.Caption := '-1';
LabelDragDroppedItem.Caption := '-1';
LabelTargetCC.Caption := '2';
LabelMousePosX.Caption := IntToStr(X);
LabelMousePosY.Caption := IntToStr(Y);
LabelDraggingOverItem.Update;
end;
dsDragLeave:
begin
LabelTargetCC.Caption := '[None]';
LabelMousePosX.Caption := '-1';
LabelMousePosY.Caption := '-1';
end;
dsDragEnter:
begin
end
end;
end;
procedure TForm1.ELV2StartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
// Update the UI
if Assigned(ELV2.DragManager.DragItem) then
LabelDragItem.Caption := IntToStr(ELV2.DragManager.DragItem.Index)
else
LabelDraggingOverItem.Caption := '-1';
LabelDragDroppedItem.Caption := IntToStr(-1);
LabelDragItem.Update;
LabelDragDroppedItem.Update;
end;
procedure TForm1.ELV1StartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
// Update the UI
if Assigned(ELV1.DragManager.DragItem) then
LabelDragItem.Caption := IntToStr(ELV1.DragManager.DragItem.Index)
else
LabelDraggingOverItem.Caption := '-1';
LabelDragDroppedItem.Caption := IntToStr(-1);
LabelDragItem.Update;
LabelDragDroppedItem.Update;
end;
procedure TForm1.ELV2DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
// Update the UI
if Assigned(ELV2.DragManager.DropTarget) then
LabelDragDroppedItem.Caption := IntToStr(ELV2.DragManager.DropTarget.Index)
else
LabelDragDroppedItem.Caption := '[Background]';
LabelTargetCC.Caption := '[None]';
end;
procedure TForm1.cbViewsChange(Sender: TObject);
begin
ELV1.View := TEasyListStyle(cbViews.ItemIndex);
ELV2.View := TEasyListStyle(cbViews.ItemIndex);
end;
procedure TForm1.CheckBoxMultiSelectClick(Sender: TObject);
begin
ELV1.Selection.MultiSelect := CheckBoxMultiSelect.Checked;
ELV1.Selection.EnableDragSelect := CheckBoxMultiSelect.Checked;
ELV2.Selection.MultiSelect := CheckBoxMultiSelect.Checked;
ELV2.Selection.EnableDragSelect := CheckBoxMultiSelect.Checked;
end;
procedure TForm1.CheckBoxHeaderClick(Sender: TObject);
begin
ELV1.Header.Visible := CheckBoxHeader.Checked;
ELV2.Header.Visible := CheckBoxHeader.Checked;
end;
procedure TForm1.CheckBoxEnableClick(Sender: TObject);
begin
ELV1.DragManager.Enabled := CheckBoxEnable.Checked;
ELV2.DragManager.Enabled := CheckBoxEnable.Checked
end;
procedure TForm1.FormShow(Sender: TObject);
begin
FillStringsWithEasyListStyles(cbViews.Items);
cbViews.ItemIndex := Ord(ELV1.View);
end;
end.