Модальность

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

Модальность

Сообщение Alexanbar » 05.10.2004 (Вт) 21:29

Можно ли программно определить, является ли форма модальной?
А нужно это вот зачем: если из модальной формы делать для какой-то другой метод Show, то выдаётся ошибка, что эта форма тоже должна быть модальной, а это не всегда входит в мои планы (т.е., по -возможности, желательно другую форму делать немодальной)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.10.2004 (Вт) 21:31

А вот нефиг идеологию винды нарушать :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.10.2004 (Вт) 22:26

GSerg писал(а):А вот нефиг идеологию винды нарушать :)
Я где-то читал, что в Винде модальность есть только у диалогов в очень ограниченных случаях.
В VB же вся модальность контролируется рантаймом, а не Виндой.

А определить, наверное, самое простое - завести публичную переменную и устанавливать её во что надо перед вызовом Show.
Изображение

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 05.10.2004 (Вт) 23:40

Идеологию- то мы и не планируем особенно нарушать. Только форму, которую хочет показать модальная, используется при вызове как из немодальных, так и из модальных форм.
Пока пришлось сделать примерно так, как советует tyomitch, точнее, передаю в качестве параметра модальность.
Одно мне не по душе - раз есть ругань, то бишь, сообщение об ошибке, должно быть средство избежать её, кроме способа отлавливания ошибки.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.10.2004 (Ср) 0:26

Alexanbar писал(а):Пока пришлось сделать примерно так, как советует tyomitch, точнее, передаю в качестве параметра модальность.
Одно мне не по душе - раз есть ругань, то бишь, сообщение об ошибке, должно быть средство избежать её, кроме способа отлавливания ошибки.

Можно всё инкапсулировать во что-нибудь вроде
Код: Выделить всё
Public Sub ShowEx(ByVal Form As Form, ByVal Modal As Boolean, ByVal Owner As Form)
    If Owner.Modal Then Modal = True
    Form.Modal = Modal
    Form.Show IIf(Modal, vbModal, vbModeless), Owner
End Sub

Будет гораздо красивее :-)
Изображение

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 06.10.2004 (Ср) 7:16

Код: Выделить всё
' Проект prjSurModal содержит две формы (может быть и одна)

' Форма frmSurModal1 содержит две кнопки
' Command1(0) .Caption = "Modeless"
' Command1(1) .Caption = "Modal"

' Форма frmSurModal2 не содержит ничего (м.б. заменена на frmSurModal1)

Dim WithEvents slvfrm As Form

Private Sub Command1_Click(Index As Integer)
  Dim frm As New frmSurModal2     ' м.б. frmSurModal1
  If Index = 1 Then
    Set slvfrm = frm
  End If
  frm.Show , Me                    ' или vbModeless, Me
End Sub

Private Sub slvfrm_Load()
  Me.Enabled = False
End Sub

Private Sub slvfrm_Unload(Cancel As Integer)
  Me.Enabled = True
End Sub

Запускающая форма (здесь frmSurModal1) может запустить подчиненную форму (здесь frmSurModal2 или frmSurModal1) в режиме vbModeless, устанавливая для себя возможный режим работы vbModeless или vbModal.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList  
cron