více formulářů v jednom projektu ve VB6   otázka

WinForms, VB6/VBA

Dobrý den,potřeboval bych poradit. Mám sedm formulářů a ten první je hlavní. Ostatní formuláře spouštím pomocí menu. Jde mi o to aby ten první formulář nešel zavřít dřív než ty ostatní formuláře. Jde to nějak udělat? Předem děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To by aj mna zaujimalo nakolko tiez mam niekolko formularou.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud je to MDI formulář, tak má kolekci children, kterou lze testovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak ja som to vyriesil.Dufam ze to pomoze

Private Sub Command9_Click()


Form6.Show 1



End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji, ale bohužel tohle jsem na mysli neměl. Chtěl bych aby šlo mezi jednotlivýma formuláři volně klikat, ale ten první nešel zavřít pokud nejsou ostatní formuláře zavřené.

A formulář není v MDI

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud ve vb6 neexistuje kolekce(Forms) otevřených formulářů

v aplikaci, tak si vytvořte pro tento účel vlastní kolekci.

Při otevření přidat form do kolekce a při zavření opět odebrat.

V události QueryUnload mateřského formuláře využijete možnost

zavření zrušit(Cancel), bude-li ve Vaší kolekci nějaký form.

Bude-li Forms kolekce, pak stačí v události projít, je-li

mimo hlavního formuláře jiný existující form a akci zrušit.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Private Sub Form_Load()

Form2.Show

Form3.Show

End Sub

Private Sub Form_Unload(Cancel As Integer)

Dim str As String

For Each frm In Forms

str = frm.Caption

If str <> "Form1" Then Cancel = True

Next

End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
Private Sub Form_Load()
Form2.Show
Form3.Show
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim str As String
For Each frm In Forms
str = frm.Caption
If str <> "Form1" Then Cancel = True
Next
End Sub

všemu rozumím až na "frm" jaký má význam?

Jinak moc děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

trošku jsem ještě pohledal po netu a našel toto:

If MsgBox("Are you sure you want to quit?", _
vbYesNo + vbQuestion, _
"Unload Test") = vbNo Then
Cancel = 1
End If

a funguje to

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já jsem tento kód (původně sloužil pro výpis všech spuštěných formulářů v aplikaci) převzal z knihy "1001 triků a tipů pro VB". Ale máte pravdu, že by tam mělo být "Form" a ne "frm". Jinak bych asi doporučil doplnit proceduru Form_Unload MSG-boxem, který by uživatele informoval proč se mu formulář nechce uzavřít.

Luboš.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A co tam ještě přidat:

Dim frm (as Form)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback