Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

Перетащить картинку...   Найти похожие ветки 

 
Expell ©   (2007-03-07 06:35) [0]

Подскажите как реализовать, чтобы в run-time мышкой можно перетаскивать объект, в данном случае Image.

Просто в Image загружаю рисунок, пытаюсь переместить - ... не выходит:(.

Нашел как кнопки перетаскивать, а вот IQ не хватает для image сделать.

Будьте любезны, подскажите..


 
PZ   (2007-03-07 07:47) [1]

Ну, например, используя MouseDown, MouseMove, MouseUp. А как Вы пытались переместить?


 
Elen ©   (2007-03-07 07:49) [2]

Не вопрос :

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, jpeg, ExtCtrls;

type
 TForm1 = class(TForm)
   Image1: TImage;
   procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
   procedure Image1DragOver(Sender, Source: TObject; X, Y: Integer;
     State: TDragState; var Accept: Boolean);
   procedure Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
   procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
 public   tp:tpoint;
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses Types;

{$R *.dfm}

procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
caption:="ss";
end;

procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
var t:Tpoint;
begin
t:=Form1.ScreenToClient(Mouse.CursorPos);
caption:=inttostr(t.x);
Image1.Left:=t.X-tp.x;
Image1.Top:=t.Y-tp.Y;
end;

procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
tag:=0;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
  tp.X:=x;tp.Y:=y;
  Image1.BeginDrag(true);
end;

end.


Разберешся, или пояснить?


 
eXPell ©   (2007-03-07 07:57) [3]


> PZ   (07.03.07 07:47) [1]

для кнопки эти события работают великолепно, а вот для картинки - ... неа.
Для рисунка вариант предложенный Elen © более подходящий:)

ЗЫ. 2Elen ©пояснять не надо, буду разбираться самостоятельно, а если будут вопросы - ожидайте на первом канале:)


 
eXPell ©   (2007-03-09 08:22) [4]

Ну никак не могу сообразить как ограничить перетаскивание картинки((.

Есть image1 и image2. По первому я перетаскиваю второй. Если количество пикселей(если я правильно понимаю) больше числа N, то перетаскивание останавливается.

вот такой обработчик(вроде бы ограничивает, но выбивает ошибку):
procedure TForm1.Image2DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
var
t:Tpoint;
nx,ny,ky,kx:Tpoint;
begin
 nx.X:=tt.X;
 ny.Y:=tt.Y;
 t:=image1.ScreenToClient(Mouse.CursorPos);
 caption:=inttostr(t.x);
 Image2.Left:=t.X-tp.x;
 Image2.Top:=t.Y-tp.Y;
 kx.X:=Image2.Left;
 ky.Y:=Image2.Top;
 if (kx.X-nx.X>50) then
 image2.EndDrag(true);
 end;

объясните что ни так?



Страницы: 1 вся ветка

Текущий архив: 2007.04.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.084 c
1-1170449595
Officeman
2007-02-02 23:53
2007.04.01
Аналог TListView с доп.функ


15-1173109716
muhh
2007-03-05 18:48
2007.04.01
Работа с реестром


2-1173549871
Washington
2007-03-10 21:04
2007.04.01
Создание объектов


2-1173797536
Kolan
2007-03-13 17:52
2007.04.01
Можноли заставить компилятор сообщать о конкр. виде исключений?


15-1173117673
nobody_1988
2007-03-05 21:01
2007.04.01
Books about win programming