| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как отображать координаты курсора |
| Автор: Dedal 14.8.2002, 09:26 |
| Как сделать, чтобы ведя мышкой возле самого курсора или где-нибудь в окне отображались его координаты? |
| Автор: Vit 14.8.2002, 11:03 | ||
Это как? |
| Автор: Dapo 14.8.2002, 14:45 |
| 2 Vit:Наверное имеется в виду следующее: курсор - как монитор координат мышки. 2 Dedal: Можно сделать так (но не нужно): procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label1.Top:=y-10; Label1.Left:=x+10; Label1.Caption:=Inttostr(x)+' '+inttostr(y); end; Первое, что пришло в голову. Советую не использовать данную процеДуру (просто как вариант). PS Знаки препинания - отличная штука, если, конечно, умеешь ими пользоваться |
| Автор: Mikel 14.8.2002, 15:35 |
| А не лучше как у всех на StatusBar выводить? |
| Автор: Sniper 16.8.2002, 05:54 |
| Вот ещё вариант unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; mousepos : TPoint; mx, my : longword; implementation {$R *.DFM} procedure TForm1.Timer1Timer(Sender: TObject); begin GetCursorPos(mousepos); mx := mousepos.x; my := mousepos.y; label1.Caption := FloatToStr(mx) + ' ' +FloatToStr(my); end; end. |
| Автор: Song 17.8.2002, 05:35 |
| Тогда нужно ограничивать перемещение окном. |
| Автор: Dapo 21.8.2002, 11:23 |
| вот еще вариант: procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Refresh; Form1.Canvas.TextOut(x,y-10,Inttostr(x)+' '+inttostr(y)); end; |
| Автор: Song 21.8.2002, 16:44 |
| Тогда ещё нужно обновлять содержимое канвы. |
| Автор: Sniper 22.8.2002, 07:20 |
| 2Song: Всех поправил..... :-))) Теперь предлагай свой вариант!!!!!! |
| Автор: Song 22.8.2002, 21:34 |
| Мой вариант THintWindow+Application.ActivateHint() |
| Автор: Spawn 23.8.2002, 15:00 |
| А можно, как уже приводилось на етом форуме, через HOOK: var HookHandle: hHook; function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall; var msg: PEVENTMSG; begin if Code >= 0 then begin result := 0; msg := Pointer(LParam); with Form1 do case msg.message of WM_MOUSEMOVE: Caption := IntToStr(msg.ParamL) + #32 + IntToStr (msg.ParamH); end; end else result := CallNextHookEx(HookHandle, code, WParam, LParam); end; procedure TForm1.FormCreate(Sender: TObject); begin HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0); end; procedure TForm1.FormDestroy(Sender: TObject); begin if HookHandle <> 0 then UnhookWindowsHookEx(HookHandle); end; |