Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    12

    [VB6] - Msgbox e Form_Activate

    Ciao a tutti!

    Ho creato un form con le stesse sembianze di una MsgBox che viene caricato con la seguente riga da un altro 'form padre':
    FrmMsgBox.Show vbModal
    Una volta che l'utente effettua la scelta sul form-msgbox quest'ultima viene chiusa scrivendo:
    unload me
    il problema è che quando il 'form padre' ridiventa attivo viene chiamato l'evento Form_Activate di quest'ultimo, cosa che io NON voglio avvenga!

    Ho provato ad usare una MsgBox classica e osservo che quando quest'ultima viene chiusa l'evento activate del form non viene attivato (scusate il gioco di parole ;-))

    In sintesi: come posso impedire che venga chiamato l'evento Form_Activate (per emulare completamente il comportamento di una MsgBox)?

    Grazie per l'aiuto
    Marco

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se mostri il codice, dei vari form, fai prima ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Vero.

    Puoi usare una variabile booleana a livello di modulo. Esempio, nel form padre inserisci questo codice:

    codice:
    ' nella sezione (generale) del form padre
    Dim mbNonAttivare As Boolean
    
    Private Sub Form_Activate()
        If mbNonAttivare Then
            mbNonAttivare = False ' resetto al valore iniziale
            Exit Sub
        End If
    
        Rem Tuo codice da eseguire nell'evento Activate
    End Sub
    Poi prima di aprire il tuo MessageBox, imposti la variabile, così:

    codice:
    mbNonAttivare = True
    FrmMsgBox.Show vbModal
    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    12
    Ecco il codice esemplificativo

    Form padre
    Private Sub CmdAdd_Click()
    'If MsgBox("Vuoi aggiungere il dato?", vbYesNo) = vbYes Then LstDati.AddItem 11
    FrmMsgBox.Show vbModal, Me
    End Sub

    Private Sub Form_activate()
    LstDati.Clear
    For i = 1 To 10
    LstDati.AddItem i
    Next i
    End Sub

    Form MsgBox
    Private Sub CmdNo_Click()
    Unload Me
    End Sub

    Private Sub CmdSi_Click()
    FrmPadre.LstDati.AddItem 11
    Unload Me
    End Sub

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    759
    Viene anche da chiedersi se ciò che fai nell'evento Activate del form padre sia proprio indispensabile farlo lì. Se puoi farlo altrove (Form_Load ?) il problema scompare da sé.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E viene anche da chiedere se sia giusto chiamare il "form padre" dal form del msgbox, dato che cosi' quel form dipende dal form padre e non e' piu' un "generico msgbox" ... comunque, per rimediare ...

    nel form padre

    codice:
    Private fNoAct As Boolean
    
    Private Sub CmdAdd_Click()
       fNoAct = True
       FrmMsgBox.Show vbModal, Me
    End Sub
    
    Private Sub Form_Activate()
       If Not fNoAct Then
         ....
       End If
       fNoAct = False
    End Sub
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    12
    Prima di tutto vi ringrazio perchè sono riuscito, grazie ai vostri consigli, a risolvere il problema. A dire il vero già avevo pensato ad un flag ma volevo capire se c'erano altre soluzioni migliori

    ps: il codice dell'esempio è stato creato cercando di semplificare al massimo il problema, quindi capisco tutte le vostre perplessità

    Grazie ancora
    Marco

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.