maxiu1989 napisał(a)
(bo VK_A jakos nie dziala)
Ponieważ nie ma czegoś takiego jak VK_A
, VK_B
... VK_Z
, tych stałych nie zadeklarowano; Za to parametr Key
w zdarzeniu OnKeyDown
jest typu Word
, więc możesz się odwołać po numerze ASCII znaku w systemie szesnastkowym; W załaczniku masz plik z wszystkimi (przynajmniej najważniejszymi) kodami klawiszy;
Jeśli chodzi o klawisze specjalne, takie jak Shift
, Control
czy Alt
- w zdarzeniach OnKeyDown
i OnKeyUp
masz parametr Shift
typu TShiftState
- jest to zbiór, w którym przechowywany jest stan wciśniętych klawiszy specjalnych;
Możliwe wartości w tym typie (źródło - pomoc DB7):
Value |
Meaning |
ssShift |
The Shift key is held down |
ssAlt |
The Alt key is held down |
ssCtrl |
The Ctrl key is held down |
ssLeft |
The left mouse button is held down |
ssRight |
The right mouse button is held down |
ssMiddle |
The middle mouse button is held down |
ssDouble |
The mouse was double-clicked |
Jeśli chcesz sprawdzić, czy wciśnięty jest np. klawisz Shift , sprawdzasz to w standardowy sposób dla zbiorów: |
|
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if ssShift in Shift then
ShowMessage('Klawisz SHIFT wciśnięty!')
else
ShowMessage('Brak klawisza SHIFT...');
end;
Jak widać sprawdzenie nie jest najtrudniejsze; Jeżeli potrzebujesz sprawdzić stan wciśnięcia jednego ze specjalnych klawiszy (któregoś z powyższej tabelki) - sprawdź to w parametrze Shift
, resztę odczytuj z parametru Key
;
Na inne pytania odpowiem jutro, sam już trochę procentów mam...