Я создаю редактор, который использует TImage для отображения изображения и имеет события мыши, чтобы иметь возможность рисовать, перемещать и изменять размеры блоков на изображении. Все это прекрасно работает. Теперь я пытаюсь реализовать возможность использовать стрелки на клавиатуре для перемещения выбранного поля, но A) TImage не получает никакого фокуса, и B) TImage не имеет никаких ключевых событий (потому что не может получить фокус). Думаю, я мог бы схитрить и включить свойство KeyPreview формы и поймать их там, но в этой форме много других элементов управления, и мне нужно убедиться, что пользователь намеревается работать с изображением. Например, если пользователь имеет фокус в элементе управления TEdit, клавиши со стрелками будут влиять только на эту заметку, а не на изменение изображения.
Итак, есть ли способ поставить или подделать какой-то фокус в TImage для распознавания ключевых событий?
TCustomControl. (И, кстати, причина, по которойTImageне может получить фокус, заключается в следующем:TImage— это графический элемент управления VCL, что означает, что у него нет дескриптора окна; это не окно.) - person Andreas Rejbrand   schedule 12.12.2011