powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как закрыть все скрытые формы в VB6
7 сообщений из 7, страница 1 из 1
Как закрыть все скрытые формы в VB6
    #38636651
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 формы, при открытии одной Form2 скрывается первая Form1 (Hide и Show). На обеих есть крестики закрытия формы.
Как сделать так, чтобы при нажатии на крестик из любой из этих форм происходило закрытие всех форм и выход из программы, т.е. чтобы они не висели в памяти?
...
Рейтинг: 0 / 0
Как закрыть все скрытые формы в VB6
    #38636669
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перехватить событие Unload каждой и позакрывать все остальные формы
...
Рейтинг: 0 / 0
Как закрыть все скрытые формы в VB6
    #38636769
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал при закрытии каждой формы
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If MsgBox("Выйти c программы?", vbYesNo + vbQuestion, "Завершение работы") = vbYes Then
        Unload Form1 ' для первой формы  Form2
        Cancel = 0
    Else
        Cancel = 1
    End If
    
End Sub



Но как только доходит до выгрузки формы, он открывает этот же код на другой форме и выводит еще раз это же сообщение, как бы сделать так, чтобы сообщение выходило 1 раз?
...
Рейтинг: 0 / 0
Как закрыть все скрытые формы в VB6
    #38636796
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Завести глобальную переменную типа UnloadingInProgress AS Boolean

Первая форма, которая словила Unload ставит ее в True, и все остальные игнорируют обработчик Unload
...
Рейтинг: 0 / 0
Как закрыть все скрытые формы в VB6
    #38636800
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй вариант, ловить вместо Unload событие
Код: vbnet
1.
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

и анализировать UnloadMode, но первый попроще в вашем случае
...
Рейтинг: 0 / 0
Как закрыть все скрытые формы в VB6
    #38637057
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЗавести глобальную переменную типа UnloadingInProgress AS Boolean

Первая форма, которая словила Unload ставит ее в True, и все остальные игнорируют обработчик Unload

Я правильно Вас понял, вот так?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadingInProgress = False Then
    If MsgBox("Выйти c программы?", vbYesNo + vbQuestion, "Завершение работы") = vbYes Then
        UnloadingInProgress = True
        Unload Form2
        Cancel = 0
    Else
        Cancel = 1
    End If
End If
End Sub



Просто я не ас в этом, может как-то "красивее" можно сделать))
Но и так работает. Спасибо за наводку!!!
...
Рейтинг: 0 / 0
Как закрыть все скрытые формы в VB6
    #38637073
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нормально
для красоты тут можно только избавиться от сравнения с логическом типом, ибо масло масляное
Код: vbnet
1.
If Not UnloadingInProgress Then



Cancel =0 можно тоже не писать, ибо по умолчанию.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как закрыть все скрытые формы в VB6
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]