NOTA:
Soa como você a necessidade a constante virtual do código chave representada em sua variável de TShiftstate. Using o inteiro (ssShift), o inteiro (ssAlt), etc. não trabalhará porque retornará o valor ordinal do artigo do jogo. isto é o deslocamento retornará 0, alt retornará 1, etc. Eu sou consideravelmente certo isto não sou o que você quer.
se você precisa o valor chave virtual, usar qualquer outra coisa semelhante:
var kc: inteiro;
…
kc: = 0;
se ssShift em AShiftState então kc: = kc OU VK_SHIFT;
se ssCtrl em AShiftState então kc: = kc OU VK_CONTROL;
se ssALT em AShiftState então kc: = kc OU VK_MENU;
se você precisa do usar para mensagens do rato, usar qualquer outra coisa semelhante:
se ssShift em AShiftState então kc: = kc OU MK_SHIFT;
se ssCtrl em AShiftState então kc: = kc OU MK_CONTROL;
//alt não suportado na mensagem do rato, você teria que usar algo como GetKeyState determiná-lo