Sådan flytter du nogen synlige komponent Runtime

Denne kode vil flytte nogen kontrol på runtime, selv ikke TwinControl efterkommere.

Sørg ExtCtrls er i din BRUG klausul.
Indstil derefter OnMouseDown tilfælde af din kontrol til følgende kode.

procedure TForm1.MoveControl (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: heltal);
Var
TempPanel: TPanel;
Kontrol: TControl;
begynde
// Slip mouseDown status
ReleaseCapture;
hvis afsender er TwinControl derefter
// Component har et håndtag, flytte den direkte
TwinControl (Sender) .Udfør (WM_SYSCOMMAND, $ f019,0)
andet
// Komponent har ingen håndtag, flytte den i en TPanel
prøve
Kontrol: = TControl (afsender);
TempPanel: = TPanel.Create (selv-);
med TempPanel do
begynde
// Erstat komponent med TempPanel
Billedtekst: = '';
BevelOuter: = bvNone;
SetBounds (Control.Left, Control.Top,

Control.Width, Control.Height);
Parent: = Control.Parent;

// Sæt vores kontrol i TempPanel
Control.Parent: = TempPanel;

// Flyt TempPanel med kontrol inde i det
Udfør (WM_SYSCOMMAND, $ F019,0);

// Sæt komponent hvor panelet blev droppet
Control.Parent: = Parent;
Control.Left: = Venstre;
Control.Top: = Top;
ende;
endelig
TempPanel.Free;
ende;
ende;