cs_cyriloo
Messages postés60Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention12 septembre 2007
-
12 sept. 2007 à 09:05
cs_cyriloo
Messages postés60Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention12 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??
nah666
Messages postés75Date d'inscriptionsamedi 30 août 2003StatutMembreDernière intervention 7 janvier 20081 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.