Malokoxis
Messages postés83Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention22 février 2021
-
6 août 2019 à 12:23
Malokoxis
Messages postés83Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention22 février 2021
-
11 août 2019 à 10:52
Bonjour,
J'ai un label qui est mise à jour très souvent, parfois toutes les ms, pour afficher l'évolution d'une tâche.
Quelle est la meilleurs solution pour qu'il ne scintille pas ?
J'ai pensé à l'actualisé moins souvent, avec un timer par exemple, mais ça veut dire changer pas mal de code (il y a beaucoup d'étapes dans la tâche et le texte change à chaque étape).
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 8 août 2019 à 13:45
Bonjour
Quel intérêt d'avoir un label qui change aussi vite ?
Supprimes le carrément
Malokoxis
Messages postés83Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention22 février 20212 8 août 2019 à 20:29
Merci de ta réponse vb95...
Si je demande comment faire c'est que j'ai besoin de ce label... Sinon effectivement je l'aurais supprimé.
J'ai fais la solution dont j'ai parlé dans mon post de départ
Ce n'était finalement pas si compliqué et ça marche bien.
Je stocke le texte dans une variable. Et un timer affiche la variable dans un label toute les 250ms. Cane clignote plus.
JeuDuTaquin
Messages postés251Date d'inscriptionmardi 4 juillet 2017StatutMembreDernière intervention31 mai 20237 Modifié le 8 août 2019 à 23:35
Si je demande comment faire c'est que j'ai besoin de ce label... Sinon effectivement je l'aurais supprimé.
Salut Vb95 et Malokoxis…
Malokoxis… ne me dit pas que tu utilisais le label comme zone de stockage !!!
C'est possible, mais fortement déconseillé.
En effet, le contrôle "LABEL", tout comme les "TEXTEBOX" interprètent le texte très sommairement, et en cas de texte en UTF8/16... ou autre textes exotiques, le texte récupéré sera corrompu avec des caractères "?" en lieu est place de caractères spéciaux hors Polices d'affichage, des caractères cabalistiques pour les accents !
Donc, utilise TOUJOURS une "String" en "PUBLIC" (margée ou pas), et non un contrôle. A l'état brut, tu n'auras pas d' "auto-conversion" sur une sortie (noms de fichiers, texte UTF et retours chariots auto-amputés.)
Sinon, en 250ms, on a pas trop le temps de tout lire…
;)
Malokoxis
Messages postés83Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention22 février 20212 9 août 2019 à 21:38
Non ce n'était pas du stockage, c'était de l'affichage pur. Mais maintenant je stocke dans une variable pour ensuite afficher toute le 250ms.
C'est un label d'affichage de progression (Ligne xxxx/xxxx).
D'ailleurs, cette application que j'ai créé fabrique des fichier KML contentant parfois plusieurs milliers de ligne. Et la je passe par un richtextbox comme stockage... Très, trop long... il faut que je passe cela par une variable. Il y a des contraintes particulières à passer de l'un à l'autre ?
JeuDuTaquin
Messages postés251Date d'inscriptionmardi 4 juillet 2017StatutMembreDernière intervention31 mai 20237
>
Malokoxis
Messages postés83Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention22 février 2021 Modifié le 10 août 2019 à 07:13
Tu peux aussi rafraîchir tous les 100 lignes…
if (NewVal\100)*100<>left(ValLabel.text,instr(ValLabel.text,"L") -1) THEN
ValLabel.text=(NewVal\100)*100 & " Lignes \ " & TotLigne
end if
Nota : "\" et non "/", car ça te donne une valeur entière.
ça mange pas mal de cycles, ..
Tu peux aussi faire deux Labels, un pour ~newval~ et un pour ~Lignes \ " & TotLigne~
Car tu gagnera du temps en supprimant le Left$.
LabTot.text="Lignes \ " & TotLigne
'(…)
if (NewVal\100)*100<>ValLabel.text THEN ValLabel.text=(NewVal\100)*100
Tu gagnera en rapidité...
Malokoxis
Messages postés83Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention22 février 20212
>
JeuDuTaquin
Messages postés251Date d'inscriptionmardi 4 juillet 2017StatutMembreDernière intervention31 mai 2023 11 août 2019 à 10:52
8 août 2019 à 20:29
Si je demande comment faire c'est que j'ai besoin de ce label... Sinon effectivement je l'aurais supprimé.
J'ai fais la solution dont j'ai parlé dans mon post de départ
Ce n'était finalement pas si compliqué et ça marche bien.
Je stocke le texte dans une variable. Et un timer affiche la variable dans un label toute les 250ms. Cane clignote plus.
Modifié le 8 août 2019 à 23:35
Salut Vb95 et Malokoxis…
Malokoxis… ne me dit pas que tu utilisais le label comme zone de stockage !!!
C'est possible, mais fortement déconseillé.
En effet, le contrôle "LABEL", tout comme les "TEXTEBOX" interprètent le texte très sommairement, et en cas de texte en UTF8/16... ou autre textes exotiques, le texte récupéré sera corrompu avec des caractères "?" en lieu est place de caractères spéciaux hors Polices d'affichage, des caractères cabalistiques pour les accents !
Donc, utilise TOUJOURS une "String" en "PUBLIC" (margée ou pas), et non un contrôle. A l'état brut, tu n'auras pas d' "auto-conversion" sur une sortie (noms de fichiers, texte UTF et retours chariots auto-amputés.)
Sinon, en 250ms, on a pas trop le temps de tout lire…
;)
9 août 2019 à 21:38
C'est un label d'affichage de progression (Ligne xxxx/xxxx).
D'ailleurs, cette application que j'ai créé fabrique des fichier KML contentant parfois plusieurs milliers de ligne. Et la je passe par un richtextbox comme stockage... Très, trop long... il faut que je passe cela par une variable. Il y a des contraintes particulières à passer de l'un à l'autre ?
Modifié le 10 août 2019 à 07:13
Nota : "\" et non "/", car ça te donne une valeur entière.
ça mange pas mal de cycles, ..
Tu peux aussi faire deux Labels, un pour ~newval~ et un pour ~Lignes \ " & TotLigne~
Car tu gagnera du temps en supprimant le Left$.
Tu gagnera en rapidité...
11 août 2019 à 10:52