![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перетащить картинку...
Expell © (2007-03-07 06:35:00)Подскажите как реализовать, чтобы в run-time мышкой можно перетаскивать объект, в данном случае Image.
Просто в Image загружаю рисунок, пытаюсь переместить - ... не выходит:(.
Нашел как кнопки перетаскивать, а вот IQ не хватает для image сделать.
Будьте любезны, подскажите..
eXPell (2007-03-09 08:22:00) [1]Ну никак не могу сообразить как ограничить перетаскивание картинки((.
Есть 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;
объясните что ни так?
eXPell (2007-03-07 07:57:00) [2]
> PZ (07.03.07 07:47) [1]
для кнопки эти события работают великолепно, а вот для картинки - ... неа.
Для рисунка вариант предложенный Elen ©более подходящий:)
ЗЫ. 2Elen ©пояснять не надо, буду разбираться самостоятельно, а если будут вопросы - ожидайте на первом канале:)
Elen (2007-03-07 07:49:00) [3]Не вопрос :
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.
Разберешся, или пояснить?
PZ (2007-03-07 07:47:00) [4]Ну, например, используя MouseDown, MouseMove, MouseUp. А как Вы пытались переместить?