1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure PanelDragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Accept: Boolean);
procedure PanelDragDrop(Sender: TObject; const Data: TDragObject; const Point: TPointF);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
begin
with TPanel.Create(Self) do
begin
Parent := Self;
Position.X := 8;
Position.Y := 8;
Width := 200;
Height := 100;
OnDragOver := PanelDragOver;
OnDragDrop := PanelDragDrop;
end;
with TImageControl.Create(Self)do
begin
Parent := Self;
Position.X := 216;
Position.Y := 8;
Width := 40;
Height := 40;
DragMode := dmAutomatic;
Bitmap.LoadFromFile('monbitmap.jpg'); // à modifier !
end;
end;
procedure TForm1.PanelDragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Accept: Boolean);
begin
Accept := True; // à améliorer car actuellement aucun contrôle sur la validité de l'opération
end;
procedure TForm1.PanelDragDrop(Sender: TObject; const Data: TDragObject; const Point: TPointF);
var
Panel: TPanel;
Image: TImageControl;
begin
// On est bien sur le panel et c'est bien une image ?
if (Sender is TPanel) and (Data.Source is TImageControl) then
begin
Panel := TPanel(Sender);
Image := TImageControl(Data.Source);
Image.Parent := Panel;
Image.Position.X := Point.X - Image.Width / 2;
Image.Position.Y := Point.Y - Image.Height / 2;
end;
end;
end. |