Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    avviare il caricamento di una progressbar quando il form si è caricato.

    ciao a tutti!
    cercavo per vb.net un modo per avviare una progressbar con una serie di istruzioni appena il form viene caricato in memoria. come posso fare?
    ecco il codice:

    codice:
    ProgressBar1.Value = 10 
    Delay(5) 
    ProgressBar1.Value = 75
    delay è una sub:

    codice:
            Const OneSec As Double = 1.0# / (1440.0# * 60.0#)
            Dim dblWaitTil As Date
            Now.AddSeconds(OneSec)
            dblWaitTil = Now.AddSeconds(OneSec).AddSeconds(dblSecs)
            Do Until Now > dblWaitTil
                Application.DoEvents() ' Allow windows messages to be processed
            Loop
    grazie!
    ehi ehi ehi! what's your name?

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Ciao. Ti sconsiglio vivamente di usare routine "fai da te" per genereare ritardo. Usa invece il metodo .Sleep(milliseconds) della classe System.Threading.Thread

    Per avviare la progressbar quando il form viene caricato puoi usare l'evento Load della Form stessa.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  3. #3
    Originariamente inviato da ShaleN
    Ciao. Ti sconsiglio vivamente di usare routine "fai da te" per genereare ritardo. Usa invece il metodo .Sleep(milliseconds) della classe System.Threading.Thread

    Per avviare la progressbar quando il form viene caricato puoi usare l'evento Load della Form stessa.

    grazie, shaleN!
    ho usato una routine "fai da te" perchè mi sembrava che il metodo sleep non funzionasse.
    comunque ora riprovo, mi pare però che lo sleep non mi carica il form, ma lo carica solamente dopo la pausa.
    per quando riguarda l'evento load, non ho avuto risultato: la progressbar è già caricata al 75% quando il form è attivo. ho provato anche con l'evento activated, ma ottengo lo stesso.
    cosa può essere?
    grazie ancora!
    ehi ehi ehi! what's your name?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il metodo Sleep mette in attesa il thread primario dell'applicazione, che è anche il thread che gestisce i messaggi in arrivo all'applicazione, tra cui quello che avverte l'interfaccia della necessità di ridisegnarsi.

    Usando Sleep, il thread rimane bloccato andando contestualmente a bloccare tutti i messaggi di refresh, impedendo quindi l'aggiornamento grafico dell'applicazione fino al termine della lunga elaborazione che si vuole intervallare con la ProgressBar.

    Per i processi lunghi, meglio affidarsi alla programmazione multithreading, oppure delegare a un Timer il compito di chiudere la finestra dopo qualche secondo, mostrata e aggiornata forzatamente appena prima di avviare l'elaborazione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Mi sembra che alka abbia risposto alle tue domande.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  6. #6
    certamente.
    quindi concludo che non c'è modo di poter vedere il caricamento della progressbar.
    è necessario avviare il form e attendere fino al completamento (cioè al 100%) delegando la funzione ad un timer.
    se ho capito bene, vi ringrazio tutti e buona settimana!
    ehi ehi ehi! what's your name?

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da binarydigit0101
    quindi concludo che non c'è modo di poter vedere il caricamento della progressbar.
    è necessario avviare il form e attendere fino al completamento (cioè al 100%) delegando la funzione ad un timer.
    C'è modo: delegare tutto quello che avviene all'avvio dell'applicazione (apertura della connessione o altre operazioni di inizializzazione) ad un thread che non sia quello primario, consentendo così a quest'ultimo di gestire il refresh dell'interfaccia grafica e di controllare il punto in cui si trova il caricamento, la percentuale di avanzamento (se è possibile calcolarla) e tutto il resto, nascondendo poi la finestra di presentazione (Splash Form) quando il tutto è terminato.

    Se le operazioni sono poche o brevi e il tempo di visualizzazione è molto ridotto, allora tanto vale utilizzare un Timer che, trascorso un certo intervallo, nasconda il Form di presentazione e basta, a mio avviso.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

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.