Ho un programma costituito da un MDIForm e un normale Form, vorrei fare un controllo del genere: quando chiudo il form MDI da Menu' o dalla X controllasse se ci sono altri form aperti del programma e se cosi' fosse che mi restituisse un msgbox.
Ho un programma costituito da un MDIForm e un normale Form, vorrei fare un controllo del genere: quando chiudo il form MDI da Menu' o dalla X controllasse se ci sono altri form aperti del programma e se cosi' fosse che mi restituisse un msgbox.
prova con la proprietù ActiveControl della Form madre, dovrebbe restituirti il nome della finestra figlia attiva, ovviamente se è aperta la chiudi e cicli fino a quando non le hai chiuse tutte
l'ho usata una volta parecchio tempo fa e non mi ricordo perfettamente...
![]()
ops... ActiveForm no ActiveControl....
![]()
![]()
ActiveForm si, che ti restituisce l'oggetto form attivo!
Non per essere pignolo eh...![]()
Originariamente inviato da keeper76
Ho un programma costituito da un MDIForm e un normale Form, vorrei fare un controllo del genere: quando chiudo il form MDI da Menu' o dalla X controllasse se ci sono altri form aperti del programma e se cosi' fosse che mi restituisse un msgbox.codice:Private Sub CloseAll() On Error Resume Next Err = 0 Do Until Err Unload MDIForm1.ActiveForm Loop End Sub
Ragazzi non ci sono riuscito, magari qualcuno mi può dare delle info.
Praticamente quando io chiudo la mia applicaz. chiudendo un MDIForm, devo controllare se ci sono altri form aperti se ci sono form aperti inviare un msgbox.
grazie 1000 come sempre
md76, ti ho fatto un esempio di routine, vedi se ti va bene:
Fai un menù nella MDIForm1 con due comandi: mnuFileApri e mnuFileEsci.
Da inserire nel modulo della MDIForm1
In questo modo prima di chiedere le Frm le riduce a icona.codice:Private Sub mnuFileApri_Click() Load Form2 Load Form1 End Sub ' ------------------------------------ Private Sub mnuFileEsci_Click() ' Ciclo per chiudere tutte le Form: Dim yForm As Form Dim intDom As Integer For Each yForm In Forms If yForm.Name <> "MDIForm1" Then intDom = MsgBox(yForm.Name & " - Prima di uscire salvare il file ? Clic su OK per effettuare l'operazione," & Chr(13) _ & "su Annulla per proseguire senza salvare il file.", vbExclamation + vbOKCancel, "... ... ...") If intDom = 1 Then ' Vai alla routine salva yForm.WindowState = vbMinimized 'Minimizza la Frm End If If intDom = 2 Then 'Annulla yForm.WindowState = vbMinimized 'Minimizza la Frm End If Unload yForm Set yForm = Nothing End If Next yForm Unload MDIForm1 Set MDIForm1 = Nothing End Sub![]()
LM
Scusate non mi ero accorto della chiusura con X ...
Per questa evenienza devi aggiungere nel modulo della MDI:
e dichiarare/spostare nella sezione (Generale) le due variabili:codice:Private Sub MDIForm_QueryUnload(Cancel As Integer, unloadMode As Integer) ' Invia al Comando di menu Esci: If byEsci = 0 Then Call mnuFileEsci_Click End If End Sub
Dim intDom As Integer
Dim byEsci As Byte
Inoltre aggiungi nella routine in questa posizione byEsci = 1:
Dim yForm As Form
byEsci = 1
![]()
LM
GRAZIE 1000