//Первый способ
При нажатии по форме:
	Код:
	procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
SC_DragMove=$F012;
begin
ReleaseCapture;
Form1.Perform(WM_SysCommand, SC_DragMove, 0);
end;
 При нажатии по изображению:
	Код:
	procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
SC_DragMove=$F012;
begin
ReleaseCapture;
Form1.Perform(WM_SysCommand, SC_DragMove, 0);
end;
 Обьяснение:
Ты создаёшь обработчик событий OnMouseKeyDown на елементе, при нажатии на который ты хочешь, чтобы форма двигалась. Потом прописываешь const перед begin и прописываешь:
После между begin и end прописываешь это
	Код:
	ReleaseCapture;
Form1.Perform(WM_SysCommand, SC_DragMove, 0);
 В результате получаешь передвижение формы при нажатии на любою точку нажного элемента формы...
//Второй способ
При нажатии на форму:
Обьявляем глобальные переменные:
	Код:
	var
Hit:boolean;
_x,_y:integer;
 Потом создаём на форме обработчик событий OnCreate:
	Код:
	procedure TForm1.FormCreate(Sender: TObject);
begin
Hit:=false;
end;
 Потом создаём на форме обработчик событий OnMouseDown:
	Код:
	procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
begin
Hit:=true;
_x:=X; _y:=Y;
end;
 Потом создаём на форме обработчик событий OnMouseMove:
	Код:
	procedure TForm1.FormMouseMove(Sender: TObject; 
          Shift: TShiftState; X, Y: Integer);
begin
if Hit then
begin
left:=left+(x-_x);
top:=top+(y-_y);
end;
end;
 Потом создаём на форме обработчик событий OnMouseUp:
	Код:
	procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; 
         Shift: TShiftState; X, Y: Integer);
begin
Hit:=false;
end;
 Выбирай какой способ тебе нравится больше...