19th
Июл

Перемещение TImage по форме. Как это сделать?

Posted by Chas under Топик-обзор

dmitriegorovih:

Значит у меня Delphi 7
кидаем на форму image1 и кнопку, чтоб создавались image(ы)
во “всеобщий var” пишем следующие

var
  x2,y2,n:integer;
  nagata:boolean;

в обработчике onmousedown пишем следующие
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
begin
   nagata:=true;
  x2:=x;
  y2:=y;
end;

в обработчике onMouseMove пишем следующие
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
   Y: Integer);
begin
  if nagata=true then begin
    if xx2 then begin
      Timage(sender).Left:=Timage(sender).Left+(x-x2)
    end;
    if yy2 then begin
      Timage(sender).Top:=Timage(sender).Top+(y-y2)
    end;
  end;
end;

в обработчике onMouseUp пишем следующие
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
begin
  nagata:=false;
end;

по нажатию кнопки пишем следующие
procedure TForm1.Button1Click(Sender: TObject);
Var K:Timage;
Begin
  K:=Timage.create(self);
  k.parent:=self;
  k.picture:=image1.picture;
  k.onMouseMove:=image1.onMouseMove;
  k.onMouseDown:=image1. onMouseDown;
  k.onMouseUp:=image1.onMouseUp;
  k.name:=’Image_’+inttostr(n);
  inc(n);
end;

Ещё один способ:

Кидаем на форму TPanel На нее кидаем TImage, и расстягиваем Image на AlClient чтоб оно заполнило всю панель.
Далее в в обработчике зажатия мышки для Image пишем:

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
const Sc_dragmove = $F012;
begin
   ReleaseCapture;
   Panel1.Perform(WM_SYSCOMMAND, Sc_dragmove, 0);
end;

Тема на форуме

Похожие статьи