Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Finestra di attesa

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492

    Finestra di attesa

    Salve a tutti
    vorrei creare per la mia applicazione una Form apposita con scritto soltanto "ATTENDERE PREGO", da richiamare da altre form, quando viene effettuata qualche operazione.
    Ora il mio problema è come richiamare la Form di attesa, in modo che la Form che l'ha invocata continua a fare le operazioni, e la stessa Form di attesa risulta sempre in primo piano, e si chiuderà automaticamente soltanto quando le operazioni sono state completata.
    facendo un semplice show della form di attesa non riesco ad ottenere il risultato sperato :-(

    Qualcuno mi potrebbe aiutare?
    ringrazio tutti

  2. #2
    Quale parte del "risultato sperato" non ottieni?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    immagino il "sempre in primo piano", perchè a quanto so se apri una finestra col vbmodal, il codice della chiamante non viene eseguito finchè non chiudi la stessa
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    accade che la form2, lanciata dalla form1, mi blocca il proseguimento delle operazione della form1, mentre invece io voglio che avendo in primo piano la form2, la form1 continui con le sue operazioni, e quando completato ritornare in primo piano eliminando la form2.
    Per intenderci, quello che vorrei realizzare è tipo quando effettuiamo l'installazione di un programma, che mentre copia i file c'è una'altra finestra in primo piano che ci dice di attendere, che una volta terminata l'installazione scompare

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    infatti il problema è proprio quello che evidenzia wallrider, io voglio che il codice della chiamante venga eseguito fino alla fine, e proprio alla fine mi chiude anche la finestra chiamata

  6. #6
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    potresti mettere la chiamante "invisibile" :master:
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    in che modo?potresti fare qualche esempio o rimandarmi a quelche esempio con codice?

  8. #8
    Carica la finestra come figlia della form principale:
    codice:
    frmFormAttesa.Show 0, frmFormPrincipale
    dove frmFormAttesa è il nome della form di attesa e frmFormPrincipale è quello della form principale (se stai eseguendo questo codice da una procedura evento di frmFormPrincipale puoi anche passare Me come secondo argomento). In questa maniera non verrà bloccata l'esecuzione del codice e la finestra rimarrà sempre in primo piano rispetto a frmFormPrincipale. Se invece vuoi che la finestra sia sempre in primo piano a livello di sistema devi usare l'API SetWindowPos.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    271
    fai così:

    formprincipale.enabled = false
    formattesa.show

    [tutto il codice che vuoi]

    unload formattesa
    formprincipale.enabled = true


    Ciao
    Signori si nasce! E io modestamente, lo nacqui!!!
    Totò

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Originariamente inviato da MItaly
    Carica la finestra come figlia della form principale:
    codice:
    frmFormAttesa.Show 0, frmFormPrincipale
    dove frmFormAttesa è il nome della form di attesa e frmFormPrincipale è quello della form principale (se stai eseguendo questo codice da una procedura evento di frmFormPrincipale puoi anche passare Me come secondo argomento). In questa maniera non verrà bloccata l'esecuzione del codice e la finestra rimarrà sempre in primo piano rispetto a frmFormPrincipale. Se invece vuoi che la finestra sia sempre in primo piano a livello di sistema devi usare l'API SetWindowPos.
    Ho fatto come suggerito, e facendolo in un progetto nuovo, solo per vedere come funzionava, va come a me interessa, però se poi lo applico al mio progetto, mi da questo errore
    Errore di run-time '401'
    Impossibile visualizzare form non a scelta obbligatoria se è già
    visualizzato un form a scelta obbligatoria
    premetto che la form1 che deve lanciare la form di attesa, a sua volta è aperta da un'altra form0, e nello startup della form1 ho Me.Show vbModal per l'apertura della stessa
    Potrebbe essere questo il prob?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.