//Первый способ
При нажатии по форме:
Код:
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;
Выбирай какой способ тебе нравится больше...