morpheus83
Messages postés7Date d'inscriptiondimanche 11 mai 2003StatutMembreDernière intervention13 mai 2010 17 janv. 2004 à 21:26
tres rigolo!!! vivement que je sache faire ça...!
a+
OBI76
Messages postés28Date d'inscriptionmardi 23 juillet 2002StatutMembreDernière intervention 4 janvier 2004 4 janv. 2004 à 03:03
VOila c remplacé dans le .zip. Merci de ton aide, g toujours eu un peu de mal avec les collections mais ca s'arrange lol. Si t'as d'autres commentaires ou autre je suis ouvert à toute recomandation :-)
Allez @+++ ;-)
Obi
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 janv. 2004 à 01:40
Salut OBI76
Très rigolo cet effet et code simple.
Ce que je pourrais te proposer : Permettre de saisir un texte de longueur quelconque :
-1- Remplace ton Tableau à deux dimensions par un type d'item personnel, une collection. Et définir la dernière position connue de la souris dans une variable (plutôt que des Labels) :
En ne mettant qu'une seule dimension à Position, ça te permet d'utiliser les tableaux dynamiquement.
Public Type PositionType
X As Long
Y As Long
End Type
Public Position() As PositionType
Public PositionSouris As PositionType
-2- Pour les labels que tu utilises, c'est pareil :
Ne laisse qu'un seul Label1, avec l'index 0 (supprime les 9 autres)
Supprime aussi Label2 et Label3 qui ne serviront plus.
-3- Fais le transfert du texte vers les Label1 uniquement si le texte change : Dans l'evènement Text1_Change :
Dim LongTexte As Integer, r As Integer
LongTexte = Len(Text1.Text)
' Faut redimensionner le tableau
ReDim Position(LongTexte)
' Et aussi avec les Label1
' S'il n'y a pas suffisemment de Label1 chargés
' on en charge d'autres (de 0 à LongTexte-1)
If Label1.Count < LongTexte Then
For r = Label1.Count To LongTexte - 1
Load Label1(r)
Label1(r).Visible = True
Next r
End If
' Transfère le texte vers les Labels
For r = 1 To LongTexte
Label1(r - 1).Caption = Mid(Text1.Text, r, 1)
Next r
-5- Dans Form_MouseMove, remplace tes anciens Labels par notre nouvelle variable PositionSouris :
PositionSouris.X = X
PositionSouris.Y = Y
-6- Ensuite dans Timer1_Timer, tu n'as plus qu'à gérer les déplacements :
Dim r As Integer
On Error Resume Next
' On va décaler les mémoires des dernières positions
' (on ne s'occupe pas des .X ni .Y)
For r = (Label1.Count - 1) To 0 Step -1
Position(r + 1) = Position(r)
Next
Position(0) = PositionSouris
' Ensuite, on replace les labels décalés
For r = 0 To (Label1.Count - 1)
Label1(r).Left = Position(r).X + 150 * r
Label1(r).Top = Position(r).Y - 100
Next r
Ca m'a bien amusé ton truc. J'avais déjà vu ça en java, mais jamais en VB.
Vala
Jack
17 janv. 2004 à 21:26
a+
4 janv. 2004 à 03:03
Allez @+++ ;-)
Obi
4 janv. 2004 à 01:40
Très rigolo cet effet et code simple.
Ce que je pourrais te proposer : Permettre de saisir un texte de longueur quelconque :
-1- Remplace ton Tableau à deux dimensions par un type d'item personnel, une collection. Et définir la dernière position connue de la souris dans une variable (plutôt que des Labels) :
En ne mettant qu'une seule dimension à Position, ça te permet d'utiliser les tableaux dynamiquement.
Public Type PositionType
X As Long
Y As Long
End Type
Public Position() As PositionType
Public PositionSouris As PositionType
-2- Pour les labels que tu utilises, c'est pareil :
Ne laisse qu'un seul Label1, avec l'index 0 (supprime les 9 autres)
Supprime aussi Label2 et Label3 qui ne serviront plus.
-3- Fais le transfert du texte vers les Label1 uniquement si le texte change : Dans l'evènement Text1_Change :
Dim LongTexte As Integer, r As Integer
LongTexte = Len(Text1.Text)
' Faut redimensionner le tableau
ReDim Position(LongTexte)
' Et aussi avec les Label1
' S'il n'y a pas suffisemment de Label1 chargés
' on en charge d'autres (de 0 à LongTexte-1)
If Label1.Count < LongTexte Then
For r = Label1.Count To LongTexte - 1
Load Label1(r)
Label1(r).Visible = True
Next r
End If
' Transfère le texte vers les Labels
For r = 1 To LongTexte
Label1(r - 1).Caption = Mid(Text1.Text, r, 1)
Next r
-4- Dans le Form_Load, initialise les variables :
PositionSouris.X = 0
PositionSouris.Y = 0
Call Text1_Change
-5- Dans Form_MouseMove, remplace tes anciens Labels par notre nouvelle variable PositionSouris :
PositionSouris.X = X
PositionSouris.Y = Y
-6- Ensuite dans Timer1_Timer, tu n'as plus qu'à gérer les déplacements :
Dim r As Integer
On Error Resume Next
' On va décaler les mémoires des dernières positions
' (on ne s'occupe pas des .X ni .Y)
For r = (Label1.Count - 1) To 0 Step -1
Position(r + 1) = Position(r)
Next
Position(0) = PositionSouris
' Ensuite, on replace les labels décalés
For r = 0 To (Label1.Count - 1)
Label1(r).Left = Position(r).X + 150 * r
Label1(r).Top = Position(r).Y - 100
Next r
Ca m'a bien amusé ton truc. J'avais déjà vu ça en java, mais jamais en VB.
Vala
Jack