CURSEUR SYMPA POUR VOS APPLICATIONS

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 4 janv. 2004 à 01:40
morpheus83 Messages postés 7 Date d'inscription dimanche 11 mai 2003 Statut Membre Dernière intervention 13 mai 2010 - 17 janv. 2004 à 21:26
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

morpheus83 Messages postés 7 Date d'inscription dimanche 11 mai 2003 Statut Membre Dernière intervention 13 mai 2010
17 janv. 2004 à 21:26
tres rigolo!!! vivement que je sache faire ça...!
a+
OBI76 Messages postés 28 Date d'inscription mardi 23 juillet 2002 Statut Membre Derniè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és 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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

-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
Rejoignez-nous