if Key = VK_SHIFT then
ShowMessage('Shift Pressed');
должно было быть:
if shift = [ssShift] then ...
Программа проверяет Shift: TShiftState
на удержание клавиши SHIFT, а не key :word
;проверяется на наличие других порядковых символов
Это не работает для CAPSLOCK - я не смог найти код.Есть только: ssShift
, ssAlt
, ssCtrl
, ssLeft
, ssRight
, ssMiddle
, ssDouble
, поэтому, похоже, придется использовать в этом случае:
if Odd(GetKeyState(VK_CAPITAL)) then ...