Défilement de texte

Résolu
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 29 juin 2012 à 14:20
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 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 !

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 juin 2012 à 20:19
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 juil. 2012 à 10:30
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
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
29 juin 2012 à 14:57
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.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
29 juin 2012 à 15:01
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.
0

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

Posez votre question
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
29 juin 2012 à 16:52
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
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
29 juin 2012 à 17:12
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 ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 juin 2012 à 18:21
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
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
30 juin 2012 à 10:32
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 juin 2012 à 18:17
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
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
30 juin 2012 à 21:45
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 ;)
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
2 juil. 2012 à 21:52
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.
0
Rejoignez-nous