Отловить клик за формой

zavul0n

Новичок
Доброго времени суток.
Создала инсталлятор, на нем сверху вывела форму через TForm.Create. Вывела форму на передний план через BringtoFront. Но теперь, если кликнуть на сам инсталлятор, а не на созданную форму, сама форма уходит на задний план. И чтобы вызвать её еще раз - приходится 2 раза нажимать на кнопку, а при выходе из инсталлятора - сыпятся ошибки.
Подскажите, как отловить клик за пределами формы, чтобы можно было послать TForm.Hide.

Заранее спасибо.
 

Shegorat

Lord of Madness
Администратор
zavul0n
А зачем такие сложности? Расскажите, в чём смысл данной затеи, может можно это всё реализовать по-другому и проще.
 

zavul0n

Новичок
Shegorat, реализую кастомный комбобокс путем создания кнопки через ботву, при клике на которую открывается форма с расположенными на ней радиобаттонами. Т.к. средствами ботвы, по аналогии с примером создания чекбоксов, сделать комбобокс не получилось. Приходится пользоваться вот такими костылями.
 

zavul0n

Новичок
vint56, к сожалению, нет. Ведь комбобокс должен автоматически закрываться при клике на основном инсталляторе. Если делать по вашему примеру - тогда весь смысл пропадет. Проще сделать форму отдельно и заблочить кнопку Далее, пока форма открыта.
Но все равно спасибо за отклик.
 

Косой

Новичок
zavul0n, ну а если воспользоваться, как вы говорите, "таким костылём": на wizardform повесить событие onclick, а в процедуре этого самого события выполнять TForm.Hide (ну что-то вроде if TForm.Show then TForm.Hide). Понимаю, что это всё криво, но как вариант...
 

zavul0n

Новичок
Косой, спасибо, реализовала как вы и сказали. Но все таки если кликнуть на рабочем столе, например, а не на инсталляторе - форма же не закроется. Да и по лэйблам если кликать - тоже.
 
Последнее редактирование:

Косой

Новичок
zavul0n, ну как вариант, тогда и к лейблам привязывать событие onclick. Как отследить клик за пределами wizardform я не знаю, но в качестве очередного "костыля" могу предложить повесить на wizardform событие OnMouseLeave и с него опять же выполнять TForm.Hide.
 

zavul0n

Новичок
Косой, вот только для WizardForm событие OnMouseLeave не привяжешь. Unknown Identifier 'OnMouseLeave'.
А так - костыль хороший. Сама почему-то не додумалась. :D
 
Сверху