Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193

    [VB6] Come controllare se un form è aperto.

    Ciao ragazzi,in pratica dopo aver implementato il datareport nel mio programma ho inserito un'icona di stampa e una di preview ma ho un problema. In entrambe le icone devo inserire una funzione che sia in grado di controllare se i tre form "stampabili" sono aperti o meno,come posso fare?Non ho idea di come poter fare...magari sarà una banalità e non mi viene in mente.Grazie
    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Puoi esaminare gli elementi (oggetti Form) della collezione Forms.

  3. #3
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193
    L'ho già fatto ma non sono riuscito a trovare la proprietà adatta. Purtroppo sono ancora alle prime armi ed ho bisogno di aiuto!
    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    La proprietà adatta è Name.
    Mostra ciò che hai fatto che vediamo cos'è che non va.

  5. #5
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193
    Ancora non ho fatto niente...ho solamente messo il tasto(stampa) in una toolbar. quando clicco ci deve essere un evento che dice che non si può stampare se non è aperto uno dei form sul quale si possa fare. Allora intervengo io via codice per dirgli se il form è aperto o no in modo tale da poter attivare la funzione.Quindi dovrei fare così???
    codice:
    If frmGriglia.Name = ??? Then
          rptGriglia.Show
    Else
          MsgBox "Per poter stampare devi aprire uno dei Database registrati", vbOKOnly, "Stampa"
    End If
    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    L'ho già fatto ma...
    Ancora non ho fatto niente...
    Non per essere pignoli, ma mi sembra che ci sia una certa contraddizione.

    Ti avevo suggerito di vedere se il form cercato è presente nella collezione Forms.
    Definisci una variabile oggetto di tipo Form
    Dim oForm as Form
    Fai un ciclo

    For Each oForm in Forms
    If oForm.Name = "frmGriglia" Then
    ...
    End If
    Next

  7. #7
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193
    Originariamente inviato da Grumpy
    Non per essere pignoli, ma mi sembra che ci sia una certa contraddizione.

    Ti avevo suggerito di vedere se il form cercato è presente nella collezione Forms.
    Definisci una variabile oggetto di tipo Form
    Dim oForm as Form
    Fai un ciclo

    For Each oForm in Forms
    If oForm.Name = "frmGriglia" Then
    ...
    End If
    Next
    Scusa ma sei tu che non hai capito...Io con "l'ho già fatto" intendevo dire che il form è già stato costruito ed quindi presente nella collezione Forms. Quindi nessuna contraddizione.

    Ok,il codice non è male...fa più o meno la funzione che serve.Ma a me serve sapere se un determinato form è aperto mentre questo non funziona bene.

    codice:
           Dim oForm As Form
    
            For Each oForm In Forms
            If oForm.Name = "frmGriglia" Then
                MsgBox "tutto ok"
            Else
                MsgBox "niente ok"
            End If
            Next
    Facendo così mi da per OGNI form(ma non necessariamente frmgriglia) una msgbox con tutto ok.Mi spiego meglio. In questo caso mi conta due form (MDIForm, frmglia). Così lui una volta mi dice "niente ok",non trovando l'frmGriglia ed una vaolta "tutto ok" trovando appunto quanto cerca. Come posso ovviare questo problema??
    Ciao

  8. #8
    Originariamente inviato da rs125
    ...Io con "l'ho già fatto" intendevo dire che il form è già stato costruito ed quindi presente nella collezione Forms.
    Cosa intendi per "non aperto" ?

    1) non e' stato ancora caricato/utilizzato, oppure l'utente l'ha chiuso col tasto "X" e quindi e' stato Unload-ed, allora NON sara' presente nella collezione Forms, v. risposta di Grumpy.

    2) l'hai reso invisibile (Hide) da codice (oppure l'utente l'ha chiuso col tasto "X", tu da codice hai modificato l'azione da Unload a semplice Hide), allora verifica la proprieta' Visible .

    3) e' stato iconizzato o minimizzato (che dir si voglia), verifica la proprieta' WindowState .

    Una di queste... che ne dici ? Ciao !
    IceCube_HT (VB6 fan Club)

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Scusa ma sei tu che non hai capito..."
    Eh sì, deve essere prorpio così.

    Ok,il codice non è male...
    Grazie, sono lusingato

    mentre questo non funziona bene.
    Ovvio che non funziona bene. Nel frammento che ti avevo postato avevo messo dei puntini di sospensione; se tu avessi colto l'occasione per imparare come funziona un ciclo For...Next avresti scoperto che se ne può anche uscire quando si è trovato ciò che si cerca.

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

    Re: [VB6] Come controllare se un form è aperto.

    Originariamente inviato da rs125
    Ciao ragazzi,in pratica dopo aver implementato il datareport nel mio programma ho inserito un'icona di stampa e una di preview ma ho un problema. In entrambe le icone devo inserire una funzione che sia in grado di controllare se i tre form "stampabili" sono aperti o meno,come posso fare?Non ho idea di come poter fare...magari sarà una banalità e non mi viene in mente.Grazie
    Devi utilizzare delle variabili globali, una per ogni form, che ti indicano se è aperto o meno quel form.
    Devi dichiarare le variabili come Public in modulo BAS , altrimenti il programma non le potrà 'vedere'. Ecco come:

    Crei le dichiarazioni nel modulo BAS (qualsiasi modulo va bene), e la funzione VerificaFormAperti:

    codice:
    Public gbForm1Aperto As Boolean ' serve per il Form1
    Public gbForm2Aperto As Boolean ' serve per il Form2
    Public gbForm3Aperto As Boolean ' serve per il Form3
    
    Public Function VerificaFormAperti () As Boolean
        VerificaFormAperti =False
        If gbForm1Aperto AND gbForm2Aperto AND gbForm3Aperto Then
            Rem Sono tutti aperti!
            VerificaFormAperti = True
        End If  
    End Function
    Poi in ogni Form negli appositi eventi imposti il valore della variabile quando si apre il form (Form_Load) e quando si chiude (Form_Unload).

    Esempio per il Form1 :
    codice:
    Private Sub Form_Load()
        gbForm1Aperto = True
    End Sub
    
    Private Sub Form_Unload()
        gbForm1Aperto = False
    End Sub
    Devi poi ripetere la stessa cosa per tutti i form che vuoi verificare.

    Quando vuoi sapere se sono aperti, chiamerai la funzione VerificaFormAperti()
    per saperlo:
    codice:
     
    If VerificaFormAperti() = True Then
        Rem Stampa i Form
    Else
        Rem Non Puoi Stampare!
    End If
    Ciao

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.