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

Вниз

onClick и проблемы таскания компонентов   Найти похожие ветки 

 
Ray ©   (2006-05-21 23:00) [0]

Дано: форма, на форме панель, на панели пять Image
Надо: таскать мышкой эти Image по панели

Большая просьба уважаемым гуру привести пример, как это реализуется.


 
Eraser ©   (2006-05-21 23:43) [1]


> Ray ©   (21.05.06 23:00)

См. события OnMouseDown/Up/Move.
Создай флаг, который сброшен если кнопка мыши не нажата и установле, когда нажата. В событии OnMouseMove проверяй этот флаг, если он установлен - перемещай компонент на смещение от прошлых X и Y, потом сохраняй эти X и Y на место старых.


 
DevilDevil ©   (2006-05-22 01:05) [2]

// процедура делает окно перемещаемым
procedure SetMoveMode(Handle : THandle);
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
end;

// -----------------------------------------------

// Image1.OnMouseDown
begin
    if Button=mbLeft then // эту строку не обязательно писать
    SetMoveMode(Image1.Handle);
end;


Вообще такой подход к DragDrop не является стандартным (который вообще мало где где описывается, я видел в книге "Delphi для Чайников"), зато действенный. Работает со всеми элементами управления, которые в терминологии Windows являются окном. В качестве параметра указывай Handle этого компонента, можешь Form1.Handle


 
Eraser ©   (2006-05-22 01:07) [3]


> DevilDevil ©   (22.05.06 01:05) [2]


> Работает со всеми элементами управления, которые в терминологии
> Windows являются окном

вот только TImage как раз и не является окном :-)


 
DevilDevil ©   (2006-05-22 01:39) [4]

вот только TImage как раз и не является окном :-)
нее, является. На самом деле Image это тот же самый Label, в терминологии Windows они являются Static окнами... Другое дело, что чё то не получается мне их Handle раздобыть... Странно! Надо новую тему заводить, как найти Handle Имэйджа


 
Eraser ©   (2006-05-22 02:13) [5]


> DevilDevil ©   (22.05.06 01:39) [4]
>
> вот только TImage как раз и не является окном :-)
> нее, является. На самом деле Image это тот же самый Label,
>  в терминологии Windows они являются Static окнами...

ошибаешься.


 
Elen ©   (2006-05-22 08:17) [6]


> Ray ©


Это вариант с TShape попробуй его для других компонентов
XMouse YMouse - Глобальные координаты мышки
unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Shape1: TShape;
   procedure Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
   procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure Shape1MouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
  function XMouse:integer; function YMouse:integer;
var
 Form1: TForm1;

implementation
//********** FUNCTION **********
function XMouse;
var t:tpoint;
begin
windows.GetCursorPos(t);result:=t.X;
end;
//********** END FUNCTION ******
//********** FUNCTION **********
function YMouse;
var t:tpoint;
begin
windows.GetCursorPos(t);result:=t.y;
end;
//********** END FUNCTION ******

{$R *.dfm}

procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin

if shape1.Tag=2 then begin
Shape1.Top:=YMouse-form1.Top-50 ;
Shape1.Left:=XMouse-Form1.Left-50;
end;
end;

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 shape1.Tag:=2;
end;

procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 shape1.Tag:=1;
end;

end.


> Ray ©


 
Ray ©   (2006-05-22 20:37) [7]

То, что надо! Спасибо!



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

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

Наверх




Память: 0.48 MB
Время: 0.054 c
2-1148412478
chizra
2006-05-23 23:27
2006.06.11
ошибка при записи в файл функцией FileWrite...


15-1147761568
QuickFinder
2006-05-16 10:39
2006.06.11
DJVU


15-1147987608
Yong
2006-05-19 01:26
2006.06.11
статьи по сетям


15-1147855328
boriskb
2006-05-17 12:42
2006.06.11
С праздником :)


15-1147970494
Empleado
2006-05-18 20:41
2006.06.11
< удалено модератором >