J'ai fait plusieurs recherche sur le site afin de trouver comment faire défiler du texte dans un label.
J'ai télécharger plusieurs projet présent sur le site, certains avec plus de 50 lignes de programmation juste pour faire défiler du texte horizontalement de la droite vers la gauche dans un label.
Finalement je suis tomber sur un programme de lecteur MP3 intéressant, surtout pour le défilement du texte qui ne tient qu'en une seule ligne ...
Mais voici mon problème, le texte défile très bien, disparaît très bien à gauche du label mais par contre il réapparait mot entier par mot entier du coté droit ce qui fait saccader surtout quand il y a des longs mots à faire défiler.
Voici cette ligne de commande qui est placé dans un timer :
Bonsoir Kevin,
très juste ! j' ai pas retenu le détail du sens du défilement.
Maintenant il a deux au prix d' un
Et comme Bonus, un exemple sans container.
Option Explicit
Dim IniCaption As String
Const Plus = 100
Private Sub Form_Load()
' sauver le contenu
IniCaption = Label1.Caption
'initialiser
Label.AutoSize=False
Label1.Caption = Space(Plus) & Label1.Caption
End Sub
Private Sub Timer1_Timer()
'retirer un caractère à chaque passage.
Label1.Caption = Mid(Label1.Caption, 2, Len(Label1.Caption))
If Label1.Caption = "" Then _
Label1.Caption = Space(Plus) & IniCaption
End Sub
'Plus est le nombre d' espace nécéssaire pour faire décaler le contenu du label vers la droite.
A ajuster donc.
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
J'allait dire la même chose que LIBRE_MAX, mais il a fait une petit erreur, son texte défile de gauche à droite, c'est à dire qu'il commence à la fin..
Donc plutôt:
Label.Left = Picture.Width
Pas = -1
Sub Timer_Tick()
Label.Left = Label.Left + Pas
If Label.Left <= -Label.Width Then _
Label.Left = Picture.Width
End Sub
Fixe l'interval du timer à 40 au maximum (pour avoir un mouvement fluide) et joue avec la valeur du pas pour changer la vitesse de défilement.
J'ai tester vos codes mais aucun des 2 ne fonctionnent chez moi, bon faut dire aussi que je suis une sacrée buse sous VB.
Voici le code que j'ai mis avec une picturebox nommé Picture1 et à l'intérieur un label nommé label1 (j'ai tester avec une frame à la place de la picturebox mais pareil) :
Private Sub Form_Load()
Label1.Left = Picture1.Width
Pas = -1
End Sub
Private Sub Timer1_Timer()
Label1.Left = Label1.Left + Pas
If Label1.Left <= -Label1.Width Then _
Label1.Left = Picture1.Width
End Sub
J'ai mis l'interval du timer à 40, mais rien ne se passe, je ne vois même pas mon texte.
++, mais merci quand même, et si vous avez une solution je suis preneur
Tu vas peut être pas me croire mais ça bouge pas du tout ...
A la rigueur si j'agrandis ma picturebox par rapport à mon label, le texte est juste déplacé à l'extrême droite de ma picturebox, mais aucun mouvement en vue ...
J'ai encore un petit soucis, mon texte défile nickel maintenant, mais le problème c'est que ma police est assez grande (de taille 24) et lors du défilement sa scintille vraiment beaucoup. Peut on remédier à ce scintillement ?
Alors là , tu nous poses vraiment une colle
Avec DrawText peut être, mais ça marche qu' avec des controls qui ont un Hwnd , je crois.
Il faudra donc troquer ton label contre un TextBox ou PictureBox.
Fais une recherche à ce sujet.
Désolé, je n' ai pas de code à ce proposer.
Bonne continuation.
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Avec un textbox ça ne saccade plus, malheureusement il n'y a pas de fonction autosize sur les textbox
donc si on veut faire défiler du texte à longueur aléatoire ça pose soucis, par contre si le texte est toujours de la même longueur sa passe bien... il me reste plus qu'à trouver une bidouille pour du texte aléatoire...