Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.06 c
2-1173637277
eee
2007-03-11 21:21
2007.04.01
Деление


8-1153670177
Степан
2006-07-23 19:56
2007.04.01
OpenGL.pas и памятники :)


15-1173008148
Nija
2007-03-04 14:35
2007.04.01
Помощь в написании...


15-1173280682
Канадец
2007-03-07 18:18
2007.04.01
Talking to Americans on the streets


2-1173261538
zloy_dima
2007-03-07 12:58
2007.04.01
Поле BLOB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский