Prova ad aggiungere un metodo di ricezione messaggi al form in questo modo:
codice:
type
  TForm1 = class(TForm)
  private
  protected
    procedure WndProc(var Msg: TMessage); override;
  public
  end;
Nell'implementazione del metodo, scrivi
codice:
procedure TForm1.WndProc(var Msg: TMessage);
begin
  inherited WndProc(Msg);
  with Msg do
    if (Msg = WM_NCHitTest) and (Result = htClient) then
      Result := htCaption;
end;
In questo modo, facendo clic con il mouse e muovendolo nell'area client del form, otteniamo il trascinamento del form. Ovviamente, non funziona quando trasciniamo il mouse all'interno di altri controlli.

Ciao!