|
|
Регистрация | << Правила форума >> | 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, ...)
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
||||
|
||||
Это значит что тот, на кого нажимают - имидж
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#8
|
|||
|
|||
большое спасибо! получилось!)))
|
#9
|
||||
|
||||
Цитата:
Код:
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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#11
|
||||
|
||||
Я просто готовый кусок кода брал, а там идёт перехлёстка с параметрами других компонентов, отсюда такое "явное" обращение
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#12
|
||||
|
||||
Вот потому и
Код:
if move and (Sender is TImage) then Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |