Enlever duplication code

cs_mvp19 Messages postés 2 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 20 mai 2004 - 19 mai 2004 à 05:29
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 20 mai 2004 à 22:44
J'ai un problème de duplication de codes, j'ai un petit programme qui déplace 10 images (imageA, imageB...), pour chaque image, j'ai un bouton Up et un bouton Down

le code qui se trouve dans UpA_Click, UpB_Click... est le même à part de l'objet qui est modifié (imageA.Top = 1000)

je voudrais donc être capable de faire une fonction Up qui serait appelé par tous les boutons up !!! mais j'ai aucune idée comment faire.

merci

4 réponses

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
19 mai 2004 à 07:03
tu peux creer un procedure unique que tu appelles tout le temps

private sub MaSubUnique()
....
....
end sub

dans les boutons up par exemple:
call MaSubUnique

bonne prog
liquide
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
19 mai 2004 à 19:12
Le plus simple est peut-être de faire des groupes de controles

Christophe R.
0
cs_mvp19 Messages postés 2 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 20 mai 2004
20 mai 2004 à 05:21
Je sais pas si vous comprenez vraiment ce que je veux dire:

j'ai 10 fonctions comme ceux-ci

Private Sub MonteA_Click()
If (ImageA.Top > ImageMaxHaut) Then
ImageA.Top = (ImageA.Top - Deplacement):
CouleurA.Top = CouleurA.Top - Deplacement:
CouleurA.Height = CouleurA.Height + Deplacement:

If (CompteurON) Then
CompteurA_Partie = CompteurA_Partie + 1:
CompteurA_Totale = CompteurA_Totale + 1:
End If:

ValeurA2.Caption = Str$(CompteurA_Totale):
End If:
End Sub

Private Sub MonteB_Click()
If (ImageB.Top > ImageMaxHaut) Then
ImageB.Top = (ImageB.Top - Deplacement):
CouleurB.Top = CouleurB.Top - Deplacement:
CouleurB.Height = CouleurB.Height + Deplacement:

If (CompteurON) Then
CompteurB_Partie = CompteurB_Partie + 1:
CompteurB_Totale = CompteurB_Totale + 1:
End If:

ValeurB.Caption = Str$(CompteurB_Totale):
End If:
End Sub

les dix font la même chose... à part l'image qu'elle déplace... je voudrais une fonction qui prendrait en paramètre le numéro de l'image...

ou quelque chose qui me permettrait d'avoir une seule place le code à modifier...
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
20 mai 2004 à 22:44
Le plus simple est de fair eun groupe de 10 boutons Monte : Monte(0), Monte(1), Monte(2) ... monte(9)
Pareil avec les boutons Descend : Descend(0), ... descend(9)
et Pareil avec les picturebox : Image(0), ... , image (9)
(Nota : Pour ce faire : 1-Crée un bouton Monte, un bouton Descend et une picturebox Image 2- Fixe leur propriété Index à zéro 3- Sélectionne les 3 controles 4- Copie (CTRL+C par exemple) 5- Colle 9 fois (CTRL+V par exemple)
Tu verras que les evt Click de tes boutons possède un nouveau parametre Index, qui identifie le bouton clické, tous les boutons d'un meme groupe (Monte ou descend) n'ayant qu'1 seul et meme evt Click, cet arg te permet de savoir lequel a vraiment été clické ! Tu pourras ainsi accédé à la bonne picturebox, car elle a aussi un index, vu que tu en as fait un groupe et Monte(4) corespond à Image(4) qui correspond aussi a Descend(4).
Ton code devient alors :
Private Sub MonteA_Click(Index As Integer)
If (Image(Index).Top > ImageMaxHaut) Then
Image(Index).Top = (Image(Index).Top - Deplacement):
Couleur(Index).Top = Couleur(Index).Top - Deplacement:
Couleur(Index).Height = Couleur(Index).Height + Deplacement:

If (CompteurON) Then
CompteurA_Partie = CompteurA_Partie + 1:
CompteurA_Totale = CompteurA_Totale + 1:
End If:

ValeurA2.Caption = Str$(CompteurA_Totale):
End If:
End Sub

Dans ton code j'ai aussi supposer que CouleurA et couleurB etait des controles lie aux imageA et ImageB, alors j'y ai applique la meme technique.

C'est bon ?

Christophe R.
0
Rejoignez-nous