Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Открытие и закрытие Form


Автор: Robatko 15.11.2004, 13:50
Всем день добрый!
~Fox~ обещал помощь в возникших вопросах, а где его искать - не знаю.
У меня вопрос:
Есть Form (Главная, не MDI) с кнопкой для запуска Form1 (Set Form=Nothing), из которой есть запуск Form2, так что при работе проги на экране присутствуют Form1 и Form2, которые при закрытии любой из них имеют к Form - (Form.Show).
Нужно, чтобы Form открывалась только при закрытии обеих форм в любой последовательности (Form1, Form2 или Form2, Form1)

С уважением Robatko

Автор: Akina 15.11.2004, 14:34
Ну для начала зарегистрируйся - или никого и не найдешь.

Цитата
Нужно, чтобы Form открывалась только при закрытии обеих форм в любой последовательности (Form1, Form2 или Form2, Form1)

типа так:
Код

Sub Form1_Unload
If Not IsLoaded("Form2") Then Load Form
End Sub

Автор: Robatko 15.11.2004, 14:49
Anika, благодарю за ответ, а насчет регистрации - с удовольствием, но я среди вас - профи-
совсем несведущий "Чайник"
Robatko

Автор: Akina 15.11.2004, 15:08
Цитата(Robatko @ 15.11.2004, 15:49)
насчет регистрации - с удовольствием, но я среди вас - профи - совсем несведущий "Чайник"

и чего?
Регистрация существует не для того, чтобы делать вид что ты профи. Ее цель - дополнительные удобства. Например получение уведомлений об ответе в твою тему. Возможность послать персональное сообщение кому-либо через конференцию. Редактирование собственных опечаток наконец. Ну и отметиться, так сказать, столбик опрыскать...

Автор: Гость_Flotskiy 15.11.2004, 15:59
Akina, благодаря Вашим советам, я зарегистрировался.
Дело в том, что VB ругается, выделив часть кода ..."IsLoaded"...
пишет: "Sub or Function not defined" и все вылетает.
С уважением
Flotskiy




Автор: boevik 15.11.2004, 16:24
Нет встроенной функции IsLoaded.
Надо писать свою функцию:
Код

Private Function isLoaded(FormName As String) As Boolean
Dim i As Integer
  For i = 0 To Forms.Count - 1
     If Forms(i).Name = FormName Then isLoaded = True
  Next i
End Function


Автор: Flotskiy 16.11.2004, 06:43
Доброе утро всем!
Boevik, все сделал согласно Вашей рекомендации: ошибку не выдает, но и не работает,
при выгрузке любой из форм загружается Form(гл.)
С уважением
Flotskiy

Автор: boevik 16.11.2004, 07:57
Flotskiy, показывай полный код.

Автор: Flotskiy 16.11.2004, 09:32
Расклад такой:

'frmGlavn - Form (главная)
'frmDataClass - Form1
'frmChitZal - Form2

Данный код лежит в frmDataClass
________________________________

Private Function isLoaded(FormName As String) As Boolean
Dim i As Integer
For i = 0 To Forms.Count - 1
If Forms(i).Name = FormName Then isLoaded = True
Next i
End Function

Private Sub Form_Unload(Cancel As Integer)

If Not isLoaded("ChitZal") Then Load frmGlavn
frmGlavn.framPassword.Visible = False
Set frmDataClass = Nothing
Unload Me

End Sub
_________________________________

Такой же (c изменением в блоке If имени формы) в frmChitZal

Вот и все

Автор: boevik 16.11.2004, 10:27
Flotskiy, загрузка формы у тебя происходит в не зависимости от условия.
Код frmGlavn.framPassword.Visible = False, производит загрузку формы.
IMHO, тебе надо пересмотреть логику.

И ещё, что бы не повторять код функции isLoaded во всех формах, положи функцию в модуль и её будет видно из всех форм.

Автор: Flotskiy 16.11.2004, 11:44
Boevik, благодарю за помощь, все пошло, только небольшие изменения в коде:
_______________________
Private Sub Form_Unload(Cancel As Integer)

If Not isLoaded("ChitZal") Then
frmGlavn.Show
End If
frmGlavn.framPassword.Visible = False ' (не мешает)
Set frmDataClass = Nothing
Unload Me

End Sub
________________________
а функцию отправил в модуль. Не зра говорится: "...век учись..".
Всего доброго всем.
Sk k


Автор: boevik 16.11.2004, 12:14
1)
Код:
Код

If Not isLoaded("ChitZal") Then
   frmGlavn.Show
End If


эквивалентен коду
Код

If Not isLoaded("ChitZal") Then frmGlavn.Show


2) После выполнения кода:
Код

frmGlavn.framPassword.Visible = False

Форма frmGlavn будет загружена и, возможно, видема.

Автор: Flotskiy 17.11.2004, 15:38
Добрый вечер всем!
Boevik, благодарю за участие.
Прежде чем сюда положить код, я его обкатал во всех случаях, работает нормально.
Sk k


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)