Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как закрыть все скрытые формы в VB6 / 7 сообщений из 7, страница 1 из 1
08.05.2014, 12:53
    #38636651
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть все скрытые формы в VB6
Есть 2 формы, при открытии одной Form2 скрывается первая Form1 (Hide и Show). На обеих есть крестики закрытия формы.
Как сделать так, чтобы при нажатии на крестик из любой из этих форм происходило закрытие всех форм и выход из программы, т.е. чтобы они не висели в памяти?
...
Рейтинг: 0 / 0
08.05.2014, 12:59
    #38636669
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть все скрытые формы в VB6
Перехватить событие Unload каждой и позакрывать все остальные формы
...
Рейтинг: 0 / 0
08.05.2014, 13:49
    #38636769
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть все скрытые формы в VB6
Написал при закрытии каждой формы
Код: 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
08.05.2014, 14:09
    #38636796
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть все скрытые формы в VB6
Завести глобальную переменную типа UnloadingInProgress AS Boolean

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

и анализировать UnloadMode, но первый попроще в вашем случае
...
Рейтинг: 0 / 0
08.05.2014, 17:06
    #38637057
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть все скрытые формы в VB6
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
08.05.2014, 17:22
    #38637073
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закрыть все скрытые формы в VB6
нормально
для красоты тут можно только избавиться от сравнения с логическом типом, ибо масло масляное
Код: vbnet
1.
If Not UnloadingInProgress Then



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


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