Управление MouseOver через Hint. Вариант 2

Cуществует ли какой-либо способ отловить момент попадания курсора в область компонента? А его уход оттуда? Мне необходимо убедиться в видимости элемента управления под курсором мыши и совершить над ним некоторые действия.

Вы можете приспособить для этих целей метод OnHint класса TApplication. Данный метод вызывается при перемещении мыши над компонентом и, обычно в ответ на это, становится видимой всплывающая подсказка, а заголовок компонента присваивается величине Application.Hint. Тем не менее вы НЕ должны пользоваться этим решением. Зато при наступлении события вы можете проверять величину Hint для определения того, над каким компонентом в данный момент находится курсор мыши. Стоящая попытка, во всяком случае!

Вот некоторые детали для усвоения идеи. Я расположил на форме компоненты button, edit и label, установил их свойство Hint соответственно в 'Button', 'Edit' и 'Label', и создал несколько их дубликатов. Далее я добавил компонент TRadioGroup, содержащий три элемента, Button, Edit и Label. И, наконец, я реализовал метод приложения OnHint следующим образом:

procedure TForm1.AppOnHint(Sender: TObject);
begin

WITH Application DO
IF Hint='Button' THEN
RadioGroup1.ItemIndex := 0
ELSE IF Hint='Edit' THENRadioGroup1.ItemIndex := 1
ELSE IF Hint='Label' THEN
RadioGroup1.ItemIndex := 2
ELSE RadioGroup1.ItemIndex := -1;
end;

Теперь, во время перемещения мыши над формой, соответствующий элемент RadioGroup показывает над чем в данный момент времени находится курсор мыши. Теперь развивайте идею по своему усмотрению!

 
« Предыдущая статья   Следующая статья »