Предисловие
Мне нужно создать несколько копий формы поиска (в Access 2010 ), которая возвращает значение вызывающему (который также является формой, создавшей экземпляр).формы).
Как уже упоминалось, эти формы могут иметь и будут иметь несколько копий, работающих одновременно, например, пользователь может захотеть добавить компанию к чему-либо, чтобы они:
- Нажмите «выбрать компанию» и откройте экземпляр экрана поиска компании
- Затем откройте редактор компании (оставив открытым экран поиска / выбора компании), когда они заметят, что у компании есть родительская компания, которая не былаеще не добавлено.
- Затем они нажимают кнопку «Выбрать родительскую компанию», которая открывает ДРУГОЙ экземпляр поиска и экран выбора
- Они находят родительскую компанию
- Выберите ее, которая закрываетсявторой экран поиска и родительская компания добавляется к первой компании.
- Затем пользователь выбирает измененную компанию, используя исходнуюЭкран поиска, который снова закрывает исходный экран поиска и возвращает выбранную компанию в ту форму, в которой они первоначально инициализировали первый поиск ...
Все это позволяет пользователям обновлять и исправлять данные, как и когда онинайти ошибку, которая уменьшает вероятность того, что они забудут, и делает это намного быстрее!
МНОГО этого сейчас хорошо, но у меня было много проблем с экземплярами формы, которые не открывались как "acDialog"таким образом останавливая вызывающий код, выполняемый до тех пор, пока поиск не будет завершен (см. этот вопрос для получения дополнительной информации), и решение, с которым я столкнулся, состоит в том, чтобы смоделировать приостановку вызывающего кода с помощью бесконечного цикла и проверки,Мгновенный экран поиска все еще виден.Затем, когда пользователь выбирает что-то на экране поиска, он помещает значение в скрытое поле на экране поиска и скрывает себя (не закрывая).Затем вызывающая функция видит, что она скрыта, получает значение из скрытого поля и выгружает мгновенное сообщение.
Проблема
Я могу проверить, скрыта ли форма, используя FormInstant.Visable , но если пользователь закрывает форму, это вызывает ошибку, и код, который я обычно использую, чтобы проверить, существует ли форма, требует имя формы, и, поскольку это мгновенный вид формы, все формы имеют одно и то же имя!У меня есть ссылка на форму, так как она хранится в локальном объекте "формы" ... Код, который я обычно использую:
CurrentProject.AllForms("FormName").IsLoaded
Так как я могу проверить на мгновение формузагружается еще?