есть два варианта. вариант первый -
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure WmHitTest (var Msg: TWMNCHITTEST); message WM_NCHITTEST;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WmHitTest(var Msg: TWMNCHITTEST);
begin
Msg.Result := HTCAPTION;
end;
это вариант хренов тем, что надо делать нормальный анализ места тыка (иначе у тебя не нажмётся ни одна кнопка на форме - всё это будет восприниматься как тыканье по Caption формы).
в этом плане я предпочитаю классический вариант: по нажатию кнопки мыщи запоминать координаты курсора, а при движении с нажатой кнопкой вычислять дельту и соотв. двигать форму. этот вариант также лучше и тем, что позволяет прикрутить это к любому кеомпоненту на форме.