Défilement de texte [Résolu]

Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 29 juin 2012 à 14:20 - Dernière réponse : Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention
- 2 juil. 2012 à 21:52
Salut à tous !

J'ai cherché partout sur le web mais je n'ai rien trouver pour résoudre mon problème.
Je souhaite faire défiler uniquement le texte de mon label1 (pas le label lui même) de droite à gauche mais je n'y arrive pas.
Je souhaiterais faire une genre de
<marquee></marquee>
mais en VB6, pouvez-vous m'aider s'il vous plaît ?

Merci

----------
OS : Windows XP SP3 et Vista 32
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 juin 2012 à 20:19
3
Merci
Une petite histoire/petit scenario pour toi, sinsitrus :
Il y a de fort nombreuses années (les forums n'existaient même pas), un amoureux de l'arithmétique a fait, sur la machine d'une jeune fille, dérouler un petit texte dans un label, en VB5, juste pour s'amuser à lui montrer ce qui était "rigolo".
- Il y a mis un timer et en a réglé l'intervalle et la propriété enabled (à True)
- puis il a écrit de quoi, en arithmétique, faire "dérouler".
- amoureux des maths, mais fainéant, il a mis (en dur, donc) dans les propriétés du label la propriété Width qui convenait, plutôt que de la traiter dynamiquement (un fainéant, te dis-je).
Toujours plus fainéant (de sang à moitié corse) il ne s'est pas non plus foulé à traiter autre chose que le texte qu'il faisait défiler. Il aurait pu en analyser dynamiquement la substance et en tenir compte dans une variable, mais non ... il s'en moquait, sur le moment.
Et voilà comment, dans son code, apparaissent entre autres choses un nombre 20 et un nombre 19 (qui n'étaient là que pour le texte traité !)
- et voilà d'où est partie la fumée, de mains de gamins en mains de gamins (via l'un, puis l'autre, puis un "Capritarius", puis un autre et encore un autre) chacun d'entre eux n'y comprenant que pipe et gardant ces deux valeurs en dur ! croyant probablement dur comme fer qu'elles étaient un "élément" logique du code *
Aïe Aïe Aïe !
Allez va, sinsitrus : voilà ce que l'auteur aurait fait s'il avait pu soupçonner que son bout de code à 4 sous (juste pour rigoler un peu) allait ainsi circuler entre ... euh ... "développeurs" ...
Option Explicit
Dim S As String

Private Sub Timer1_Timer()
  Dim N As Integer
  Static T As String
  Static NDX As Integer
  If Len(T) 0 Then T Space$(Len(S))
  N = Len(S)
  NDX = (NDX Mod N) + 1
  Mid$(T, 1, Len(S) - 1) = Mid$(T, 2, Len(S) - 1)
  Mid$(T, Len(S), 1) = Mid$(S, NDX, 1)
  Label1.Caption = T
End Sub

Private Sub Form_Load()
  Dim a As Integer
  S = "Sélectionnez les informations que vous souhaitez rendre visibles dans votre profil.      "
  With Label1
   .Visible = False
   .AutoSize = True
   .Caption = S
   a = .Width
   .AutoSize = False
   .Move (Me.Width - a) / 2
   .Caption = ""
   .Visible = True
  End With
  With Timer1
    .Interval = 200
    .Enabled =  True
  End With
End Sub


Pour un texte défilant dans un label nommé Label1
Bonne nuit.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 juil. 2012 à 10:30
3
Merci
Ouais ...
Alors, sinsitrus :
Je t'ai dit que l'auteur (tu sais le fainéant à moitié corse) avait voulu utiliser l'arithmétique, juste pour s'amuser (et, il faut bien le dire, se moquer un peu ...). Ce n'était qu'un jeu. Une espèce d'exercice mental.
Il est regrettable que cet "exercice" se soit ainsi ensuite répandu comme un "code", une "soluce" à adopter (en plus avec ces fameux 20 et 19 qui correspondaient au texte de cette plaisanterie et mis en dur).
Il est encore plus regrettable que tous ceux qui ont "ramassé" ce bout de code (qui n'aurait jamais dû se propager partout) se soient contentés de le copier, purement et simplement, sans réfléchir une seule seconde. Sans même s'apercevoir de ce que nul n'était besoin de l'arithmétique utilisée (elle n'était là, une autre fois, que comme jeu mental).

Voilà, sinsitrus, à quoi conduisent bien souvent les démarches de copier/coller de n'importe quoi trouvé sur le Net.

J'ai donc appelé au téléphone notre ami plaisantin et lui ai demandé de réécrire son code autrement qu'en se moquant (sans arithmétique inutile, donc. Et sans toutes ces variables complètement inutiles (T, NDX).
Il a bougonné un peu, mais il a fini par accepter, ne serait-ce que pour que les choses soient rétablies sur le net.
Voici ce qu'il vient de me demander de mettre ici, en lieu et place ce ce qu'il avait fait pour plaisanter :

Option Explicit
Dim S As String

Private Sub Timer1_Timer()
  Static N As Integer
  If N < Len(S) Then
    N = N + 1
    Label1.Caption = Label1.Caption & Mid(S, N, 1)
  Else
    Label1.Caption = Mid(Label1.Caption, 2) & Left(Label1.Caption, 1)
  End If
End Sub

Private Sub Form_Load()
  Dim a As Integer
  S = "Sélectionnez les informations que vous souhaitez rendre visibles dans votre profil.      "
  With Label1
   .Visible = False
   .AutoSize = True
   .Caption = S
   a = .Width
   .AutoSize = False
   .Move (Me.Width - a) / 2
   .Caption = ""
   .Visible = True
  End With
  With Timer1
    .Interval = 200
    .Enabled = True
  End With
End Sub


Essaye d'en tirer la leçon qu'il convient, sinsitrus.
Et fie-toi dorénavant plus à toi-même qu'à ce qui traîne sur le net.
Bon dimanche.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de ucfoutu
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 29 juin 2012 à 14:57
0
Merci
Bonjour,

Rajoutes un espace à sa caption à interval regulier.

vers la gauche
Label1.Caption=Label1.Caption & " "

'vers la droite
Label1.Caption=" " & Label1.Caption




[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 29 juin 2012 à 15:01
0
Merci
vers la gauche: l' alignement doit être à droite.

vers la droite: l' alignement doit être à gauche.



[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
cs_JLuc01 208 Messages postés samedi 17 janvier 2009Date d'inscription 5 mars 2013 Dernière intervention - 29 juin 2012 à 16:52
0
Merci
Bonjour,

Le principe de Libre_Max est parfait (probablement dans un Timer), mais je jouerais aussi avec la propriete Length du Label. Quand le Label disparait de vue, on efface le Label (avec ces espaces vides) et on le rajoute dans ce meme label (avec des espaces vides au bon endroit si on veut le faire apparaitre doucement).

Je fais plutot du VB.net, mais la propriete Length doit exister en VB6 je suppose. Je me demande si il est possible de faire directement en VBnet le classique Marquee qu'on retrouve en HTML. A voir.

JLuc01
Commenter la réponse de cs_JLuc01
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 29 juin 2012 à 17:12
0
Merci
Merci à tous, mais mon problème n'est pas résolu.
J4arrive à faire défiler le label en entier mais pas seulement le caption.
En mode <marquee> il défile et re-défile...
N'y a t-il aucune option pour résoudre ce problème ?
Commenter la réponse de Sinsitrus
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 29 juin 2012 à 18:21
0
Merci
Bonjour,
Tu as demandé :
Je souhaiterais faire une genre de
Code Visual Basic :

<marquee></marquee>

mais en VB6, pouvez-vous m'aider s'il vous plaît ?


et LIBRE_MAX t'a donné une réponse. Qu'en as-tu fait ? === >> montre ton code VB6 tenté !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 30 juin 2012 à 10:32
0
Merci
Merci pour vos réponses.

Voilà ce que j'ai fais :
Option Explicit
Dim S As String

Private Sub Timer1_Timer()
Dim N As Integer
Static T As String
Static NDX As Integer
If Len(T) 0 Then T Space$(20)
N = Len(S)
NDX = (NDX Mod N) + 1
Mid$(T, 1, 19) = Mid$(T, 2, 19)
Mid$(T, 20, 1) = Mid$(S, NDX, 1)
Label3 = T
End Sub

Private Sub Form_Load()
S = "Sélectionnez les informations que vous souhaitez rendre visibles dans votre profil."
End Sub

Mais il ne fais pas toute la longueur du label et clignote presque quand le texte défile.
Commenter la réponse de Sinsitrus
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 juin 2012 à 18:17
0
Merci
Bonjour, sinsitrus,

Tu touches du doigt ce qui arrive lorsque l'on se contente de "récupérer" un bout de code sur le net, sans vraiment le comprendre ni l'analyser.
Je vais te mettre sur la voie, mais pas plus : que sont selon toi les valeurs 20 et 19 ? hmm ?
(en réponse uniquement à "Mais il ne fais pas toute la longueur du label")

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 30 juin 2012 à 21:45
0
Merci
Houla, son histoire a traversée le globe on dirais ce fainéant à moitié corse !
Il est encore plus populaire que ce que j'imaginais

Merci pour ton aide, ça m'a été très utile et pas pour faire plaire à une fille ;)
Commenter la réponse de Sinsitrus
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 2 juil. 2012 à 21:52
0
Merci
Salut ucfoutu.

Merci pour ton histoire. Je comprends ce que tu souhaite me faire avancer et ce depuis le premier poste. Paresseux, non je ne le suis pas, mais pour quelqu'un qui ne maitrise pas VB6 et qui fait de son mieux pour coder "tout seul" sans personne autour de lui qui le conseil est obligé de fouiller un peux partout sur le web, trouver des bout de codes à une balle et demander dans un forum sérieux une solution soit à son problème, soit une correction de code.
Vous avez de la chance de participer en classe à des cours de programmation, ou même des amis qui programmes ou encore des possibilités d'apprentissage avancées...
Et tu vois, sans moi, la bonne chose dans l'histoire de ton ami, c'est qu'il n'y aurait pas eu de corrections, de coup de téléphone et un code qui marche enfin. Je te remercie vraiment du temps que tu as pris pour résoudre mon pépin.

Enfin, on ne vas pas en faire tout un tas, tu es de mon avis... et je comprends que tu dis tout ça pour moi et les autres et t'en suis sincèrement reconnaissant.

Encore une fois merci pour ton aide.

Bon début de semaine.
Commenter la réponse de Sinsitrus

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.