Главная страница
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.058 c
15-1148047749
tesseract
2006-05-19 18:09
2006.06.11
Outlook , ну чего тут можно сказать :-)


15-1147686104
Chapaev
2006-05-15 13:41
2006.06.11
Горит курсовая


2-1148583505
Benjamin
2006-05-25 22:58
2006.06.11
pleace help ME!!!!


1-1146736958
GanibalLector
2006-05-04 14:02
2006.06.11
форма в DLL


9-1131353827
Med
2005-11-07 11:57
2006.06.11
ошибка компиляции проги с компонентами GLScene