Главная страница
    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.033 c
3-1082349604
Slavik_v
2004-04-19 08:40
2004.05.16
Суммирование записей с одиниковым значением в поле Field


7-1080567468
Rus
2004-03-29 17:37
2004.05.16
Процессы в WIN2000


1-1083153868
Term
2004-04-28 16:04
2004.05.16
Как добавить кнопку на ToolBar кнопку программно


1-1083500489
AndrewVolkov
2004-05-02 16:21
2004.05.16
Какой-то странный глюк при работе с тхт файлом


4-1080284661
nuflin
2004-03-26 10:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский