акрытие окна в Vb

  • Автор темы Alex77777
  • Дата начала
A

Alex77777

#1
делаю программу для ввода различных данных. мне нужно чтобы мое окно "Ввода данных" невозможно было закрыть нажатием на "крестик" в правом верхнем углу окна, пока не введешь все параметры (в частности пока не выберешь параметр комбобокса. я выбирал и Form_Unload(), и Form_Terminate(), в них писал условие, а после условия если оно не выполняется или выполняется (это не так важно) писал Exit Sub. Но окно все равно закрывается. Вот пример:

Private Sub Form_Unload(Cancel As Integer)
Dim lbl1 As String
lbl1 = Combo1.List(Combo1.ListIndex)

If lbl1 = "Причина" Then
MsgBox "Причина не выбрана", vbCritical, "Entry Error"
Exit Sub
'здесь необходим выход из данной процедуры, но его не происходит
Else

End If
End Sub

Хочется чтобы после того как проверилось условие на правду или ложь, произошла отмена закрытия окна. Подскажите, может кто знает. Заранее спасибо.
 
T

Tanya

#2
Для этого есть событие формы:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim lbl1 As String
lbl1 = Combo1.List(Combo1.ListIndex)

If lbl1 = "Причина" Then
MsgBox "Причина не выбрана", vbCritical, "Entry Error"
Cancel=1
Exit Sub​
'здесь необходим выход из данной процедуры, но его не происходит
Else

End If
End Sub


UnloadMode - параметр, показывает от кого пришла команда закрытия окна:
vbFormControlMenu = 0 - обычное закрытие - нажатие на "крестик" окна
vbFormCode = 1 - программынй вызов команды
vbAppWindows = 2 - что-то типа системной команды
vbAppTaskManager = 3 - сянтие задачи
vbFormMDIForm = 4 - закрытие окна-потомка, вызванное закрытием родительского окна
vbFormOwner = 5 - закрытие окна, вызванное закрытием окна-владельца

В общем-то вроде для твоей задачи достаточно Cancel=1: Exit Sub
:)
 
A

Alex77777

#3
Спасибо огромное!!!
все работает так как и хотелось. :))))

единственное - я не разобрался в каких случаях нужны остальные константы
vbAppWindows = 2 - что-то типа системной команды
vbAppTaskManager = 3 - сянтие задачи
vbFormMDIForm = 4 - закрытие окна-потомка, вызванное закрытием родительского окна
vbFormOwner = 5 - закрытие окна, вызванное закрытием окна-владельца,

(хотя в данный момент они мне вроде бы и не к чему, просто хотелость бы знать о них побольше - вдруг когда понадобится), если знаешь, то скинь ссылку, где о них почитать. ;-)))