ПРИМЕЧАНИЕ:
Звучает как вы потребность фактически константа ключевого Кодего представленная в вашей перемеююом TShiftstate. Using интежер (ssShift), интежер (ssAlt), etc. не работать по мере того как он возвратит порядковое значение деталя комплекта. т.е. перенос возвратит 0, alt возвратит 1, etc., котор я довольно уверен это не вы хотите.
если вам нужно фактически ключевое значение, то используйте что-нибудь подобное:
var kc: интежер;
…
kc: = 0;
если ssShift в AShiftState после этого kc:, то= kc ИЛИ VK_SHIFT;
если ssCtrl в AShiftState после этого kc:, то= kc ИЛИ VK_CONTROL;
если ssALT в AShiftState после этого kc:, то= kc ИЛИ VK_MENU;
если вам нужно использовать его для сообщений мыши, то используйте что-нибудь подобное:
если ssShift в AShiftState после этого kc:, то= kc ИЛИ MK_SHIFT;
если ssCtrl в AShiftState после этого kc:, то= kc ИЛИ MK_CONTROL;
//alt поддержанное в сообщении мыши, вы использовать что-то как GetKeyState обусловить его