Changer usercontrol(index) en usercontrol(x,y)

cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 - 23 août 2007 à 19:34
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 27 août 2007 à 10:36
bonsoir à tous
j'ai créé pour mon jeu de scrable un controle nommé case constitué de deux controles label imbriqués . ce controle case à une propriété index qui s'incrémente à la création de nouvelle case.
je positionne ces cases pour former une grille de 15 sur 15.
j'aurais aimé reconnaitre ces cases par leur coordonnées X et Y plutot que par l'index.
donc avoir case(X,Y) plutot que case(index).
je pense savoir attribuer une property let et get avec le code suivant

Dim CaseLigne As Byte

Public Property Let Ligne(ByVal NewLigne As Byte)
CaseLigne = NewLigne
End Property

Public Property Get Ligne() As Byte
Ligne = CaseLigne
End Property

mais j'aurais une valeur case(index).X
et case(index).Y
mais pas case(X,Y)

comment faire

8 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 août 2007 à 20:00
je vois pas trop en quoi ca te dérange, mais bon (surtout que c'est bien plus pratique à utiliser!).

Tu peux toujours faire une fonction qui prend en argument ton X et Y passé par référence, et les modifiers pour renvoyer ce que tu veux.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 août 2007 à 20:41
zsalut,

t'as sût faire pour une Ligne et une Colonne indépendement, autant faire une pierre deux coups :

Public Type MyCoord
    Dim MyLigne As Byte
    Dm MyColonne As Byte
End Type

Dim ActualCoord As MyCoord

Public Property Let Coord(ByVal NewCoord As MyCoord)
    ActualCoord.MyColonne  = NewCoord.MyColonne
    ActualCoord.MyLigne = NewCoord.MyLigne
End Property

Public Property Get Coord() As MyCoord
    Coord.MyColonne = ActualCoord.MyColonne
    Coord.MyLigne = ActualCoord.MyLigne
End Property

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 1
24 août 2007 à 16:56
Bonsoir
ça ne me dérange pas trop
j'obtien ainsi directement quelle ligne et quelle colonne il possède, il est plus rapide et facile de savoir si je suis en fin de ligne ou de colonne.
aussi je voulais savoir ça pour ma culture.
merci Mortalino j'ai bien pensé aussi de jouer avec le couple de coordonnée
Je ne vois pas comment Faire pour appeler une case sans l'appeler par son index : case(index).toutCeQuonveut.
je ne peux pas changer de case en simplement changeant son X je dois chercher son index et après j'aurais son X, mais là il ne me servira plus à rien.
mais j'ai toujours la référence à l'index :case(index).(x,y)
0
cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 1
24 août 2007 à 16:59
excusez moi mauvais ordre dans la réponse

Bonsoir
ça ne me dérange pas trop
j'obtien ainsi directement quelle ligne et quelle colonne il possède, il est plus rapide et facile de savoir si je suis en fin de ligne ou de colonne.
aussi je voulais savoir ça pour ma culture.
Je ne vois pas comment Faire pour appeler une case sans l'appeler par son index : case(index).toutCeQuonveut.
je ne peux pas changer de case en simplement changeant son X je dois chercher son index et après j'aurais son X, mais là il ne me servira plus à rien.

merci Mortalino j'ai bien pensé aussi de jouer avec le couple de coordonnée
mais j'ai toujours la référence à l'index :case(index).(x,y)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 août 2007 à 17:05
pour moi dans
case(index).(x,y)

ton index est inutile. x et y font office d'index, ce que toi tu mets c'est comme si tu avais plusieurs plateaux de ton jeu.

C'est comme aux échecs ou dames, une coordonnée, c'est une coordonnée.
B5, c'est toujours à la meme place, donc l'index que toi tu rajoutes je ne vois pas ce qu'il t'apporte

case(1).(1, 1)
case(2).(1, 1)
case(3).(1, 1)    ??  tu vois ce que je veux dire ?

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 1
26 août 2007 à 10:34
bonjour mortalino

je viens de recopier ton code dans mon prog et bizarrement le complément automatique de code de VB ne fonctionnait plus , après avoir inhibé cette ligne de code
'Public Property Set Coord(ByVal NewCoord As MyCoord)
' ActualCoord.MyColonne = NewCoord.MyColonne
' ActualCoord.MyLigne = NewCoord.MyLigne
'End Property
le complément automatique refonctionne correctement, Bizarre non!!! donc je n'ai pas pu tester ton code, mais je pense que lorsqu'on cré un controle comme un label il y a toujours un index qui est attribué d'office

je essairais plus tard dans un notre prog

encore merci
0
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
26 août 2007 à 15:47
Salut
"Case" est un mot clé de VB, pas la peine de chercher plus loin.
Pour ce qui est de "Coord", je ne pense pas que ce soit un mot clé, mais il est possible qu'une variable ait été dimensionnée quelquepart dans le code avec ce même nom = conflit. A vérifier.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés


<hr />
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
27 août 2007 à 10:36
Pis son Index, est calculable par rapport aux coordonnées :

Index = Col + (15 * (Ligne - 1)) - 1

(si ton Label part bien de 0)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
Rejoignez-nous