A: This will work for a TPanel.
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
(sender as TWinControl).perform(WM_SysCommand, SC_DragMove,
0);
end;