Объявляешь перменные
Код:
var
x0, y0: integer;
move: boolean;
Теперь напишем обработчик OnMouseDown для картинки:
Код:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
begin
Shift: TShiftState; X, Y: Integer);
move:=true;
x0:=x; //запоминаем начальные координаты
y0:=y; //запоминаем начальные координаты
end;
Теперь напишем обработчик OnMouseMove длякартинки:
Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if move then
begin
image1.Left:=image1.Left+x-x0; // Изменяем позицию левого края
image1.Top:=image1.Top+y-y0; // Изменяем позицию верхнего края
end;
end;
Ну и наконец обработчик OnMouseUp для картинки будет таким:
Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
move := false;
end;
Но такой же алгоритм перемещения можно реализовать немного красивее. У некоторых компонентов, в том числе и Image, есть такая классная процедура SetBounds(Left,Top,Width,Height), которая может изменять сразу все четыре параметра. Таким образом событие OnMouseMove можно изменить так:
Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if move then
image1.SetBounds(image1.Left+x-x0, image1.Top+y-y0,
image1.width, image1.height);
end;