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

Тема в разделе "Visual Basic", создана пользователем Alex77777, 2 май 2007.

  1. Alex77777

    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

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

    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
    :)
     
  3. Alex77777

    Alex77777 Гость

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

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

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

    Tanya Гость

    в MSDN на английском или поиском в сети :)
     
Загрузка...

Поделиться этой страницей