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

Вниз

Абсолютные координаты мыши.   Найти похожие ветки 

 
Бегун   (2004-04-29 03:21) [0]

Если на событие формы OnMouseMove повесить обработчик:

procedure TfrmAdd.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
label1.Caption:=IntToStr(X);
label2.Caption:=IntToStr(Y);
end;

то, двигая мышкой, будем видеть изменение координат
относительно левого верхнего угла формы.

Что-бы получить абсолютные координаты:
label1.Caption:=IntToStr(frmAdd.Left+X);
label2.Caption:=IntToStr(frmAdd.Top+Y);

Но.
Если схватить форму за заголовок и тащить её - не происходит событие OnMouseMove.
И, следовательно, невозможно получить координаты мыши.

Вопрос:
Как получить абсолютные координаты мыши во время перетаскивания формы за заголовок? (по другому перетаскивать форму вроде и нельзя... :) )


 
Gero ©   (2004-04-29 07:09) [1]

GetCursorPos


 
TUser ©   (2004-04-29 07:39) [2]

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Timer1: TTimer;
   procedure Timer1Timer(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   M:TMouse;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
form1.Caption:="x = "+inttostr(M.CursorPos.X)+"; y = "+
                     inttostr(M.CursorPos.Y);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  M:=TMouse.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  M.Free;
end;

end.


 
Gero ©   (2004-04-29 07:42) [3]


> M:=TMouse.Create;
> M.Free;

Это еще зачем?


 
Piople ©   (2004-04-29 07:45) [4]


> Gero

Потому что есть разные подходы для решения данной задачи.


 
Gero ©   (2004-04-29 07:47) [5]


> Потому что есть разные подходы для решения данной задачи

А чем объект Mouse не устраивает?


 
TUser ©   (2004-04-29 07:48) [6]

В смысле зачем? Объекты что создавать не надо? Это же не Screen и не Application.


 
Gero ©   (2004-04-29 07:49) [7]


> Это же не Screen и не Application

Это Mouse.


 
Piople ©   (2004-04-29 07:49) [8]


> А чем объект Mouse не устраивает?

С чего ты взял что меня он не устраивает???


 
Gero ©   (2004-04-29 07:52) [9]


> С чего ты взял что меня он не устраивает???

С того, что Вы мне ответили.


 
Piople ©   (2004-04-29 07:55) [10]


> Gero

Разве я сказал что меня неустраивает??? Я сказал ЧТО ЕСТЬ РАЗНЫЕ ПОДХОДЫ ДЛЯ РЕШЕНИЯ ЗАДАЧ!!!


 
MBo ©   (2004-04-29 08:11) [11]

>TUser ©   (29.04.04 07:48) [6]
Прислушайся к Gero - в данном случае ты неправ. Mouse, как и, например, ClipBoard, создавать не нужно. Эта глобальная переменная автоматически создается в Init. секции модуля Controls.


 
TUser ©   (2004-04-29 08:28) [12]

Да, конечно, лучше mouse.


 
Юрий Зотов ©   (2004-04-29 08:54) [13]

А подходы к решению задачи действительно существуют разные. Существуют ОДНИ - и существуют ДРУГИЕ.

Уточнять, видимо, не стоит?
:о)


 
Yar-Com   (2004-04-29 09:04) [14]

x := GetSystemMetrics(SM_CXSCREEN) div 2;
y := GetSystemMetrics(SM_CYSCREEN) div 2;


 
Yar-Com   (2004-04-29 09:15) [15]

Боже мой, что я делаю!!!! =)


 
Бегун   (2004-04-30 10:25) [16]

>TUser ©   (29.04.04 07:39) [2]
То что надо.
(Не использую M:TMouse, использую Mouse)

А можно ли обойтись без таймера?


 
Expre$$   (2004-04-30 10:38) [17]

label1.Caption :=IntToStr(Mouse.CursorPos.X);
label2.Caption :=IntToStr(Mouse.CursorPos.Y);


 
Бегун   (2004-04-30 11:47) [18]

>Expre$$   (30.04.04 10:38) [17]

А куда этот код вставить????

Так работает:
procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
label1.Caption:="x = "+inttostr(Mouse.CursorPos.X);
label2.Caption:="y = "+inttostr(Mouse.CursorPos.Y);
end;

Но, как без таймера?
На какое событие повесить этот код?



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

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

Наверх




Память: 0.5 MB
Время: 0.023 c
8-1077452218
Cerber
2004-02-22 15:16
2004.05.16
OpenGL


1-1083426139
Viner
2004-05-01 19:42
2004.05.16
Возможность вставки рисунков


7-1080708481
ГАГН
2004-03-31 08:48
2004.05.16
ярлык у программы.


14-1082639764
Ditrix
2004-04-22 17:16
2004.05.16
Требуется квалифицированный программер


1-1083052559
MicroWorld
2004-04-27 11:55
2004.05.16
Структурированый масив, и выборка из него