Acqua1
13-06-2003, 17.03.45
il mio è un problema banalissimo
Come si fa ad evitare lo "sfarfallio" dell'immagine nell'utilizzo dei controlli
"timer" ?
io ho una textbox grande quasi tutto un form, questa textbox deve visualizzare all’accadimento di un dato evento, del testo che però viene stampato carattere per carattere, come se un utente stesse digitando quel testo.
In questa fase di stampa “carattere x carattere” avviene lo sfarfallio di cui parlavo.
Per maggior chiarezza le faccio vedere i tentativi che ho fatto sin ora:
la sub normale è questa:
(shell = textbox, testo è una stringa che contiene tutto il testo da stampare)
Private Sub Timer1_Timer()
start = start + 1
Shell.Text = Left (testo, start)
....
End Sub
questa stampa tutta la stringa + un carattere ogni volta.
pensavo che lo sfarfallio potesse dipendere dal fatto che riscriveva ogni volta
tutta la stringa e ho fatto così:
Private Sub Timer1_Timer()
start = start + 1
Shell.Text = Shell + Mid(testo, 1 + start, 1)
....
End Sub
lo sfarfallio della schermata continua a presentarsi
allora ho provato a non usare i timer e ho creato una cosa che in teoria doveva
funzionare ma in pratica no:)
in un modulo ho dichiarato:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
For start = 0 To len(testo)
Shell.Text = Shell + Mid(testo, 1 + start, 1)
Sleep (100)
Next
la funzione non va perché il programma stampa il risultato solo quando ha finito
l'intero ciclo (quindi ti stampa tutta la stringa contenuta in testo, facendoti
inoltre aspettare il tempo di sleep x ogni carattere di testo).
Morale della favola, nn so cosa fare :), anche perché non so le esatte cause che
generano lo sfarfallio. ho provato a cambiare di molto la proprietà Interval
del timer portandola da 1 fino a 1000 ma lo sfarfallio c'era sempre.
Come si fa ad evitare lo "sfarfallio" dell'immagine nell'utilizzo dei controlli
"timer" ?
io ho una textbox grande quasi tutto un form, questa textbox deve visualizzare all’accadimento di un dato evento, del testo che però viene stampato carattere per carattere, come se un utente stesse digitando quel testo.
In questa fase di stampa “carattere x carattere” avviene lo sfarfallio di cui parlavo.
Per maggior chiarezza le faccio vedere i tentativi che ho fatto sin ora:
la sub normale è questa:
(shell = textbox, testo è una stringa che contiene tutto il testo da stampare)
Private Sub Timer1_Timer()
start = start + 1
Shell.Text = Left (testo, start)
....
End Sub
questa stampa tutta la stringa + un carattere ogni volta.
pensavo che lo sfarfallio potesse dipendere dal fatto che riscriveva ogni volta
tutta la stringa e ho fatto così:
Private Sub Timer1_Timer()
start = start + 1
Shell.Text = Shell + Mid(testo, 1 + start, 1)
....
End Sub
lo sfarfallio della schermata continua a presentarsi
allora ho provato a non usare i timer e ho creato una cosa che in teoria doveva
funzionare ma in pratica no:)
in un modulo ho dichiarato:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
For start = 0 To len(testo)
Shell.Text = Shell + Mid(testo, 1 + start, 1)
Sleep (100)
Next
la funzione non va perché il programma stampa il risultato solo quando ha finito
l'intero ciclo (quindi ti stampa tutta la stringa contenuta in testo, facendoti
inoltre aspettare il tempo di sleep x ogni carattere di testo).
Morale della favola, nn so cosa fare :), anche perché non so le esatte cause che
generano lo sfarfallio. ho provato a cambiare di molto la proprietà Interval
del timer portandola da 1 fino a 1000 ma lo sfarfallio c'era sempre.