Закрытие отчёта закрывает всю БД

Автор Kadet, 13 октября 2019, 12:14

0 Пользователи и 1 гость просматривают эту тему.

Kadet

Давно столкнулся с этой проблемой, но пока не нашёл решения. Просто временно отключил.

В работе с БД пытаюсь скрыть главную форму, т.е. внутренности самой БД. Во-первых, чтобы никто не смог даже случайно в неё влезть. А во-вторых, главная форма просто болтается всегда и только мешает.
Для этого использую скрытие мотодом    .setVisible(False) при запуске БД.
ThisComponent.CurrentController.Frame.ContainerWindow.setVisible(False)
Вроде бы всё работает. Главная форма скрывается. Открывается рабочая форма. Все вторичные формы открываются и закрываются без проблем.
Однако, при формировании любого отчёта (Raport), а потом закрытии его - закрывается вся БД.

Может кто сталкивался с подобной проблемой и знает как она решается?

Kadet

Чуть приблизился к пониманию этой проблемы.
Глюк проявляется когда закрывается последний или единственный отчёт. Если открытых отчётов несколько и закрываешь один из них - глюк не проявляется.

Думаю так. Формы и отчёты являются документами Write и при закрытии последнего отчёта LO даёт команду на закрытие вообще редактора Weite, не обращая внимания на то, что формы тоже Write. Вот всё в куче и закрывает.

Если головная форма БД не скрыта этот глюк не проявляется.

Kadet

#2
Проблему решил обходным путём.
Так как глюк проявляется только при скрытой головной формой БД, а в открытой нет, решил при закрытии отчётов просто временно открывать главную форму, а потом снова скрывать.
В редакторе форм открываю Настройки: Сервис > Настройки. Во вкладке "События" вешаю два макроса.
На событие "Документ будет закрыт" вешаю макрос:
Sub CloseRaport1()
ThisDatabaseDocument.CurrentController.Frame.ContainerWindow.setVisible(True)
End Sub


А на событие "Документ закрыт" вешаю другой:
Sub CloseRaport2()
ThisDatabaseDocument.CurrentController.Frame.ContainerWindow.setVisible(False)
End Sub


В Base достаточно настроить так один отчёт и настройки автоматически переходят на все остальные.
Вроде бы всё работает.