FAIRE DÉFILER DU TEXTE À UNE VITESSE SÉLECTIONNABLE.
sylric
Messages postés91Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention22 août 2003
-
25 juil. 2003 à 11:23
by2k
Messages postés31Date d'inscriptionsamedi 28 février 2004StatutMembreDerniè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.
by2k
Messages postés31Date d'inscriptionsamedi 28 février 2004StatutMembreDerniè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és201Date d'inscriptionmercredi 25 septembre 2002StatutMembreDernière intervention10 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
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és91Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention22 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.
29 mars 2006 à 07:51
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
27 juil. 2003 à 01:02
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
25 juil. 2003 à 11:23
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.