Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Come chiudere un form

    Salve a tutti
    Pongo un quesito apparentemente banale:
    avvio la mia applicazione in VB6 con un primo form (form1)
    dal questo form, con un pulsante, ne avvio un altro (nello specifico il form10) nascondendo il primo con questo codice:

    Public Sub Command8_Click() 'Apro il form
    Form10.Show
    Form1.Hide
    End Sub

    faccio quello che devo fare e chiudo il form appena aperto (form10) e mostro nuovamente il primo form (form1) con questo codice:

    Public Sub Command1_Click()
    Form1.Show
    Unload Form10
    End Sub

    A questo punto faccio quello che devo fare anche con il primo form e chiudo tutto con questo codice:

    Public Sub Command9_click() 'Chiudi programma
    Unload Form5
    Unload Form1
    End Sub

    Il form5 è un form che lavora in background per la maggior parte del tempo.

    Il problema è che quando chiudo tutto in realtà spesso l'applicazione continua a girare senza più form visibili: se sono in ambiente di sviluppo rimane disabilitato il pulsante "Start "e abilitato il pulsante "End" fino alla pressione di quest'ultimo, mentre se faccio girare l'eseguibile, scompaiono tutte le finestre ma in task manager continua a essere presente il programma.

    Ci sto impazzendo.
    Che ne dite? Ho fatto qualche cacchiata?????

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Bisogna controllare il codice dei vari form.

    E' probabile che ci sia qualche oggetto, connessione, risorsa in genere, non rilasciata correttamente che impedisce il termine del processo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Qui l'ho aggiunto io. Tienilo a mente per il futuro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Ok ALKA, in genere sono lettore, scrivo raramente. Grazie

    Oregon - Ma come faccio a capire quale dei form è rimasto aperto? C'è un modo in ambiente di sviluppo per vedere cosa rimane attivo/aperto? Il problema è che non capisco con esattezza quale dei form ha problemi: credo di averlo individuato, ma non ho modo di confermare la cosa. Ora come ora ho controllato il codice di tutti i form (sono 5) ma non ho trovato nulla che resti in sospeso. Se individuassi esattamente il form mi sarebbe più facile eseguire controlli e potrei farmi venire dubbi più concreti.

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    - Metti in pausa il progetto
    - nella finestra Immediate scrivi:
    ?FormsCount + INVIO

    Avrai il numero di form ancora aperti.

    Se invece scrivi:

    ?Forms(0).Name + INVIO

    avrai il nome del 1° form aperto

  6. #6
    Grandissimo gibra!!!! Mi hai proprio dato le informazioni che cercavo.
    Ora che ho individuato il form incriminato, però lo devo chiudere.
    La chiusura del form non avviene attraverso il form stesso, ma da un altro form.
    Da un primo form (il Form1) avvio il secondo form (il Form5) con
    Form5.Show
    da questo form torno al primo, ma senza chiuderlo, con
    Form5.Hide
    solo quando chiudo il Form1 chiudo anche il Form5 con
    Unload Form5
    Unload Form1
    ma il 5 rimane presente, anche se invisibile e fastidioso (tipo fantasma)

    Pensavo di provare
    Ghostbusters.Form5
    che ne dite? Magari avete qualche cosa di meglio.

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    L'unico consiglio, ed è anche l'unica soluzione, è quello di mettere un break (F9) sulla riga

    Unload Form5

    ed eseguire passo per passo (F8) le istruzioni per capire in quale punto del codice viene ricaricato il form, perchè nel 99,9% dei casi è per questo che accade.

  8. #8
    Ho già provato con un break sulla riga, anzi ho provato a mettere i break su tutte le righe di chiusura in tutti i form e pare che vengano eseguite tutte correttamente. Credo di dover fare passare ancora tutto il codice alla ricerca di qualche cavolata che ho fatto. Ma almeno adesso ho un riferimento.
    Piuttosto, se per errore avviassi 2 volte il form, è possibile che si debba eseguire 2 volte la chiusura?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma cosa utilizzi in quel form?

    Crei oggetti? Istanze di Office?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    E' una grande MSFlexGrid
    Le uniche cose che faccio sono la compilazione e il riordinamento crescente dei dati nelle colonne. Selezionando una riga i dati vengono rimandati ad un altro form.
    I dati in comune tra i from sono tutti dichiarati in un modulo come public.

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.