whombat
Messages postés188Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention19 novembre 2011
-
20 oct. 2011 à 13:33
whombat
Messages postés188Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention19 novembre 2011
-
20 oct. 2011 à 21:44
Le principe est assez simple. Je dirais du niveau maternelle en programmation (mon niveau). Mais j'ai cherché, beaucoup, longtemps, sur le web et dans les forums, pour savoir et comprendre comment on pouvait facilement et de façon fluide faire défiler un texte dans un label. Des cotations boursières par exemple. => rien de concluant !
Alors voilà ma modeste contribution. Elle fonctionne aux petits oignons. Il faut une form, un label de toute la largeur (fond noir, forecolor lime) et SURTOUT, il faut que le label dépasse à droite de 4 à 5 cm du container. En effet, à l'affichage, le dernier mot, celui à droite, ne s'affiche pas lettre par lettre mais d'un coup. Pourquoi ? Je ne sais pas. J'ai tout essayé mais rien n'y a fait. Avec le label qui dépasse, c'est nickel, c'est fluide.
Lorsque les cotations sont téléchargées, il faut les mettre à la queue leu-leu dans un string (TextDesCot). Il faut prévoir aussi que le texte à afficher soit, en vitesse, suffisament rapide, mais pas trop, pour que le tableau 2 ait eu le temps de se charger en cotations et pour qu'il arrive pile à la fin du tableau 1 lorsque c'est au tour de ce dernier de se charger. C'est une question de timers, avec 1 's'. 1 Timer pour le label et 1 timer, dans le second thread, pour le téléchargement.
En espèrant que cela vous dépanne en cas de besoin...
Private Sub LabelDefil_Timer1(myObject As Object, ByVal myEventArgs As EventArgs) Handles Timer1.Tick
'Drapeau à bascule pour savoir si on lit le tableau de char 1 ou le 2
Static LeTab As Integer
'Variable du nombre de caractères dans le label
Dim TailLab As Integer = 106
'et la taille totale du texte qui défile
Dim TailText As Long = Len(TextDesCot)
'pour le Texte Défilant
'compteur
Dim i As Long
'String qui récupère les caractères à afficher
Dim Phrase As String = String.Empty
'différence entre le texte QUI RESTE a afficher et la capacité du label (106)
Dim Diff As Long = 0
'TextDesCot a déjà été déclaré lors du telechargement des cotations
If TextDesCot = Nothing Then
Label_Text_Defil.Text = "Chargement des cotations en cours... Un instant, S.V.P."
Exit Sub
End If
'On ne se sert que d'une fois du tableau en cours par téléchargement
'Le second tableau, durant ce temps, sur le second thread, telecharge les
'nouvelles cotations à jour (toutes les 15 secondes)
'la variable NouvText est un drapeau qui est levé dès que les cotations sont neuves
'La variable OuvreAppli est un drapeau qui est abaissé dès que la 1er tour a eu lieu
'ce qui fait que, si OuvreAppli=0 les 2 tableaux ont le même texte
If NouvText = 1 Then
If LeTab = 1 Then
TabCar2 = TextDesCot.ToCharArray
Else
If OuvreAppli = 0 Then
OuvreAppli = 1
TabCar2 = TextDesCot.ToCharArray
End If
TabCar1 = TextDesCot.ToCharArray
End If
If LeTab 1 Then LeTab 0 Else LeTab = 1
NouvText = 0
End If
'Bip est le premier caractère, dans le texte entier, d'une chaîne qui en compte 106
'S'il y a plus de caractères dans la chaîne à afficher que de disponibles sur l'étiquette
'alors c'est simple, on affiche les 106 premiers
'par exemple du 221e au 326e
If (Bip + 105) < TabCar1.Count - 1 Then
Phrase = Nothing
For i = Bip To Bip + 105 '106 caractères
Phrase = Phrase + TabCar1(i)
Next
Else
'sinon on affiche les caractères restants dans le tableau à afficher et on
'complète l'étiquette avec les nouveaux caractères du second tableau
Phrase = Nothing
Diff = (Bip + 105) - TailText
For i = Bip To TailText - 1
Phrase = Phrase + TabCar1(i)
Next
For i = 0 To Diff
Phrase = Phrase + TabCar2(i)
Next
End If
'et on affiche
Me.Label_Text_Defil.Text = Phrase
Me.Label_Text_Defil.Refresh()
'Puis on décale le Bip d'un cran vers la droite si Bip est < que le nombre de
'caractères à afficher
If Bip <> TailText - 1 Then
Bip = Bip + 1
'sinon on remet Bip à 0
Else
Bip = 0
End If
End Sub
Cordialement,
Whombat.
Prédire l'avenir est particulièrement aléatoire,
surtout lorsqu'il s'agit du futur.
A voir également:
Modeste contribution. Texte qui défile dans un label
cs_Le Pivert
Messages postés7899Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention21 septembre 2023137 20 oct. 2011 à 17:10
Bonjour whombat,
Encore plus simple:
1 label
1 Timer réglé à 200 (à modifier)
2 boutons
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'créez un texte défilant dans la boîte de label
Label1.Text = Mid(Label1.Text, 2, Label1.Text.Length - 1) & Mid(Label1.Text, 1, 1)
End Sub
'on demarre
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = "Bonjour et Bienvenue"
Timer1.Enabled = True
End Sub
'on stoppe
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Timer1.Enabled = False
End Sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 20 oct. 2011 à 13:41
Bonjour, Whmbat,
vraiment ... !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 20 oct. 2011 à 13:44
Sympa Whombat
Le forum n'est pas l'emplacement adéquat pour proposer tes codes.
Mieux vaudrait "Ajouter un code" dans l'onglet "Codes" (menu au survol de l'onglet) de la page principale, en y plaçant un projet complet en guise d'exemple.
Tu pourras ainsi mieux partager ton travail et recueillir les commentaires, voire les notations.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 20 oct. 2011 à 13:55
Salut(, jadck,
Oui ! et après s'être assuré (comme le prévoit le règlement) que le code que l'on souhaite déposer apporte quelque-chose de nouveau.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Vous n’avez pas trouvé la réponse que vous recherchez ?
whombat
Messages postés188Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention19 novembre 2011 20 oct. 2011 à 15:12
Je ne suis pas certain que ce soit réellement nouveau sauf qu'à beaucoup chercher je n'ai pas trouvé de solution aussi simple et adaptée aux langues comme le grec.
Si ça n'aide pas, ça ne mange pas de pain, si c'est utile à ne serait-ce qu'un débutant alors tant mieux.
Merci de votre visite et de vos commentaires. Chouette le petit drapeau ucfoutu...
Allez, faut que j'y aille. A+
Cordialement,
Whombat.
Prédire l'avenir est particulièrement aléatoire,
surtout lorsqu'il s'agit du futur.
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201314 20 oct. 2011 à 15:49
Salut,
sauf que dans ton dernier message tu fais fi de ce que te dit jack :
Le forum n'est pas l'emplacement adéquat pour proposer tes codes.
Mieux vaudrait "Ajouter un code" dans l'onglet "Codes" (menu au survol de l'onglet) de la page principale, en y plaçant un projet complet en guise d'exemple.
Tu pourras ainsi mieux partager ton travail et recueillir les commentaires, voire les notations.
Et vu la taille et la simplicité du code un Snippet serait même, le plus adéquat:
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 20 oct. 2011 à 16:18
Je ne suis pas certain que ce soit réellement nouveau sauf qu'à beaucoup chercher je n'ai pas trouvé de solution aussi simple et adaptée aux langues comme le grec.
Je ne comprends pas le rapport
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
whombat
Messages postés188Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention19 novembre 2011 20 oct. 2011 à 21:44
Bonjour à tous,
Je ne sais pas comment retirer ce que j'ai appelé une modeste contribution sinon je le ferais. Mais vous, qui avez peut-être accès à des ouvertures que je n'ai pas, pouvez le faire pour moi, et que cesse cette polémique qui n'a pas réellement lieu d'être.
Je ne ferais plus, plus jamais, je le jure.
Alors, bigfish_le_vrai, pour ce qui concerne les conseils de Jack... (Jack est toujours de bons conseils) Je les ai bien sûr entendus et intégrés. Mais venant d'un homme qui se veut donneur de leçon en qualité de logique (programmation) ce n'est pas brillant... JUSTEMENT, c'est parce que je savais mon code modeste, c'est parce que je ne suis pas 'supérieur et méprisant' que modestement, juste pour donner un petit coup de pouce, en catimini, je n'ai pas affiché mon astuce sur le mur des 'certitudes'.
Exact, Le Pivert. 9a marche super. J'aurais bien aimé trouver ce code de moi-même... Si on cherche "Texte qui défile" maintenant, on va pouvoir tomber sur votre astuce. Mes lignes auront au moins servi à ça.
Merci.
Cordialement,
Whombat.
Prédire l'avenir est particulièrement aléatoire,
surtout lorsqu'il s'agit du futur.