CURSEUR SYMPA POUR VOS APPLICATIONS

Signaler
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Messages postés
7
Date d'inscription
dimanche 11 mai 2003
Statut
Membre
Dernière intervention
13 mai 2010
-
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/19232-curseur-sympa-pour-vos-applications

Messages postés
7
Date d'inscription
dimanche 11 mai 2003
Statut
Membre
Dernière intervention
13 mai 2010

tres rigolo!!! vivement que je sache faire ça...!
a+
Messages postés
28
Date d'inscription
mardi 23 juillet 2002
Statut
Membre
Dernière intervention
4 janvier 2004

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
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

-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