Открытие только одной формы

Mazai-XZ

Доброго времени суток! Есть проект с MDI формой и подчинёнными формами. есть одна подчинённая форма исполняющая функцию меню. на ней находятся кнопки, при нажатия на которые открываются соответсвующие формы. Все формы проекта (кроме формы МЕНЮ) одинакового размера. Проблема в том, что есчли последовательно нажимать на кнопки, вызывающие формы, то в итоге на экране видна только последняя загруженная форма, а остальные формы спрятаны за ней. При повторном запуске уже открытой формы, она естественно не выводиться на первый план и остаётся под последней загруженной. Как (и можно ли вообще) сделать так, чтоб загружалась ТОЛЬКО одна форма, точнее, чтоб при загрузке любой формы ВСЕ другие, уже загруженные формы, выгружались (закрывались), либо чтоб вызываемая форма, если она уже была загружена раньше, выводилась на передний план. Благодарю за внимание, жду помощи! )
9 ответов

Mazai-XZ

Попробуйте разобраться с понятием модальности.Я думаю оно вас спасет.


Mazai-XZ

Пишу наугад, т.е. не помню точно, как это надо написать, бейсика на данный момент у меня нет.
Sub Form_Deactivate()
 unload me
End Sub
Когда форма подменю теряет фокус - она выгружается.


Mazai-XZ

если unload me не помогло, значит, пробуй me.unload


Mazai-XZ

Доброго времени суток! Есть проект с MDI формой и подчинёнными формами. есть одна подчинённая форма исполняющая функцию меню. на ней находятся кнопки, при нажатия на которые открываются соответсвующие формы. Все формы проекта (кроме формы МЕНЮ) одинакового размера. Проблема в том, что есчли последовательно нажимать на кнопки, вызывающие формы, то в итоге на экране видна только последняя загруженная форма, а остальные формы спрятаны за ней. При повторном запуске уже открытой формы, она естественно не выводиться на первый план и остаётся под последней загруженной. Как (и можно ли вообще) сделать так, чтоб загружалась ТОЛЬКО одна форма, точнее, чтоб при загрузке любой формы ВСЕ другие, уже загруженные формы, выгружались (закрывались), либо чтоб вызываемая форма, если она уже была загружена раньше, выводилась на передний план. Благодарю за внимание, жду помощи! )
потому-что не надо так делать! кидайте PictureBox на рабочее окно MDI-main формы и там свои кнопки рисуйте.


Mazai-XZ

MDIForm1.frm:
VERSION <b>5</b>.<b>00</b>
Begin VB.MDIForm MDIForm1 
 BackColor = &H8000000C&
 Caption = "MDIForm1"
 ClientHeight = <b>4125</b>
 ClientLeft = <b>120</b>
 ClientTop = <b>420</b>
 ClientWidth = <b>4560</b>
 LinkTopic = "MDIForm1"
 StartUpPosition = <b>3</b> 'Windows Default
 Begin VB.PictureBox Picture1 
 Align = <b>1</b> 'Align Top
 AutoRedraw = -<b>1</b> 'True
 AutoSize = -<b>1</b> 'True
 BorderStyle = <b>0</b> 'None
 Height = <b>3015</b>
 Left = <b>0</b>
 ScaleHeight = <b>3015</b>
 ScaleWidth = <b>4560</b>
 TabIndex = <b>0</b>
 Top = <b>0</b>
 Width = <b>4560</b>
 Begin VB.CommandButton Command1 
 Caption = "Command1"
 Height = <b>915</b>
 Left = <b>540</b>
 TabIndex = <b>1</b>
 Top = <b>300</b>
 Width = <b>2115</b>
 End
 End
End
Attribute VB_Name = "MDIForm1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub MDIForm_Resize()
On Error Resume Next
Me.Picture1.Move <b>0</b>, <b>0</b>, Me.ScaleWidth, Me.ScaleWidth
End Sub


Mazai-XZ

свойство visible поможет true/false form1.visible


Mazai-XZ

Огромнейшее спасибо ВСЕМ за ответы! Пока что вышел из положения ламерским методом: в свойствах КАЖДОЙ нужной формы в формЛоад прописал Me.SetFocusа так как все формы одного размера и находятся в одном месте на экране, то нужная в данный момент форма просто ловит фокус и появляется поверх всех остальных. Теперь буду пробовать ваши советы, ещё раз искрене благодарен!!!!


Mazai-XZ

Mazai-XZ,В свойствах формы это не делается.Наверно, лучше так написать:
Private Sub Form_Activate()
 Me.SetFocus
End Sub
:0)


Mazai-XZ

Эксперементировал я однажды с тем, что ты сейчас посоветовал.Случались неприятные ситуации, связанные с тем, что активная форма хоть и брала на себя фокус, но, редиска такая, наверх в некоторых случаях не вылазила) Хотя, в общем случае, это выход из ситуации.