Défilement de texte dans un label [Résolu]

SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
Dernière intervention
5 mars 2011
- 30 juil. 2008 à 00:45 - Dernière réponse : SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
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 ;-)
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
LIBRE_MAX
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 30 juil. 2008 à 00:59
3
Merci
..container (Picturebox ou Frame)

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.

Merci LIBRE_MAX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de LIBRE_MAX
Meilleure réponse
LIBRE_MAX
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 30 juil. 2008 à 02:02
3
Merci
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.

Merci LIBRE_MAX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de LIBRE_MAX
Meilleure réponse
LIBRE_MAX
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 30 juil. 2008 à 21:06
3
Merci
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.

Merci LIBRE_MAX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de LIBRE_MAX
Meilleure réponse
bonjourcheval
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Dernière intervention
8 août 2011
- 30 juil. 2008 à 21:09
3
Merci
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

Merci bonjourcheval 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de bonjourcheval
Kevin.Ory
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
7 janvier 2009
- 30 juil. 2008 à 01:19
2
Merci
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.
Commenter la réponse de Kevin.Ory
LIBRE_MAX
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 30 juil. 2008 à 00:58
1
Merci
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.
Commenter la réponse de LIBRE_MAX
LIBRE_MAX
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 30 juil. 2008 à 19:41
1
Merci
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.
Commenter la réponse de LIBRE_MAX
SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
Dernière intervention
5 mars 2011
- 30 juil. 2008 à 19:25
0
Merci
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
Commenter la réponse de SnapFAB
SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
Dernière intervention
5 mars 2011
- 30 juil. 2008 à 20:47
0
Merci
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
Commenter la réponse de SnapFAB
SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
Dernière intervention
5 mars 2011
- 30 juil. 2008 à 21:42
0
Merci
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
Commenter la réponse de SnapFAB
SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
Dernière intervention
5 mars 2011
- 30 juil. 2008 à 22:05
0
Merci
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 ?
Commenter la réponse de SnapFAB
LIBRE_MAX
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 30 juil. 2008 à 22:39
0
Merci
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.
Commenter la réponse de LIBRE_MAX
SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
Dernière intervention
5 mars 2011
- 30 juil. 2008 à 22:42
0
Merci
Ok, merci Max, je vais faire des recherches ...

Bonne soirée et bonne nuit
Commenter la réponse de SnapFAB
Kevin.Ory
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
7 janvier 2009
- 30 juil. 2008 à 22:52
0
Merci
Perso je saurais te répondre pour du .NET, mais pour VB6 aucune idée
Commenter la réponse de Kevin.Ory
SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
Dernière intervention
5 mars 2011
- 30 juil. 2008 à 23:18
0
Merci
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...
Commenter la réponse de SnapFAB
SnapFAB
Messages postés
61
Date d'inscription
samedi 10 novembre 2007
Dernière intervention
5 mars 2011
- 30 juil. 2008 à 23:42
0
Merci
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

++
Commenter la réponse de SnapFAB

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.