@jfheins: warum immer gleich Fremdkomponenten verwenden?
@mikegu: als erstes kann man den Quellcode, den man hier postet per "Delphi-Code"-Button formatieren, so das dieser dann für die Leser schön lesbar ist.
Delphi-Quellcode:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button=mbleft Then
Panel1.BeginDrag(false) ;
end;
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button=mbleft Then
Button1.BeginDrag(false) ;
end;
procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button=mbleft then
Panel2.BeginDrag(false);
end;
procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If button=mbleft then
Label1.BeginDrag(True)
end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
// beim Droppen müssen wir wie beim Ziehen der Komponenten
// den Typ der Komponente beachten
// (Typ TPanel, TButton und TLabel)
if Source is TPanel then
begin
TPanel(Source).Left := x;
TPanel(Source).Top := y;
TPanel(Source).Parent := TWinControl(Sender);
end else if Source is TButton then
begin
TButton(Source).Left := x;
TButton(Source).Top := y;
TButton(Source).Parent := TWinControl(Sender);
end else if Source is TLabel then
begin
TLabel(Source).Left := x;
TLabel(Source).Top := y;
TLabel(Source).Parent := TWinControl(Sender);
end;
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
// wir erlauben das Ziehen von Komponenten
// vom Typ TPanel, TButton und TLabel
accept := (Source is TPanel) or
(Source is TLabel) or
(Source is TButton);
end;
So sollte das ganze funktionieren,
die wesentlichen Änderungen kannst du den Kommentaren im Quellcode entnehmen