Mega Code Archive

 
Categories / Delphi / Examples
 

How to move any visible component at runtime

This code will move any control at runtime, even non TWinControl descendants. Make sure ExtCtrls is in your USES clause. Then set the OnMouseDown event of your controls to the following code. procedure TForm1.MoveControl(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var TempPanel : TPanel; Control : TControl; begin //Release the MOUSEDOWN status ReleaseCapture; if Sender is TWinControl then //Component has a Handle, move it directly TWincontrol(Sender).Perform(WM_SYSCOMMAND,$f019,0) else //Component has no handle, move it in a TPanel try Control := TControl(Sender); TempPanel := TPanel.Create(Self); with TempPanel do begin //Replace component with TempPanel Caption := ''; BevelOuter := bvNone; SetBounds(Control.Left,Control.Top, Control.Width,Control.Height); Parent := Control.Parent; //Put our control in the TempPanel Control.Parent := TempPanel; //Move TempPanel with the control inside it Perform(WM_SYSCOMMAND,$F019,0); //Put the component where the panel was dropped Control.Parent := Parent; Control.Left := Left; Control.Top := Top; end; finally TempPanel.Free; end; end;