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

Вниз

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

 
Бегун   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.038 c
1-1083091603
Demi
2004-04-27 22:46
2004.05.16
Проблема открытия файла через контекстное меню Windows.


7-1081242693
DmitryMN
2004-04-06 13:11
2004.05.16
Индикитор жесткого диска


3-1082058087
mur
2004-04-15 23:41
2004.05.16
вместо букв - закорючки


11-1069465382
azsd
2003-11-22 04:43
2004.05.16
ShowModal Must Close Twice?


1-1083069246
Kraj
2004-04-27 16:34
2004.05.16
QReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский