Défilement de texte dans un label

Résolu
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011 - 30 juil. 2008 à 00:45
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011 - 30 juil. 2008 à 23:42
Bonsoir tout le monde,

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 :

Label_Titre.Caption = Mid(Label_Titre.Caption, 2) & Mid(Label_Titre.Caption, 1, 1)

Ma question, est-il possible de faire défiler mon texte lettre par lettre de la droite vers la gauche à la place de mot par mot ?

Merci beaucoup, bonne journée ;-)

16 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
30 juil. 2008 à 00:59
..container (Picturebox ou Frame)

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
30 juil. 2008 à 02:02
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.
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
30 juil. 2008 à 21:06
deux choses l' une (peut être même les deux )

ta variable Pas est bien déclarée ?
ton Timer est bien en marche ?

Écartant le doute:

Private Sub Form_Load()
  'laisses ton label bien au centre
  Timer1.Interval=1
  Timer1.Enabled=True

End Sub

Private Sub Timer1_Timer()
 Label1.Left = Label1.Left -10
    If Label1.Left = 0 Then _
        Label1.Left = 900
End Sub

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
3
bonjourcheval Messages postés 228 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 8 août 2011
30 juil. 2008 à 21:09
option explicit



*Message subliminal*

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
30 juil. 2008 à 01:19
Salut,

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.
2
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
30 juil. 2008 à 00:58
Bonsoir,
Places ton label dans un container (picturebox ou label)
et fait jouer sa propriété Left.


Au début
Label.AutoSize=True
Label.Left=-Label.Width
Pas=10


 Sub Timer()
  Label.Left=Label.Left+Pas
  If Label.Left>=Picture.Width Then _
      Label.Left=-Label.Width
 End Sub





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
1
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
30 juil. 2008 à 19:41
fais ceci et regardes s' il bouges déjà:

Private Sub Form_Load()
' ceci te permet de voir ton label
  Label1.Left = Picture1.Width -Label1.Width
  'accèlères un peu le pas
   Pas = -10
End Sub

Private Sub Timer1_Timer()
 Label1.Left = Label1.Left + Pas
    If Label1.Left <= -Label1.Width Then _
        Label1.Left = Picture1.Width
End Sub

si ça marches pas, sors ton pc prendre l' air.
Il est sûrement surmené
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
1
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
30 juil. 2008 à 19:25
Bonsoir Kevin et Max !

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
0
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
30 juil. 2008 à 20:47
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 ...

Je vais faire prendre l'air à mon pc de suite
0
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
30 juil. 2008 à 21:42
Oups, merci Cheval....

hem hem, euh désolé Max de t'avoir fait perdre de ton temps à cause d'une petite option qui avait oublier d'être explicite ...

Merci beaucoup Max en tout cas, bien évidement ça marche impeccable ...

Bonne soirée tout le monde
0
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
30 juil. 2008 à 22:05
Hello, c'est encore moi

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 ?
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
30 juil. 2008 à 22:39
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.
0
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
30 juil. 2008 à 22:42
Ok, merci Max, je vais faire des recherches ...

Bonne soirée et bonne nuit
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
30 juil. 2008 à 22:52
Perso je saurais te répondre pour du .NET, mais pour VB6 aucune idée
0
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
30 juil. 2008 à 23:18
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...
0
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
30 juil. 2008 à 23:42
Pour clôturer ce débat, pour une fois c'est moi qui apporte une bonne nouvelle
C'est très simple comme solution mais ça marche.

Soit un label caché nommé "Label1(0)" en Autosize et un textbox nommé "Text1" (les deux avec police et taille identique)

Label1(0).Caption = "SOURCE D'OU PROVIENT LE TEXTE A DIFFUSER" & "     * * *      "

Text1.Width = Label1(0).Width
Text1 = Label1(0).Caption

Mettre le pas à -20 et l'intervalle du timer à 1

Aucune saccade garanti ;-)

Allez, je vais pouvoir me coucher heureux et passer une bonne nuit, merci à tous pour votre aide

++
0
Rejoignez-nous