Scintillement TextBox

Résolu
cs_cyriloo Messages postés 60 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 septembre 2007 - 12 sept. 2007 à 09:05
cs_cyriloo Messages postés 60 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 septembre 2007 - 12 sept. 2007 à 10:31
Salut,

J'ai un petit projet qui utilise un MSComm control pour lire sur un port série. Je reçoit du texte sur ce port série et je l'affiche dans un textbox. Il n'y rien d'éxtraordianire mais le textbox scintille lors du raffraichissement et c'est assez désagréable :

Private Sub Com_OnComm()
   
    Dim Str As Variant
   
    Select Case Com.CommEvent
     
    Case comEvReceive               'Quand je reçois un truc sur le port comm
   
        RxText.Text = RxText.Text + Com.Input   'On l'ajoute sur le textbox
        RxText.SelStart = Len(RxText.Text)            'On affiche tjs les derniéres lignes
       
    End Select
   
End Sub

Vous avez une idée pour éviter le scintillement du textbox??

Merci!

2 réponses

nah666 Messages postés 75 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 7 janvier 2008 1
12 sept. 2007 à 10:11
Comme tu l'as dit, c'est bien le rafraichissement qui pose probleme.

Tu ne peux pas l'éviter (à ma connaissance ), tu dois juste rafraichir moins souvent.

Pour cela, 2 solutions suivant ton besoin :

1)
Tu recoit des infos par "a coup", a ce moment la tu peux rafraichir juste quand la reception est terminée.
Pour cela, tu accumule ton info sur un string, et dans ton event de reception, tu reset un timer ( avec une valeur de 100ms par exemple ).

Ce timer joue le role de timeout de comm.

Dans l'évenement de timer ( qui se déclenche donc quand tu n'a rien recu depuis 100ms ), tu affiche ton string dans ta text box.

2)
Tu recois les infos en continu, a ce moment la, tu laisse tourner un timer en continu, dans lequel tu rafraichit ta textbox, avec ton string d'accumulation.

Aussi tu dois faire attention a la quantité de texte dans ton textbox, car le temps rafraichissement augmente avec la quantité de texte a afficher, et pour un (tres) gros texte, les resultats peuvent vite devenir catastrophiques.
Cette derniere remarque est surtout importante si ton logiciel tourne en continu.
0
cs_cyriloo Messages postés 60 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 septembre 2007
12 sept. 2007 à 10:31
Ok merci! Je vais tester avec le timer.
0
Rejoignez-nous