Thema: Delphi Drag_Drop-Beispiel

Einzelnen Beitrag anzeigen

Spargeltarzan
(Gast)

n/a Beiträge
 
#2

Re: Drag_Drop-Beispiel

  Alt 22. Aug 2009, 03:07
Hallo zusammen

Ich hab mit einem ersten Einstieg begonnen, vielleicht können wir diesen Einstieg als Basis-Diskussion nehmen und daran weiterentwickeln:

Meine Programm zum Verschieben von VCL's: (Sreenshot des Formulars beigefügt)

unit MoveQuiz02;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Shellapi, DsgnBtns, mdMsgCmp, mdDrop, TxtRel;

type
TMain = class(TForm)
Label1: TLabel;
Panel1: TPanel;
Label2: TLabel;
Panel2: TPanel;
Panel3: TPanel;
TextRelief1: TTextRelief;
TextRelief2: TTextRelief;
TextRelief3: TTextRelief;
TextRelief4: TTextRelief;
TextRelief5: TTextRelief;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private-Deklarationen }
OLDX:Integer;
OLDY:Integer;
MOVE:BOOLEAN;
public
{ Public-Deklarationen }
end;

var
Main: TMain;

implementation

{$R *.DFM}

procedure TMain.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Panel1.Perform(WM_LBUTTONUP,0,0);
Panel1.Perform(WM_SysCommand,SC_MOVE+2,2);
end;

procedure TMain.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button = MBLEFT then
begin

OLDX:=X;
OLDY:=Y;
MOVE:=TRUE;
end;
end;

procedure TMain.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Var R:TRect;
begin
TControl(Sender).Cursor:=crdrag;
if MOVE then
begin
//R:=TControl(sender).Boundsrect;
//offsetrect(R,(X-OLDX),(Y-OLDY));
//TControl(sender).SetBounds(R.Left,R.Top,R.Right-R.Left,R.bottom-R.Top);
//TControl(sender).SetBounds(TControl(sender).Left+X-OLDX,TControl(sender).Top+Y-OLDY,
// TControl(sender).width,TControl(sender).height);
TControl(sender).Left:=TControl(sender).Left+X-OLDX;
TControl(sender).Top:=TControl(sender).Top+Y-OLDY;
end;
end;

procedure TMain.FormCreate(Sender: TObject);
begin
MOVE:=FALSE;
Panel2.OnMouseDown:=Label1MouseDown;
Panel2.OnMouseMove:=Label1MouseMove;
Panel2.OnMouseUp:=Label1MouseUp;
end;

procedure TMain.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MOVE:=FALSE;
TControl(Sender).Cursor:=crdefault;
end;


end.
Angehängte Grafiken
Dateityp: bmp movequiz_554.bmp (844,7 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat