Отмена загрузки формы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Rodos
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 10.10.2005 (Пн) 22:07
Откуда: Москва

Отмена загрузки формы

Сообщение Rodos » 06.11.2005 (Вс) 15:08

Код: Выделить всё

Private Sub Form_Load()
If Combo1.Text = "" Then MsgBox "Печать невозможна! Принтеры не обнаружены.", vbCritical, "Ошибка": 'Что написать
End Sub


Надо сделать, чтобы при пустом Combo1 выдавалась ошибка и форма не загружалась. Если написать Unload Me ругается, Exit Sub форма все равно загружается, End закрывается весь проект. Как отменить загрузку формы?

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 06.11.2005 (Вс) 15:54

Код: Выделить всё

Private Sub Form_Load()
If Combo1.Text = "" Then
MsgBox "Печать невозможна! Принтеры не обнаружены.", vbCritical, "Ошибка"
Unload Me
End If
End Sub


Или я не совсем понял вопрос?...
Salus populi suprema lex

Rodos
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 10.10.2005 (Пн) 22:07
Откуда: Москва

Сообщение Rodos » 06.11.2005 (Вс) 16:05

Unload Me не работает, выдает ошибку Run-time error '364': Object was unloaded. И ссылается на frmPrint.Show из формы, из которой я загружаю данную.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 06.11.2005 (Вс) 16:31

Вот теперь понятно.
Возможно не лучший выход из ситуации, но простой и действенный:
Код: Выделить всё

Private Sub Timer1_Timer()
If Combo1.Text = "" Then
MsgBox "Печать невозможна! Принтеры не обнаружены.", vbCritical, "Ошибка": Unload Form2
End If
End Sub

А таймер поместить на вызываемую форму. (Не забудь его включить).
При этом форму можно не показывать frmPrint.Show, а просто загрузить Load frmPrint, а показать frmPrint.Visible=True, только если в Boxe что-то есть.
Salus populi suprema lex

Rodos
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 10.10.2005 (Пн) 22:07
Откуда: Москва

Сообщение Rodos » 06.11.2005 (Вс) 17:03

Вроде бы пустяковый вопрос, неужели нет другого способа без использования таймеров?

просто загрузить Load frmPrint

Тогда форма с MsgBox появляется сразу, после запуска программы.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 06.11.2005 (Вс) 17:20

On Error Resume Next в той процедуре, откуда вызывается frmPrint.Show
Salus populi suprema lex

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 07.11.2005 (Пн) 0:41

Сделай паблик процедуру (например ShowSProverkoi) в форме, которая в зависимости от условий сама "решает", показывать себя или нет :о)

frmPrint.ShowSProverkoi
Пора уже всем хорошим людям собраться и убить всех плохих людей.

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Re: Отмена загрузки формы

Сообщение echo » 07.11.2005 (Пн) 2:15

Rodos писал(а):
Код: Выделить всё
Private Sub Form_Load()
If Combo1.Text = "" Then MsgBox "Печать невозможна! Принтеры не обнаружены.", vbCritical, "Ошибка": 'Что написать
End Sub


Надо сделать, чтобы при пустом Combo1 выдавалась ошибка и форма не загружалась. Если написать Unload Me ругается, Exit Sub форма все равно загружается, End закрывается весь проект. Как отменить загрузку формы?


А есть у тебя уверенность, что на той форме которую ты грузишь этой процедурой есть Комбо1?
Душа болит... А лечишь её - печень болит!

Rodos
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 10.10.2005 (Пн) 22:07
Откуда: Москва

Сообщение Rodos » 07.11.2005 (Пн) 17:32

Сделай паблик процедуру (например ShowSProverkoi)

грузишь этой процедурой

Какой процедурой? :shock:

А есть у тебя уверенность, что на той форме которую ты грузишь этой процедурой есть Комбо1?

Комбо1 есть! :evil:

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 07.11.2005 (Пн) 17:48

А чего ты все смешал, кому вопросы?

Код: Выделить всё
Public sub ShowSProverkoi()
  If Combo1.Text = "" Then
    MsgBox "Печать невозможна! Принтеры не обнаружены.", vbCritical, "Ошибка"
    unload me
  else
    me.show
  end if   
end sub


этот код пихаешь в frmPrint

а из другой формы вызываешь frmPrint.ShowSProverkoi
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Rodos
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 10.10.2005 (Пн) 22:07
Откуда: Москва

Сообщение Rodos » 07.11.2005 (Пн) 22:08

GB826, отлично! Я знал, что есть разумный ответ на этот вопрос!

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 08.11.2005 (Вт) 2:14

GB826 писал(а):А чего ты все смешал, кому вопросы?

Код: Выделить всё
Public sub ShowSProverkoi()
  If Combo1.Text = "" Then
    MsgBox "Печать невозможна! Принтеры не обнаружены.", vbCritical, "Ошибка"
    unload me
  else
    me.show
  end if   
end sub


этот код пихаешь в frmPrint

а из другой формы вызываешь frmPrint.ShowSProverkoi


и чем это отличается от первоначального кода? Вообще странная дискуссия - у меня отлично работает и первоначальный код автора топика (если добавить туда Unload Me).
Душа болит... А лечишь её - печень болит!

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 08.11.2005 (Вт) 2:34

Создай две формы

в первой
Код: Выделить всё

Private Sub Form_Load()
   Form2.Show
End Sub


во второй
Код: Выделить всё

Private Sub Form_Load()
  Unload Me
End Sub


И дальше расскажи, как у тя все прекрасно работало!
Пора уже всем хорошим людям собраться и убить всех плохих людей.

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 08.11.2005 (Вт) 3:44

GB826

:scratch: :roll: :idea: :oops: (с) GSerg
Душа болит... А лечишь её - печень болит!


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 46

    TopList