Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    7

    problemi di sfarfallio col controllo timer

    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)

    grazie!

    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.

  2. #2
    Fai una prova a impostare la proprietà della form.Autoredraw su true
    Il dubbio non è piacevole, ma la certezza è ridicola. Solo gli imbecilli son sicuri di ciò che dicono.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    7
    il problema continua a presentarsi

  4. #4
    Aggiungi un "DoEvents" dopo allo Sleep(100). Così dovrebbe risolversi.

    Ciao
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    7
    grazie!

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.