powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пара вопросов по старту и выгрузке приложения
6 сообщений из 6, страница 1 из 1
Пара вопросов по старту и выгрузке приложения
    #33339137
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение запускаю через Sub Main

В модуле:

авторPrivate frmMainForm As Form1

Sub Main()
If App.PrevInstance Then
Exit Sub
End If

Set frmMainForm = New Form1
frmMainForm.Show
End Sub

Тут вот что не понятно:
1) Exit Sub по App.PrevInstance не загрузит ни одного объекта и ничего проверять и закрывать при это не нужно?
2) Чем плох вот такой запуск для главного окна:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private frmMainForm As New Form1

Sub Main()
    If App.PrevInstance Then
        Exit Sub
    End If

    frmMainForm.Show
End Sub

3) С выгрузкой много лопатил но так и не понял как правильнее. Так можно:

В модуле:

авторSub Closing()

If cnnData.State = adStateOpen Then cnnData.Close
If rst.State = adStateOpen Then rst.Close

Set cnnData = Nothing
Set rst= Nothing

Unload frmMainForm

Set frmMainForm = Nothing

End Sub

И вызывать это в форме:

авторPrivate Sub Form_Unload(Cancel As Integer)
Call Closing
End Sub

Или где-то что-то лишнее или чего-то не хватает?
...
Рейтинг: 0 / 0
Пара вопросов по старту и выгрузке приложения
    #33339424
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно вариант 2 положить в модуль.
...
Рейтинг: 0 / 0
Пара вопросов по старту и выгрузке приложения
    #33339451
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использовать общее правило - не забывать выгружать то что требуется, проблем не должно быть.

Порядок закрытия программы в VB6 зависит от того какой тип интерфейса:
если MDI, может хватить frmMDI.Unload
если SDI, то надо позакрывать все открытые формы. То как вы это сделаете, зависит от того как открывали.
Если у вас все формы используются как классы форм, все достаточно ясно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim Withevents m_frmTwo as frmTwo
dim Withevents m_frmThree as frmThree

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  'Определиться с Cancel
   Cancel = False
  '....
   If Not Cancel Then
      if not m_frmTwo is Nothing then unload m_frmTwo
      if not m_frmThree is Nothing then unload m_frmThree
      'Уничтожение ссылок можно не делать
   End If
End Sub
Каждая форма содержит подобный код и выгрузка произойдет по цепочке.

При использовании в MDI-приложении не MDIChild-форм, придется "отлавливать" октрытые формы то же.
Поэтому такую практику желательно применять и в MDI.

Кроме форм могут быть некоторые объекты которые надо выгружать перед уничтожением на них ссылок иначе они останутся болтаться в памяти или, хуже, не дадут выгрузиться формам.
...
Рейтинг: 0 / 0
Пара вопросов по старту и выгрузке приложения
    #33363942
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросик.
Есть форма, у нее кнопка, через которую вызываю вторую форму:
Код: plaintext
1.
2.
3.
4.
Set frmF2 = New Form2
frmF2.Show vbModal
    
    
Set frmF2 = Nothing

Т.е. как только вторую форму закроют, за ней подчистится автоматом.

Но как эту вторую форму закрывать корректно? И Me.Hide и Unload Me и Me.Visible = False передают выполнение кода в первую форму где выполняется
Код: plaintext
Set frmF2 = Nothing
Получается все равно как?

И еще вопрос, при закрытии второй формы у нее выполняется некий код в цикле, как его корректно прекратить?
...
Рейтинг: 0 / 0
Пара вопросов по старту и выгрузке приложения
    #33363982
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Unload Me
2. Использовать DoEvents
...
Рейтинг: 0 / 0
Пара вопросов по старту и выгрузке приложения
    #33364006
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык мне интересно какая разница, результат один.
Насчет цикла, как определить что он остановился и спокойно закрыть форму? Не охота глобальную переменную сажать.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пара вопросов по старту и выгрузке приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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