Komponent czytający naciśnięcie klawisza

0

Witam. Zastanawia mnie jak przeczwycić naciśnięcie klawisza do mojego komponentu?
Próbowałem z komunikatem WM_CHAR, ale mi nie działa... :|
Dla formy jest taki bajer jak KeyPreview, ale nie wiem czy we własnym komponencie da się dodać taką opcję :P

Ogólnie jest to komponent typu edytor tekstu, dlatego potrzebuję przechwytywać wszystkie info o naciśniętym klawiszu.

0

Jeżeli Twój komponent dziedziczy z TMemo na przykład to ma zdarzenie OnKeyDown. Jeżeli chcesz sam je w
module oprogramować to można tak jak poniżej. Chociaż musisz z tym pokombinować bo nie bardzo wiem w
jaki sposób przechwytywać kombinacje klawiszy lub na przykład klawisz Alt. Moze ktoś jeszcze Ci tu doradzi.

// ...
uses
  Dialogs, Messages, SysUtils,
//...
  protected
    procedure WMKeyDown(var Msg : TMessage); message WM_KEYDOWN;
// ...
procedure TTwojKomponentx.WMKeyDown(var Msg : TMessage);
begin
  ShowMessage('Wciśnięto klawisz o kodzie: ' + IntToStr(Msg.WParam));
end;
//...
0

a globalny hook ?

0

Powiem szczerze, że troche się tego hooka obawiałem. Zdaje się, że może być kłopot z polskimi literkami. A komponent dziedziczy po TGraphicControl :) W ogóle jest robiony w Lazarusie i ma to być taki labelek z możwiością edycji tekstu i czcionek.
WM_KeyDown się też nie sprawdziło i chyba dlatego, że program nie wie komu to przekazać, bo jak mam na formie zwykłe TMemo to wysyła komunikat właśńie do tego komponentu. Nie za bardzo wiem jak i czy da się ustawić focus na komponent wywodzący się z TGraphicControl...

1 użytkowników online, w tym zalogowanych: 0, gości: 1