Précédent   Forum du club des développeurs et IT Pro > Dotnet > Langages > VB.NET
VB.NET Forum d'entraide sur la programmation Visual Basic .NET. Avant de poster -> FAQ VB.NET, Articles VB.NET, Sources VB.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/02/2013, 20h25   #1
king2070
Invité de passage
 
Homme anouar belkadi
futur ingenieur genie electrique
Inscription : février 2013
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme anouar belkadi
Localisation : Tunisie

Informations professionnelles :
Activité : futur ingenieur genie electrique

Informations forums :
Inscription : février 2013
Messages : 20
Points : 2
Points : 2
Par défaut Boutons dynamique compteur

bonsoir cher développeur,
j'ai besoin de votre aide j'ai créer des boutons de façon dynamique et j'ai créer une matrice de caractère. tel que, si je clique sur un bouton, la matrice sera chargé par des lettre "b" dans la position cliqué ainsi son voisinage. Voici mon code aidez moi svp:
NB i , k compteur de la matrice
i3,j3 sont ceux des boutons
NB2: il semble que les compteurs ne sont pas pris en considération et c'est pour ca j'ai pas eu les résultats souhaités

Code :
1
2
3
4
5
6
7
8
9
10
11
12
    Private Sub DynamicButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim i3 As Integer : Dim j3 As Integer
        Dim i As Integer : Dim k As Integer
        Dim Mat(7, 7) As String
        Dim C(i3, j3) As Button
 
        C(i3, j3) = CType(sender, Button)
 
            i = i3
            k = j3
            Mat(6, 6) = " bb" : Mat(5, 5) = "bb" : Mat(6, 5) = "bb" : Mat(6, 7) = "bb" : Mat(5, 6) = "bb" : Mat(7, 6) = "bb" 
            Mat(7, 7) = "bb" : Mat(5, 7) = "bb" : Mat(7, 5) = "bb"
king2070 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 23/02/2013, 18h27   #2
rv26t
Membre Expert
 
Hervé
Inscription : janvier 2007
Messages : 694
Détails du profil
Informations personnelles :
Nom : Hervé
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 694
Points : 1 176
Points : 1 176
Bonjour,

Init des éléments
Code :
1
2
3
4
5
6
7
8
9
10
11
12
    Const XMax As Integer = 7
    Const YMax As Integer = 7
    Dim Mat(XMax, YMax) As String
 
    Private Sub frmManipTextBox_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CreButton()
        For k As Integer = 0 To XMax
            For l As Integer = 0 To YMax
                Mat(k, l) = ""
            Next
        Next
    End Sub
Création des boutons
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Sub CreButton()
        Dim Btn(7, 7) As Button
        For i As Integer = 0 To XMax
            For j As Integer = 0 To YMax
                Btn(i, j) = New Button()
                Btn(i, j).Name = "Button" & i & j
                Btn(i, j).Text = "Button" & i & j
                Btn(i, j).Top = (i) * 25
                Btn(i, j).Left = 20 + (j * 75)
                Btn(i, j).Tag = i & "|" & j
                AddHandler Btn(i, j).Click, AddressOf DynamicButton_Click
                Me.Controls.Add(Btn(i, j))
            Next
        Next i
    End Sub
Marquage sur Clic bouton
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Private Sub DynamicButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        MarqueBBMatrice(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1))
    End Sub
 
    Sub MarqueBBMatrice(ByVal i As Integer, ByVal j As Integer)
        Dim XDebut As Integer
        Dim XFin As Integer
        Dim YDebut As Integer
        Dim YFin As Integer
        ' calcule la zone matrice
        If i > 0 Then XDebut = i - 1
        If i < XMax Then XFin = i + 1
        If j > 0 Then YDebut = j - 1
        If j < YMax Then YFin = j + 1
        ' marque les BB
        For k = XDebut To XFin
            For l = YDebut To YFin
                Mat(k, l) = "BB"
            Next
        Next
    End Sub
A+, Hervé.
rv26t est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2013, 01h37   #3
king2070
Invité de passage
 
Homme anouar belkadi
futur ingenieur genie electrique
Inscription : février 2013
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme anouar belkadi
Localisation : Tunisie

Informations professionnelles :
Activité : futur ingenieur genie electrique

Informations forums :
Inscription : février 2013
Messages : 20
Points : 2
Points : 2
merci cher ami pour ton aide tu ma sauver la vie
king2070 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 03h50   #4
king2070
Invité de passage
 
Homme anouar belkadi
futur ingenieur genie electrique
Inscription : février 2013
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme anouar belkadi
Localisation : Tunisie

Informations professionnelles :
Activité : futur ingenieur genie electrique

