Главная страница
    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.035 c
1-1083071145
Ruslan
2004-04-27 17:05
2004.05.16
Вопрос по функции FloatToStr


14-1082449384
Igorek
2004-04-20 12:23
2004.05.16
Предлагаю ввести значок "Ламер", который выдавать всем желающим.


14-1082726500
7@ua
2004-04-23 17:21
2004.05.16
работа с базой данных в Делфи


1-1082651546
Vitalnet
2004-04-22 20:32
2004.05.16
Увидеть весь тект в выподающем меню


14-1082838560
Thor
2004-04-25 00:29
2004.05.16
металлоискатели все стран....





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