Dubbel array voor het inkleuren van shapes

Status
Niet open voor verdere reacties.

satriano17

Gebruiker
Lid geworden
30 sep 2012
Berichten
342
Met deze code kan ik een wit shape1 zwarte inkleuren met de muis met de linker toets
Met de rechter toets kan ik de shape terug wit verkleuren.
De shape bevind zich op een image, want wij weten dat de shape geen clik event heeft.
En dit werkt goed met 1 image en 1 shape.

Code:
Private Sub image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Shape1.FillColor = vbBlack
End If
If Button = 2 Then
Shape1.FillColor = vbWhite
End If
End Sub

Maar, mijn echt bedoeling was en is, te werken met 50 shapes, om een matrix te maken, dus heb ik nu twee arrays gemaakt.
Een voor de image1(0)->Image1(49)
En een voor Shape1(0)->Shape1(49)
Mijn probleem nu is:
Hoe een commando click bouwen in paar regels om de twee arrays te bedienen om, een per een, de gewenste aantal shapes te inkleuren.

Ik heb van alles geprobeerd. Bv ongeveer zo (ik weet dat niet correct is)
Code:
Private Sub image1_Click(Index As Integer)_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
For i = 1 to 49
Shape1(i).FillColor = vbBlack
End If
.....
 
Laatst bewerkt:
Probeer het eens zo:
Code:
Private Sub image1_Click(Index As Integer)_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim Shp As Shape
    If Button = 1 Then
        For i = 1 to 49
            Set Shp = Me.Controls("Shape" & i)
            Shp.FillColor = vbBlack
        Next
    End If
.....
 
Bedankt , Edmoor voor uw reactie.

Ik moest uw code een beetje aanpassen zo want ik had (ik weet niet waarom) error hier
Code:
For i = 1 to 49

maar uiteindelijke werkt nu met:

Code:
Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = vbLeftButton Then
    Shape1(Index).FillColor = vbBlack
  End If
  If Button = 2 Then
    Shape1(Index).FillColor = vbWhite
  End If
End Sub
Bedankt want in elke geval had mij uw code tot de definitieve formule van hier boven gebracht.
Bedankt. Opgelost.
 
Laatst bewerkt:
Zoals ik al zei, het probleem is opgelost.
Maar ik zat dan in een ander probleem. Ik heb dus 120 shapes.Een array van 120 shapes.
Ik wilde de volgende voorwaarde stellen: als een shape wit is dan moet not visible.
Maar aangezien ik het niet 120 keer kan herhalen, zou er dan een array-gebaseerde formule zijn die de conditie op de 120 shapes in één klap regelt?

Ik had dan zo opgesteld en geprobeerd in dezelfde image1 sub

Code:
for i=1 to 119
If shape1(i).fillcolor=vbwhite then
shape1(i).visible=false
next
end if

maar werkt niet.
 
Laatst bewerkt:
opgelost.

Code:
dim i as integer
for i=1 to 119
If shape1(i).fillcolor=vbwhite then
shape1(i).visible=false
end if
next
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan