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

Résolu
Zang8 Messages postés 22 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 13 avril 2015 - Modifié par Zang8 le 23/01/2015 à 21:23
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 15 févr. 2015 à 18:49
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

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
24 janv. 2015 à 21:27
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
1
Zang8 Messages postés 22 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 13 avril 2015
Modifié par Zang8 le 24/01/2015 à 22:12
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 ! :)
0
Lilnice Messages postés 2 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 14 février 2015
14 févr. 2015 à 15:12
Salut, s'il te plait,
peux-tu nous dire sous quel VB ce code fonctionne?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211 > Lilnice Messages postés 2 Date d'inscription samedi 14 février 2015 Statut Membre Dernière intervention 14 février 2015
15 févr. 2015 à 18:49
Au hasard (???) ===>> celui objet du présent sous-forum !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 janv. 2015 à 21:34
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).
0
Zang8 Messages postés 22 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 13 avril 2015
Modifié par Zang8 le 23/01/2015 à 22:54
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))
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
Modifié par NHenry le 23/01/2015 à 23:03
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(...)
0
Zang8 Messages postés 22 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 13 avril 2015
Modifié par Zang8 le 23/01/2015 à 23:15
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 ?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
26 janv. 2015 à 21:37
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(...)
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
24 janv. 2015 à 08:43
0
Zang8 Messages postés 22 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 13 avril 2015
24 janv. 2015 à 14:15
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 :)
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
24 janv. 2015 à 14:29
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


0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 janv. 2015 à 20:38
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 ?
0
Rejoignez-nous