Componentes - fazendo drag and drop (arrastar e soltar) entre label edit e listbox |
Top Previous Next |
|
// drag-n-drop entre labels, edits e listboxes
----------------------------- unit ------------------------------
unit Unit1;
interface
uses Forms, Controls, StdCtrls, Classes;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; ListBox1: TListBox; ListBox2: TListBox; Label1: TLabel; Label2: TLabel; procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Edit1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure Edit1DragDrop(Sender, Source: TObject; X, Y: Integer); procedure Label1DragDrop(Sender, Source: TObject; X, Y: Integer); procedure ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Sender is TControl then (Sender as TControl).BeginDrag(True); end;
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept:= not (Source = Sender); end;
procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer); begin if Source is TEdit then TEdit(Sender).Text:=TEdit(Source).Text else if Source is tlabel then TEdit(Sender).Text:=tlabel(Source).caption else if Source is TListBox then TEdit(Sender).Text:=TListBox(Source).Items[TListBox(Source).ItemIndex] end;
procedure TForm1.Label1DragDrop(Sender, Source: TObject; X, Y: Integer); begin if Source is TEdit then TLabel(sender).Caption:= TEdit(Source).Text else if Source is TLabel then TLabel(sender).Caption := TLabel(source).caption else if Source is TListBox then TLabel(Sender).caption:=TListBox(Source).Items[TListBox(Source).ItemIndex] end;
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); begin if Source is TEdit then TListBox(sender).Items.Add(tedit(source).Text) else if Source is TLabel then TListBox(sender).Items.Add(TLabel(source).caption) else if Source is TListBox then if TListBox(Source).ItemIndex >=0 then TListBox(Sender).Items.Add(TListBox(Source).Items[TListBox(Source).ItemIndex]); end;
end.
------------------------------ form ----------------------------------
object Form1: TForm1 Caption = 'Form1' object Label1: TLabel Caption = 'Label1' OnDragDrop = Label1DragDrop OnDragOver = Edit1DragOver OnMouseDown = Edit1MouseDown end object Label2: TLabel Caption = 'Label2' OnDragDrop = Label1DragDrop OnDragOver = Edit1DragOver OnMouseDown = Edit1MouseDown end object Edit1: TEdit Text = 'Edit1' OnDragDrop = Edit1DragDrop OnDragOver = Edit1DragOver OnMouseDown = Edit1MouseDown end object Edit2: TEdit Text = 'Edit2' OnDragDrop = Edit1DragDrop OnDragOver = Edit1DragOver OnMouseDown = Edit1MouseDown end object ListBox1: TListBox OnDragDrop = ListBox1DragDrop OnDragOver = Edit1DragOver OnMouseDown = Edit1MouseDown end object ListBox2: TListBox OnDragDrop = ListBox1DragDrop OnDragOver = Edit1DragOver OnMouseDown = Edit1MouseDown end end. |