Réaliser un label dont le texte s'affiche lettre par lettre [Résolu]

Signaler
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
13 avril 2015
-
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous !

Je viens poser ma question ici car même après plusieurs heures de recherches sur la toile je n'ai pas la réponse.

J'aimerai qu'à l'ouverture d'une form un texte s'affiche automatiquement (mais pas d'un seul coup)

C'est à dire avec par exemple un timer qui à chaque tick m'affiche un caractère supplémentaire de mon label (le texte du label étant préalablement définit)

J'ai bien trouvé ceci,
http://codes-sources.commentcamarche.net/forum/affich-10174-envoyer-un-text-lettre-par-lettre
mais hélas mon faible niveau en VB ne me permet pas d'adapter ma situation ^^' (je sorts tout juste du VBA)

D'avance merci :)

5 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
Bonjour

 Private word As String
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Timer1.Interval = 200
Timer1.Start()
word = "BONJOUR"
End Sub

Private Sub Timer1_Tick(sender As Object, e As System.EventArgs) Handles Timer1.Tick
Static x As Integer = 1
Label1.Text = word.Substring(0, x)
x += 1
If x > word.Length Then
DirectCast(sender, Timer).Stop()
End If
End Sub
Zang8
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
13 avril 2015

Waow Merci à tous pour ces réponses :)
Je vais tester ça et je reviens vous dire quoi ! ;)

Splendide ! tout fonctionne comme je le voulais avec ton code ShayW ! :)
Lilnice
Messages postés
2
Date d'inscription
samedi 14 février 2015
Statut
Membre
Dernière intervention
14 février 2015

Salut, s'il te plait,
peux-tu nous dire sous quel VB ce code fonctionne?
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220 > Lilnice
Messages postés
2
Date d'inscription
samedi 14 février 2015
Statut
Membre
Dernière intervention
14 février 2015

Au hasard (???) ===>> celui objet du présent sous-forum !
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,
Il sera bien que tu nous dises sous quoi tu développes.
Tu es ici dans le forum général Visual Basic.
Or, la réponse que tu attends est différente selon que tu développes sous VB6 ou sous VB.Net (qui ont leurs sous-forums).
Zang8
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
13 avril 2015

oops désolé, je suis sous Microsoft Visual Basic 2010

Ma réponse se trouve peut être ici..

Private Sub Timer1_Timer()

Static Position As Long
Static Initialise As Boolean
Dim LeTexte As String
Dim LeTexteApres As String

LeTexte = "Je Défile dans un Label !"

If Initialise = False Then
Initialise = True
Position = Len(LeTexte)
End If

Position = Position + 1

If Position >= 0 Then
LeTexteApres = Space(Position) & LeTexte
Else
LeTexteApres = Mid(LeTexte, Abs(Position))
If Position < -Len(LeTexte) Then
Position = Len(LeTexte)
End If
End If

Label1 = LeTexteApres
End Sub


Si tel est le cas, je n'arrive pas à corriger l'erreur qui se produit au niveau de Abs dans
LeTexteApres = Mid(LeTexte, Abs(Position))
NHenry
Messages postés
14648
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
17 février 2020
139
Quelle erreur ?
De plus, retires l'import automatique de Microsoft.VisualBasic (onglet 'références ' des propriétés de ton projet) et utilises les méthodes du framework.

Par exemple, Mid -> Chaine.SubString(...)
Zang8
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
13 avril 2015

Salut NHenry et merci de rejoindre le sujet,
alors j'ai retiré l'import auto et plusieurs éléments (Mid, Len, Space...) ne sont plus déclarés (dois je continuer sur cette base ou un code différent conviendrait mieux à me requête).

Ps: pour information pourquoi me demandes tu de retirer l'import automatique de Microsoft.VisualBasic ?
NHenry
Messages postés
14648
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
17 février 2020
139
Cet import t'incite à utiliser des fonctions de compatibilité de VB6, cela est fortement déprécié.
Les fonctions du Framework sont nettement plus adaptées et plus logique à utiliser.

Mid -> String.SubString
Len -> String;Length
Space -> New String(...)
Messages postés
6538
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 février 2020
95
Zang8
Messages postés
22
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
13 avril 2015

Bonjour et merci cs_Le Pivert cependant je ne suis pas sur de pouvoir réaliser ce que je veux avec le code que tu cites.
je ne cherche pas à déplacer le texte.. Ce que je cherche en gros ca ressemble à ça :

Label1 = Bonjour
Timer = True
Tick 1 = Label1 = B
Tick 2 = Label1 = Bo
Tick 2 = Label1 = Bon
Tick 2 = Label1 = Bonj
Tick 2 = Label1 = Bonjo
Tick 2 = Label1 = Bonjou
Tick 2 = Label1 = Bonjour
Timer = False

Voila bon c'est en gros x) (ca n'a rien de très pro affiché comme ca mais peut être est-ce plus clair ?)

Merci encore d'étayer le sujet :)
Messages postés
6538
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 février 2020
95
Le code que tu nous a montré est celui-ci, qui date de 1999 en VB6 de Nix. Il déplace un texte:

http://codes-sources.commentcamarche.net/source/70-faire-defiler-un-texte-dans-un-label

Pour faire ce que tu veux:

Mettre 2 Timers avec ce code:

Option Strict On
Public Class Form1
    'https://www.youtube.com/watch?v=nwT9UxRW_jw
    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        If Me.Text = "" Then
            Me.Text = "T"
        ElseIf Me.Text = "T" Then
            Me.Text = "TU"
        ElseIf Me.Text = "TU" Then
            Me.Text = "TUT"
        ElseIf Me.Text = "TUT" Then
            Me.Text = "TUTO"
        ElseIf Me.Text = "TUTO" Then
            Timer1.Stop()
            Timer2.Start()
        End If
    End Sub
    Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
        If Me.Text = "TUTO" Then
            Me.Text = "TUT"
        ElseIf Me.Text = "TUT" Then
            Me.Text = "TU"
        ElseIf Me.Text = "TU" Then
            Me.Text = "T"
        ElseIf Me.Text = "T" Then
            Me.Text = ""
            Timer2.Stop()
            Timer1.Start()
        End If
    End Sub
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.Text = ""
        Timer1.Start() 'regler les 2 Timers à 500
      End Sub
   End Class


A adapter à un label


Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bon jour,
Est-t-il vraiment si "difficile" :
1) de comprendre et utiliser la méthode Substring de VB.Net pour extraire (et afficher ensuite) les x premiers caractères d'une chaîne alphanumérique ?
2) de déclarer la variable x statique dans l'évènement Tick d'un timer et de l'incrémenter de 1 unité à chaque tick ? (et bien sur de l'interrompre dès que x = la longueur du texte à afficher) ?
Vraiment ?