micosa97 napisał(a)
procedure TForm1.button1KeyPress(Sender: TObject; var Key: Char);
Nie wiesz dlaczego nie działa? Bo oprogramowałeś wciśnięcie klawisza przycisku Button1
, a nie formularza; To będzie działać jedynie wtedy, gdy aktywny jest przycisk i wciśniesz klawisz o kodzie #32
, czyli Spację (czyli tak jakbyć kliknął LPM na nim);
Zrób to w zradzeniu OnKeyDown
formularza w ten sposób:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
pntMouse: TPoint;
begin
if Key = VK_SPACE then
begin
GetCursorPos(pntMouse);
edtMousePos.Text := 'X: ' + IntToStr(pntMouse.X) + ', Y: ' + IntToStr(pntMouse.Y);
end;
end;
Będzie działać, ale tylko wtedy, gdy formularza będzie aktywny; Jeżeli zależy Ci na tym, by odczytywać pozycje myszy bez względu na to, czy okno aplikacji jest aktywne czy nie, musisz założyć hook'a na klawiaturę;
W załączniku masz przykład aplikacji wykorzystującej powyższy kod, która działa w 100%;