Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.029 c
1-1146913397
lee_mour
2006-05-06 15:03
2006.06.11
Непонятные тормоза при чтении из файла


3-1145448225
RomanH
2006-04-19 16:03
2006.06.11
Дата и время в хранимой процедуре


3-1145365336
ttt_111
2006-04-18 17:02
2006.06.11
Поиск как в 1С.


15-1147336189
Marser
2006-05-11 12:29
2006.06.11
Могли бы Вы стать гуманитарием?


3-1145419231
OlegOren
2006-04-19 08:00
2006.06.11
Переполнение памяти безобидной функцией.




   Наверх