![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Код:
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
|
||||
|
||||
|
Это значит что тот, на кого нажимают - имидж
|
|
#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; |
|
#10
|
||||
|
||||
|
Цитата:
|
|
#11
|
||||
|
||||
|
Я просто готовый кусок кода брал, а там идёт перехлёстка с параметрами других компонентов, отсюда такое "явное" обращение
![]() |
|
#12
|
||||
|
||||
|
Вот потому и
Код:
if move and (Sender is TImage) then |