|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
|  | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Перемещение массива Image Код: unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;
type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
        procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
var
  x0,y0:integer;
  move:boolean;
   x1,y1:integer;
  move1:boolean;
{$R *.dfm}
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
          //проверяем нажата ли левая кнопка мыши
   if button<>mbLeft then move:=false
   else begin
      move1:=true;
      x1:=x; //запоминаем координату x
      y1:=y; //запоминаем координату y
   end;
end;
procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if move1 then
 begin
  image2.SetBounds(image2.Left+x-x0,image2.Top+y-y0,image2.width,image2.height);
 end;
end;
procedure TForm1.Image2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  move1:=false;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
          //проверяем нажата ли левая кнопка мыши
   if button<>mbLeft then move:=false
   else begin
      move:=true;
      x0:=x; //запоминаем координату x
      y0:=y; //запоминаем координату y
   end;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if move then
 begin
  image1.SetBounds(image1.Left+x-x0,image1.Top+y-y0,image1.width,image1.height);
 end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  move:=false;
end;
end. | 
| 
			 
			#2  
			
			
			
			
		 | ||||
| 
 | ||||
|   Назначь всем Image одну процедуру OnMouseMove, OnMouseDown, OnMouseUp. Всем Image выставь свойство Tag по-нарастанию (1, 2, 3, ...) | 
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   как выставить это свойство? и будет ли оно иметь параметр текущего image? | 
| 
			 
			#4  
			
			
			
			
		 | ||||
| 
 | ||||
|   Сначала объявить вот это Код: procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if move then
  begin
    (Sender as TImage).SetBounds(
    (Sender as TImage).Left+X-X0,
    (Sender as TImage).Top+Y-Y0,
    (Sender as TImage).width,
    (Sender as TImage).height);
  end;
end;Код: OnMouseDown = Image2MouseDown; OnMouseMove = Image2MouseMove; OnMouseUp = Image2MouseUp; | 
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
|  
Pilyla (07.05.2013)
 | ||
| 
			 
			#5  
			
			
			
			
		 | |||
| 
 | |||
|   скажите, а что обозначает sender as image | 
| 
			 
			#6  
			
			
			
			
		 | ||||
| 
 | ||||
|   Объект переданный в событие приравниваем к TImage. | 
| 
			 
			#7  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 Код: procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,   Y: Integer); 
begin
  if move and (Sender is TImage) then
    with (Sender as TImage) do
      SetBounds(Left + X - X0, Top + Y - Y0, Width, Height); 
end; | 
| 
			 
			#8  
			
			
			
			
		 | ||||
| 
 | ||||
|   Я просто готовый кусок кода брал, а там идёт перехлёстка с параметрами других компонентов, отсюда такое "явное" обращение   | 
| 
			 
			#9  
			
			
			
			
		 | ||||
| 
 | ||||
|   Это значит что тот, на кого нажимают - имидж | 
| 
			 
			#10  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 | 
| 
			 
			#11  
			
			
			
			
		 | |||
| 
 | |||
|   большое спасибо! получилось!))) |