Informations forums :
Inscription : février 2013
Messages : 20
Points : 2
Points : 2
bonsoir comment je fait si je ve faire cela :
Code :
1
2
3
4
5
6
7
8
9
 Mat(i, j) = "BB"
        Mat(XDebut, j) = "BB"
        Mat(XFin, j) = "BB"
        Mat(XFin, YDebut) = "BB"
        Mat(i, YDebut) = "BB"
        Mat(XDebut, YDebut) = "BB"
        Mat(XDebut, YFin) = "BB"
        Mat(i, YFin) = "BB"
        Mat(XFin, YFin) = "BB"
cad si je clique sur un bouton les 9 position seron lui reservé cad le bouton cliqué et son voisinage ne peuvent avoir que un backcolor=color.red
et qui reste auront un backcolor=color.yellow
king2070 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 11h32   #5
rv26t
Membre Expert
 
Hervé
Inscription : janvier 2007
Messages : 694
Détails du profil
Informations personnelles :
Nom : Hervé
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 694
Points : 1 176
Points : 1 176
Bonjour,

Comme les boutons ont été construit avec un nom contenant les indices il suffit de faire un DirectCast sur le nom des boutons dans la collection des contrôles de la fenêtre.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
        ' calcule la zone matrice
        If i > 0 Then XDebut = i - 1
        If i < XMax Then XFin = i + 1 Else XFin = i
        If j > 0 Then YDebut = j - 1
        If j < YMax Then YFin = j + 1 Else YFin = j
        ' marque les BB et colorise les boutons
        For k As Integer = XDebut To XFin
            For l As Integer = YDebut To YFin
                Mat(k, l) = "BB"
                DirectCast(Me.Controls("Button" & k.ToString & l.ToString), Button).BackColor = Color.Red
            Next
        Next
Citation:
Envoyé par king2070 Voir le message
... et qui reste auront un backcolor=color.yellow
Ils sont jaune au départ, ou il faut que tout les boutons hors zone matrice soient jaune ?
A+, Hervé.
rv26t est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2013, 14h32   #6
king2070
Invité de passage
 
Homme anouar belkadi
futur ingenieur genie electrique
Inscription : février 2013
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme anouar belkadi
Localisation : Tunisie

Informations professionnelles :
Activité : futur ingenieur genie electrique

Informations forums :
Inscription : février 2013
Messages : 20
Points : 2
Points : 2
bon daccord je vais vous dire c'est koi mon probleme o juste
enfaite moi j'ai 4 joueur rouge,jaune , vert , bleu

et j'ai un text box(sous le nom de n=0) qui affiche le joueur qui va cliqué pour changer le backcolor
si n.text=1
le joueur rouge clique et par suite la case cliqué aura un backcolor rouge
et par suite la case cliqué ainsi son entourage sera lui reserve c'adire si nchange(n.tex<>1) et un joueur veut cliqué sur une case qui est reserve un msgbox affiche construction impossible

si n.text=2
le joueur jaune clique et par suite la case cliqué aura un backcolor jaune
et par suite la case cliqué ainsi son entourage sera lui reserve c'adire si n change(n.tex<>2) et un joueur veut cliqué sur une case qui est reserve un msgbox affiche construction impossible

si n.tex=3
le joueur vert clique et par suite la case cliqué aura un backcolor vert
et par suite la case cliqué ainsi son entourage sera lui reserve c'adire si n change(n.tex<>3) et un joueur veut cliqué sur une case qui est reserve un msgbox affiche construction impossible

si n.tex=4
le joueur bleu clique et par suite la case cliqué aura un backcolor bleu
et par suite la case cliqué ainsi son entourage sera lui reserve c'adire si n change(n.tex<>4) et un joueur veut cliqué sur une case qui est reserve un msgbox affiche construction impossible
NB:joueur bleu Mat(k, l) = "BB"
jaune "jj"
vert "vv"
rouge"rr"
NB2 :entourage=entourage indiqué precedement
king2070 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 16h52   #7
king2070
Invité de passage
 
Homme anouar belkadi
futur ingenieur genie electrique
Inscription : février 2013
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme anouar belkadi
Localisation : Tunisie

Informations professionnelles :
Activité : futur ingenieur genie electrique

Informations forums :
Inscription : février 2013
Messages : 20
Points : 2
Points : 2
voici le code j'ai ecrit mais ca nmarche pas
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 If Btn(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)).BackgroundImage IsNot empty.BackgroundImage Then
            Form10.Show()
        Else
 
 
            If N.Text = 1 Then
                If Mat(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)) = ("RR" Or "JJ" Or "VV") Then
                    Form10.Show()
                Else
                    Btn(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)).BackgroundImage = B.BackgroundImage
                End If
                MarqueBBMatricebleu(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1))
 
 
            ElseIf N.Text = 2 Then
                If Mat(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)) = ("BB" Or "JJ" Or "VV") Then
                    Form10.Show()
                Else
                    Btn(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)).BackgroundImage = R.BackgroundImage
                End If
                MarqueBBMatricerouge(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1))
 
 
            ElseIf N.Text = 3 Then
                If Mat(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)) = ("RR" Or "BB" Or "VV") Then
                    Form10.Show()
                Else
                    Btn(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)).BackgroundImage = J.BackgroundImage
                End If
                MarqueBBMatricejaune(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1))
 
 
            ElseIf N.Text = 4 Then
                If Mat(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)) = ("BB" Or "JJ" Or "RR") Then
                    Form10.Show()
 
                Else
                    Btn(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1)).BackgroundImage = V.BackgroundImage
                End If
                MarqueBBMatricevert(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1))
 
            End If
        End If
