Как узнать загружена ли уже форма или нет?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
BorisSS
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 12.10.2003 (Вс) 10:18

Как узнать загружена ли уже форма или нет?

Сообщение BorisSS » 04.04.2004 (Вс) 9:23

При этом, если форма не загружена, то для этой проверки ее загружать нельзя.

Спасибо.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 04.04.2004 (Вс) 14:53

Объяви локальную переменную и в form_load устанавливай ее в true, а в form_unload в false.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 05.04.2004 (Пн) 7:41

Код: Выделить всё
If Form1 Is Nothing Then
  MsgBox "Форма не загружена"
Else
  MsgBox "Форма загружена"
End If
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.04.2004 (Пн) 9:20

Cyrax, так то оно так, но иногда глюки бывают.
Я, чтобы стопроцентно это знать, делаю следующим образом. В вызывающей форме есть локальная переменная (к примеру fFormOpened) и две Friend-процедуры, ChildFormOpen и ChildFormClose; в первой эта переменная устанавливается, во второй сбрасывается. А в вызываемой форме при Form_Load вызывается frmParent.ChildFormOpen, а при Form_Unload вызывается frmParent.ChildFormClose. Коряво и громоздко, зато дубовая надежность :)
Lasciate ogni speranza, voi ch'entrate.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 05.04.2004 (Пн) 9:24

alibek писал(а):Cyrax, так то оно так, но иногда глюки бывают.
может у меня с компилятором что-то не то? я проблем не встречал... можешь ситуацию описать, при которой простая проверка на Nothing не сработает?
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.04.2004 (Пн) 9:35

Учи матчасть. Про объявление объектных переменных разными способами.
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
  Dim f2 As New Form1
 
  Me.AutoRedraw = True
 
  Set f2 = Nothing
  Me.Print f2 Is Nothing
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 05.04.2004 (Пн) 10:05

GSerg писал(а):Учи матчасть. Про объявление объектных переменных разными способами.
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
  Dim f2 As New Form1
 
  Me.AutoRedraw = True
 
  Set f2 = Nothing
  Me.Print f2 Is Nothing
End Sub
согласен... но ведь тут не никакого глюка... и то, что
Код: Выделить всё
f2 Is Nothing
вернет True совершенно логично...
и естественно, что при использовании MDI-итерфейса (когда и используется, приведенный выше способ создания дочерних окон) нужно использовать что-то более сложное, нежели простая проверка на Nothing

но судя по вопросу в начале топика, вполне хватит и простой проверки
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.04.2004 (Пн) 10:11

Ты хоть бы проверил...
f2 is nothing возвращает false и будет возвращать его всегда.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 05.04.2004 (Пн) 10:37

:oops:
только не помдорами... Изображение
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 12

    TopList