Modeste contribution. Texte qui défile dans un label [Résolu]

whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention - 20 oct. 2011 à 13:33 - Dernière réponse : whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_Le Pivert 5211 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 juillet 2018 Dernière intervention - 20 oct. 2011 à 17:10
3
Merci
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



@+Le Pivert

Merci cs_Le Pivert 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de cs_Le Pivert
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 20 oct. 2011 à 13:41
0
Merci
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
Commenter la réponse de ucfoutu
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 20 oct. 2011 à 13:44
0
Merci
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)
Commenter la réponse de cs_Jack
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 20 oct. 2011 à 13:55
0
Merci
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
Commenter la réponse de ucfoutu
whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention - 20 oct. 2011 à 15:12
0
Merci
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.
Commenter la réponse de whombat
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 20 oct. 2011 à 15:49
0
Merci
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:

http://www.codyx.org/

A+
Commenter la réponse de bigfish_le vrai
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 20 oct. 2011 à 16:18
0
Merci
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
Commenter la réponse de ucfoutu
whombat 188 Messages postés mercredi 12 octobre 2005Date d'inscription 19 novembre 2011 Dernière intervention - 20 oct. 2011 à 21:44
0
Merci
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.
Commenter la réponse de whombat

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.