• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Alex77777

делаю программу для ввода различных данных. мне нужно чтобы мое окно "Ввода данных" невозможно было закрыть нажатием на "крестик" в правом верхнем углу окна, пока не введешь все параметры (в частности пока не выберешь параметр комбобокса. я выбирал и 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

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

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

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

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

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

Tanya

в MSDN на английском или поиском в сети :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!