king2070 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 17h10   #8
rv26t
Membre Expert
 
Hervé
Inscription : janvier 2007
Messages : 694
Détails du profil
Informations personnelles :
Nom : Hervé
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 694
Points : 1 176
Points : 1 176
J'ai préparé un exemple

Définition form
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    Const XMax As Integer = 7
    Const YMax As Integer = 7
    Const KConstruitRouge As String = "CR"
    Const KReserveRouge As String = "RR"
    Const KConstruitVert As String = "CV"
    Const KReserveVert As String = "RV"
    Const KConstruitBleu As String = "CB"
    Const KReserveBleu As String = "RB"
    Const KConstruitJaune As String = "CJ"
    Const KReserveJaune As String = "RJ"
 
    Dim Mat(XMax, YMax) As String
    Dim Btn(XMax, YMax) As Button
    Dim NumJoueur As Integer
Les méthodes de mise en oeuvre,
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    Private Sub DynamicButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        MarqueMatrice(Split(CType(sender, Button).Tag, "|")(0), Split(CType(sender, Button).Tag, "|")(1))
    End Sub
 
    Sub MarqueMatrice(ByVal i As Integer, ByVal j As Integer)
        Dim XDebut As Integer
        Dim XFin As Integer
        Dim YDebut As Integer
        Dim YFin As Integer
        Dim Construction As String
        Dim Reservation As String
        Dim couleur As Color
 
        ' Détermine les couleurs à traiter
        Select Case txtNumJoueur.Text
            Case "1"
                Construction = KConstruitRouge
                Reservation = KReserveRouge
                couleur = Color.Red
            Case "2"
                Construction = KConstruitJaune
                Reservation = KReserveJaune
                couleur = Color.Yellow
            Case "3"
                Construction = KConstruitVert
                Reservation = KReserveVert
                couleur = Color.Green
            Case "4"
                Construction = KConstruitBleu
                Reservation = KReserveBleu
                couleur = Color.Blue
            Case Else
                MessageBox.Show("Joueur inconnu")
                Exit Sub
        End Select
        ' droit de construire
        If Not (Mat(i, j) = Reservation Or Mat(i, j) = "") Then
            MessageBox.Show("Construction impossible")
            Exit Sub
        End If
        ' colore le bouton
        DirectCast(Me.Controls("Button" & i.ToString & j.ToString), Button).BackColor = couleur
        ' calcule la zone matrice
        If i > 0 Then XDebut = i - 1
        If i < XMax Then XFin = i + 1 Else XFin = i
        If j > 0 Then YDebut = j - 1
        If j < YMax Then YFin = j + 1 Else YFin = j
        ' marque les réservations
        For k As Integer = XDebut To XFin
            For l As Integer = YDebut To YFin
                If Not Mat(k, l).Contains("C") Then Mat(k, l) = Reservation
            Next
        Next
        ' marque la construction
        Mat(i, j) = Construction
    End Sub
Je n'ai pas eu le temps de voir ton code, je regarderai un peu plus tard.

A+, Hervé.
rv26t est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2013, 17h33   #9
king2070
Invité de passage
 
Homme anouar belkadi
futur ingenieur genie electrique
Inscription : février 2013
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme anouar belkadi
Localisation : Tunisie

Informations professionnelles :
Activité : futur ingenieur genie electrique

Informations forums :
Inscription : février 2013
Messages : 20
Points : 2
Points : 2
desolé une derniere chose si je veut remplacer le backcolr par des backgroundimage quesque je fai
NB
B.backgroundimage=tof voiture bleu
R.backgroundimage=tof voiture rouge
J.backgroundimage=tof voiture jaune
V.backgroundimage=tof voiture vert
mercii pour votre aide
king2070 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 18h18   #10
king2070
Invité de passage
 
Homme anouar belkadi
futur ingenieur genie electrique
Inscription : février 2013
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme anouar belkadi
Localisation : Tunisie

Informations professionnelles :
Activité : futur ingenieur genie electrique

Informations forums :
Inscription : février 2013
Messages : 20
Points : 2
Points : 2
c'est bon probleme resolu
merci mon cher ami c'est un tré beau travail
king2070 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 18h45   #11
rv26t
Membre Expert
 
Hervé
Inscription : janvier 2007
Messages : 694
Détails du profil
Informations personnelles :
Nom : Hervé
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 694
Points : 1 176
Points : 1 176
De rien,
Pensez à mettre en résolu.
rv26t est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h12.


 
 
 
 
Partenaires

Hébergement Web