Problema di REFRESH VIDEO



  • Problema di REFRESH VIDEO
    di hellboy (utente non iscritto) data: 17/11/2015 13:02:26

    Ho di nuovo un problema che si era presentato tempo fa e al quale non avevo trovato soluzione.

    Ho la necessità di avere un COUNTDOWN su una textbox, e di visualizzare i vari tempi.

    Una casella di testo dal nome Valore.

    Il ciclo funziona, solo che non riesco a visualizzare i vari passaggi nella casella di testo.

    Se metto un MSGBOX, riesco a visualizzare i valori, ma devo premere ogni volta un tasto.
    Con la funzione Sleep non fa nulla ... si vede l'inizio e la fine, come se non ci fosse.

    Come si risolve ?
    Si risolve ? :) :)
     
    Dim i As Integer
    i = 100
    Do While i > 0
       Valore.Text = i
       'MSGBOX "?"
       i = i - 1
    Loop



  • di Marius44 data: 17/11/2015 18:03:43

    Non dici se la TextBox è su una UserForm oppure su un Foglio.
    Ma mi chiedo e ti chiedo: perché usare una TextBox invece di una Label? A me sembra più adatta e probabilmente evidenzia le variazioni che vuoi.

    Ciao,
    Mario



  • di hellboy (utente non iscritto) data: 18/11/2015 08:33:24

    Si, la textbox è su un form.
    La textbox perchè,, oltre al ciclo do while, devo anche poter in seguito, immettere un valore ed avere il contro alla rovescia.

    Con la label funziona , che ne dici ?

    Oppure, un metodo alternativo ?

    Quando eseguo il conto alla rovescia, la textbox è come se si congelasse, per scongelarsi appena il ciclo finisce, e non riesco a vedere i passaggi intermedi.



  • di Marius44 data: 18/11/2015 16:01:09

    In un gioco che avevo ideato era necessario "visualizzare" lo scorrere del tempo. Avevo realizzato una Form in cui, oltre al necessario per il gioco, vi erano delle Labels che visualizzavano il tempo dopo che alcune macro lo calcolavano.
    Ti allego quanto fatto e vedi se puoi adattarlo alle tue esigenze.

    Ciao,
    Mario



  • di Hellboy (utente non iscritto) data: 18/11/2015 19:18:23

    Grazie Marius
    e grazie a tutti.

    Ho risolto con il codice sotto.

    Ovviamente, funziona sia con la label con la textbox
     
    Dim i As Integer
    i = 100
    Do While i > 0
       Label9.Caption = i
       Me.TextBox1.Text = i
       Sleep (3)
       DoEvents
       i = i - 1
    Loop



  • di Marius44 data: 18/11/2015 23:05:45

    Scusa Heliboy ma la risposta per gli utenti con la versione 2007 devi darla completa. Come hai postato tu, pur mettendo il codice in una macro qualsiasi (Sub, Evento di Foglio, Pulsante ActiveX), non funzionerebbe, manca qualcosa.
    Manca la dichiarazione:

    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long)

    Correggimi se sbaglio.
    Ciao,
    Mario



  • di Hellboy (utente non iscritto) data: 19/11/2015 08:48:00

    Basta in un form qualunque, inserire una textbox e un commandbutton
    Dim i As Integer
    i = 1000
    Do While i > 0
    TextBox1.Text = i
    DoEvents
    i = i - 1
    Loop

    Se imposti i=1000 si vede lo scorrere dei numeri, ovviamente, mettendo un rallentatore tipo un delay o uno sleep, potrai vederli meglil, ma cmq cosi funziona, non c'è bisogno di null'altro.
    Quello che conta è il DoEvents, che disimpegna la CPU e mentre scorre i ciclo DO WHILE, visualizza anche il contenuto dinamico della casella testo.
    Tutto qua.