Закрыть окно с потерей фокуса

Приветствую!
Прошу помощи в реализации следующей задачи:
Имеем окно редактирование, как только кликаем за его пределы(например на грид) - окно(редактирования) должно закрываться. Как можно это решить?

Нравится

8 комментариев

Здравствуйте, Артем!
У окна есть событие "OnDeactivate", которое как раз генерируется, когда окно теряет фокус.
В обработчике события можно описать всю необходимую логику.

А как можно получить ссылочку на открытое окно? Например мне нужно закрыть определенное окно при фокусе на одном из двух.

А как можно получить ссылочку на открытое окно? Например мне нужно закрыть определенное окно при фокусе на одном из двух.

Артем, ссылку на окно можно получить только если они как-то связаны, например родительская свяь, тогда можно будет обратиться к ParentWindow.
Но, думаю, такой вариант Вам не подойдет.
Можно еще отправлять сообщение (SendNotify) из окна, которое требуется закрыть при потере фокуса, а ловить сообщение в окне, на котором должен быть фокус и из него закрывать уже нужное окно.

Да нет, вполне подойдёт, т.к. корзина является дочерним окном обращения. Как взять ссылочку только на дочерний объект?

Есть ли вообще способ получить список открытых окон?

Артем,
1. Ссылку взять тем же Notify, передать Self в родительское окно, прямой ссылки на потомка у родительского окна нет.
2. Такого способа нет.

Артем, по поводу списка открытых окон я ошибся.
Открытые окна размещены в элементах массива "WinCache_Windows" в качестве параметра Instance. В "scr_WindowUtils" есть метод для получения экземпляра окна ("WinChache_Get") по параметру элемента массива "RecordID", но Вы можете написать свой метод получения окна по идентификатору окна, который предварительно будете сохранять при открытии.

Показать все комментарии