Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    keeper76
    Guest

    [VB6] MDIform

    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.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    53
    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...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    53
    ops... ActiveForm no ActiveControl....

  4. #4
    Utente di HTML.it L'avatar di JamesD
    Registrato dal
    Oct 2001
    Messaggi
    415
    ActiveForm si, che ti restituisce l'oggetto form attivo!

    Non per essere pignolo eh...

  5. #5
    Utente di HTML.it L'avatar di yyzyyz
    Registrato dal
    Oct 2001
    Messaggi
    1,653

    Re: [VB6] MDIform

    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    452
    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

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    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
    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
    In questo modo prima di chiedere le Frm le riduce a icona.
    LM

  8. #8
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Scusate non mi ero accorto della chiusura con X ...
    Per questa evenienza devi aggiungere nel modulo della MDI:
    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
    e dichiarare/spostare nella sezione (Generale) le due variabili:
    Dim intDom As Integer
    Dim byEsci As Byte
    Inoltre aggiungi nella routine in questa posizione byEsci = 1:
    Dim yForm As Form
    byEsci = 1
    LM

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    452
    GRAZIE 1000

  10. #10
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Contento che funzioni. Ciao
    LM

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.