Нет проблем:
Вероятно вы захотите использовать 10 элементов управления TSpeedButton или их массив, поскольку этот тип кнопок имеет свойство "Down". Для начала установите у свойства "KeyPreview" вашей формы значение "True". Затем создайте обработчик события "OnKeyDown" примерно такого вида...
case Key ofVK_NUMPAD0: btn0.Down := True;VK_NUMPAD1: btn1.Down := True;VK_NUMPAD2: btn2.Down := True;VK_NUMPAD3: btn3.Down := True;VK_NUMPAD4: btn4.Down := True;VK_NUMPAD5: btn5.Down := True;VK_NUMPAD6: btn6.Down := True;VK_NUMPAD7: btn7.Down := True;VK_NUMPAD8: btn8.Down := True;VK_NUMPAD9: btn9.Down := True;end; |
в этом случае обработчик события "OnKeyUp" будет следующего вида...
case Key ofVK_NUMPAD0: btn0.Down := False;VK_NUMPAD1: btn1.Down := False;VK_NUMPAD2: btn2.Down := False;VK_NUMPAD3: btn3.Down := False;VK_NUMPAD4: btn4.Down := False;VK_NUMPAD5: btn5.Down := False;VK_NUMPAD6: btn6.Down := False;VK_NUMPAD7: btn7.Down := False;VK_NUMPAD8: btn8.Down := False;VK_NUMPAD9: btn9.Down := False;end; |
Поэкспериментируйте со свойствами "AllowAllUp" и "GroupIndex" для получения необходимого эффекта.
Кроме того, массив кнопок TSpeedButtons был бы наиболее изящным решением в данной задаче, поскольку в этом случае вы могли бы использовать константу VK_ constant в качестве индекса, делая обработчики обоих событий длиной всего в одну строчку - Button[VK_x].Down := True {или False}. [000141]