Программно закрыть окно диалога

Автор dimmon777, 28 февраля 2016, 16:50

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

dimmon777

Добрый день, для написания диалогового окна воспользовался данным способом http://forumooo.ru/index.php/topic,1319.0.html. Расставил кнопки.
Нужно, чтобы при нажатии кнопки, данное окно закрывалось

rami

А теперь воспользуйтесь этим способом:

dimmon777

Цитата: rami от 29 февраля 2016, 08:14rami
Спасибо! но сожалению предложенный Вами способ мне не подходит, т.к. при выполнении диалогового окна, доступ к странице блокирован (диалог модальный) . А в предложенном выше способе используется "плавающее окно", что в данной ситуации мне легче осуществить. Но как закрыть его ??? ???

JohnSUN

Плавающий диалог получается если вместо "выполнения" (execute) его просто "показывают" (.setVisible(True)). И в этом случае его не "закрывают", а "прячут". То есть кнопке назначается отдельная процедура, которая выполнит .setVisible(False). Перед повторным отображением диалог не создают заново, а только опять делают видимым.
Но лучше с не модальными окнами не связываться. Нужно быть готовым к тому, что при закрытии этого документа или офиса начнут выскакивать невнятные ошибки. Причина в том, что офис не в состоянии уничтожить этот объект (диалог) и может только жаловаться.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

dimmon777

#4
Цитата: JohnSUN от 29 февраля 2016, 21:11JohnSUN
,
Цитата: rami от 29 февраля 2016, 08:14rami
Пересобрал "плавающее окно" из первого моего сообщения (в прикрепленном файле). В module2 закрытие окна, с кнопкой, происходит сразу после открытия диалога oButton1.removeActionListener(oL)
floatingwindow.dispose()
, тут вроде работает.

В module3, пытаюсь повесить этот код на кнопку ЗАКРЫТЬ (AL93_actionPerformed). При нажатии кнопки - ошибка( Все перепробовал. Помогите!

JohnSUN

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

dimmon777

Цитата: JohnSUN от  2 марта 2016, 21:58
Так что ли?
:beer: Спасибо!!! Вроде работает, ушел тестить)

dimmon777

Еще помогите пожалуйста.
Если окно уже открыто, то в начале выполнения макроса его нужно закрыть. Думаю в начале должно быть что то вроде If  Isnull(?переменная?) THEN... ELSE ...
/code]???

dndn

If not IsEmpty (объект_диалог) Then
    'код если окно открыто
Else
    'код если окно закрыто
End If