FAIRE DÉFILER DU TEXTE À UNE VITESSE SÉLECTIONNABLE.

sylric Messages postés 91 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 22 août 2003 - 25 juil. 2003 à 11:23
by2k Messages postés 31 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 8 octobre 2009 - 29 mars 2006 à 07:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/8019-faire-defiler-du-texte-a-une-vitesse-selectionnable

by2k Messages postés 31 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 8 octobre 2009
29 mars 2006 à 07:51
Bonjour, Bravo pour ce bout de code, juste deux petites question :

1) Je fais appel à un fichier qui contient le texte que je veux faire défiler, j'ai un limitation dù au label, il ne m'affiche pas tout les carractéres, ces derniers pouvant être illimités, malgré l'option WordWrap sur TRUE, rien n'y fait, une soluce peut-être ?

2) Je n'ai pu tester le modification de BOURSICOTTEUR car j'ai :
- Une erreur de syntaxe pour la ligne :
If GetTickCount - xx1 >= Vitesse.Value Then
- En enlevant le ";" j'obtiens une autre Une erreur de syntaxe pour la ligne :
xPos = IIf(xPos > xPosMin, xPos - 1, Picture2.ScaleWidth)

Sinon dans un domaine plus générale, je suis à la recherche d'une bout de code me permettant de faire défiler un texte de façon horizontale à partir d'un fichier qui contient le texte sans limitation de carractère.

MERCI pour votre aide.

Windows XP - VB6
boursicotteur Messages postés 201 Date d'inscription mercredi 25 septembre 2002 Statut Membre Dernière intervention 10 novembre 2007
27 juil. 2003 à 01:02
Attention: Tu ne fais pas circuler mais tu donne seulement l'illusion.

Essai donc ceci...
-----------------

Dim xTexteAffiché

Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Form_Load()
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2

Vitesse.Max = 200
Vitesse.Min = 4
Vitesse.Value = 4
Frame1.Caption = "mSec/Pix"

xTexteAffiché = "Voici comment faire défiler du texte pixel par pixel avec 2 picturebox et aucun timer... Boursicotteur. 2003"
With Picture1
.AutoRedraw = True
.ScaleMode = vbPixels
.Visible = False
.BorderStyle = vbBSNone

'.FontName = "MS Sans Serif"
.FontSize = 20
.ForeColor = vbBlue

.Top = 0
.Left = 0
.Width = 15 * (Picture1.TextWidth(xTexteAffiché) + 1) 'Ajoute 1 pix(15 twips) pour éviter trainée résiduelle
.Height = 15 * (Picture1.TextHeight(xTexteAffiché))
End With

With Picture2
.AutoRedraw = True
.ScaleMode = vbPixels
.Visible = True
.BorderStyle = vbBSNone

.Top = 0
.Left = 0.05 * Me.Width
.Width = 0.9 * Me.Width
.Height = Picture1.Height
End With
'----

Picture1.CurrentY = 0
Picture1.CurrentX = 0
Picture1.Print xTexteAffiché
End Sub

Private Sub Command1_Click()
Select Case Command1.Caption
Case "GO"
Command1.Caption = "STOP"

'----
Picture2.Cls
xPosMin = -(Picture1.ScaleWidth - 1)
xPos = xPosMin

Do While Command1.Caption = "STOP"
If GetTickCount - xx1 >= Vitesse.Value Then
xx1 = GetTickCount
Picture2.PaintPicture Picture1.Image, xPos, 0
xPos = IIf(xPos > xPosMin, xPos - 1, Picture2.ScaleWidth)
End If
DoEvents
Loop
'----

Case "STOP"
Command1.Caption = "GO"
End Select
End Sub

Private Sub Vitesse_Change()
lblvitesse.Caption = Vitesse.Value
End Sub
sylric Messages postés 91 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 22 août 2003
25 juil. 2003 à 11:23
Y'a des idées à retenir...
Deux petits conseils :
- pour centrer la forme, tu peux paramétrer la prorpiété StartUpPosition de la form.
- dans ton cas, c'est pas pixel par pixel que défile le texte, mais par twip. Il faut vérifier la propriété ScaleMode de la form. Et ça peut tout changer.
Rejoignez-nous