Kody klawiszy strzałek

0

Witam
Walczę już od paru dni z tym tematem, wertując fora i strony poświęcone Delphi i nie mogę sobie poradzić.
Chcę uzyskać wykonywanie procedury po naciśnięciu klawiszy strzałek.
W Gotowcach jest coś podobnego:
http://4programmers.net/Delphi/Gotowce/Jak_uzyska%C4%87_efekt,_aby_po_wci%C5%9Bnieciu_jednej_ze_strza%C5%82ek_na_klawiaturze_komponent__z
ale dokładnie to o co mi chodzi.
Zdarzenie OnKeyDown i OnKeyUp wymagają Key typu Word. W tym przypadku wszystko jest ok.
Ale już OnKeyPress wymaga Key typu Char. Podanie if Key=VK_UP oczywiście wywala błąd.
Doszedłem, że klawisz Enter to #13 i jak dam w kodzie if Key=#13 to po naciśnięciu Entera procedura się
wykonuje. Ale nie mogę znaleźć informacji jakie kody strzałek ani w jaki sposób uzyskać je z VK_UP,
VK_DOWN itp.
Proszę pomożcie.
Radek

0

OnKeyDown oraz OnKeyUp wymagają normalnych Word-ów, Tylko OnKeyPress wymaga Char-a.
Tabela kodów jest np tutaj:
http://delphi.about.com/od/objectpascalide/l/blvkc.htm
Tabela w kodach hex wiec trzeba przeliczyć:)

0

Umieja szukac, ale:

  1. po pierwsze w podanych linkach sa podane kody dwa rozne
  2. po drugie ani jedne ani drugie nie dzialaja(podane na stronie http://delphi.about.com/od/objectpascalide/l/blvkc.htm przez Cymesa tez zreszta nie).
    I dlatego pytam.
    Nie wiem czemu ale w moim kawalku kodu nie dzialaja:
procedure TForm2.DBGrid2KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = #13) then
    begin
      ShowMessage('Nacisnales enter');
      Key := #0;
    end;
  if (Key = #38) then
    begin
      ShowMessage('Nacisnales strzalke up (ver1)');
      Key := #0;
    end;
  if (Key = #72) then
    begin
      ShowMessage('Nacisnales strzalke up (ver2)');
      Key := #0;
    end;
  if (Key = #115) then
    begin
      ShowMessage('Nacisnales F7');
      Key := #0;
    end;
end;

Dla entera (kod #13) dziala, pokazuje sie komunkat. Dla strzalek ani klawiszy F1-12
ni w zab. Keypreview dla formy wlaczone, jesli by to mialo miec jakies znaczenie.
Czyzby to byla wina DBGrida? Akceptuje tylko nacisniecie entera??

0

a nie latwiej uzyc onKeyUP? bo zdaje sie ze onkeypress dziala tylko dla znakow tekstowych...

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