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
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ć:)
czemu ludzie nie potrafia szukac?
kilka sekund na 4p:
http://4programmers.net/Forum/301473?h=strza%C5%82ek#id301473
http://4programmers.net/Forum/295004?h=strza%C5%82ek#id295004
http://4programmers.net/Forum/349809?h=strza%C5%82ki#id349809
Umieja szukac, ale:
- po pierwsze w podanych linkach sa podane kody dwa rozne
- 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??
a nie latwiej uzyc onKeyUP? bo zdaje sie ze onkeypress dziala tylko dla znakow tekstowych...