1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

закрытие окна через строку "меню"

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

Статус темы:
Закрыта.
  1. Alex77777

    Alex77777 Гость

    Репутация:
    0
    при нажатии на крестик закрытия окна этот код работает
    Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Dim kAs Integer
    k = MsgBox("Вы хотите выйти из программы?", _
    vbQuestion + vbOKCancel + vbDefaultButton2, "сообщение")

    If k = vbOK Then
    Dim z As Integer
    z = MsgBox("Подтвердите выход", _
    vbExclamation + vbYesNo + vbDefaultButton2, "сообщение")
    If z = vbYes Then
    Else
    Cancel = 1
    End If
    Else
    Cancel = 1
    End If
    End Sub

    когда в строке меню выбираю соответствующую позицию "Exit" и пишу вот такой код

    Dim kAs Integer
    k = MsgBox("Вы хотите выйти из программы?", _
    vbQuestion + vbOKCancel + vbDefaultButton2, "Системное сообщение")

    If k = vbOK Then
    Dim z As Integer
    z = MsgBox("Подтвердите выход", _
    vbExclamation + vbYesNo + vbDefaultButton2, "Системное сообщение")
    If z = vbYes Then
    Unload Me
    End If
    End If

    о при нажатии позиции "Exit" появляется первое сообщение "Вы хотите выйти из программы?", далее при нажатии vbOK появляется сообщение "Подтвердите выход", потом когда нажимаю vbYes (должна выгрузиться форма, но этого не происходит) снова появляется сообщение "Вы хотите выйти из программы?" я опять нажимаю vbOK, затем опять появляется сообщение "Подтвердите выход", и только затем нажав снова vbYes форма выгружается.
    т.е. у меня почему то каждое сообщение повторяется дважды, а мне нужно только по одному разу с последующим закрытием формы. получается, что Unload Me срабатывает только со второго раза.

    коллеги по работе посоветовали использовать оператор GoTo, но с ним такая же "петрушка".

    кто знает подскажите что у меня неправильно в коде.
     
  2. Tanya

    Tanya Гость

    Репутация:
    0
    Все очень просто

    Событие MDIForm_QueryUnload возникает каждый раз когда в программе пишется Unload Form1
    или Unload Me, нажимается на крестик (Закрытие окна) в общем при выгрузке формы.

    У тебя: сначала нажимаем Exit - следует обработка события меню,
    где ты спрашиваешь "Вы хотите выйти из программы?"
    отвечаем Yes и Yes на следующий вопрос
    и переходим к Unload Me, который вызывает событие MDIForm_QueryUnload
    и вопросы повторяются вновь но уже из обработчика MDIForm_QueryUnload

    Выход следующий: в обработчике меню пишешь только Unload Me
     
  3. Alex77777

    Alex77777 Гость

    Репутация:
    0
    Огромное спасибо ! ! !
    а ведь хотел методом "тыка" написать просто Unload Me, но я думал, что форма выгрузится без всяких сообщений. А оказывается все работает как и при нажатии на крестик закрытия формы.
    Теперь все работает как и хотелось :blink:
     
Загрузка...
Статус темы:
Закрыта.

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