Witam, mam problem z kodem. Mam 600 pictureboxów i chciałbym, aby dla tych wszystkich 600 była jeden kod.
Private Sub Picture1_Click()
If Picture1.BackColor = &HFFFFFF Then Picture1.BackColor = &H0& Else If Picture1.BackColor = &H0& Then Picture1.BackColor = &HFFFFFF
End Sub
I zamiast kopiować to wszystko Picture1, Picture2… Picture600 dało by się zrobić tak aby po prostu odpowiadało to:
If Picture1.BackColor = &HFFFFFF Then Picture1.BackColor = &H0& Else If Picture1.BackColor = &H0& Then Picture1.BackColor = &HFFFFFF
Nazwy dla poszczególnych obrazków powinno być w takim przypadku indeksowane.
Np. Picture1(0), Picture1(1), Picture1(2)… Picture1(599)
A następnie wystarczy np. utworzyć pętlę:
For i=0 to 599
If Picture1(i).BackColor = &HFFFFFF Then Picture1(i).BackColor = &H0& Else If Picture1(i).BackColor = &H0& Then Picture1(i).BackColor = &HFFFFFF
next i
Jak tworzyć nazwy indeksowane?
Najprościej, to po umieszczeniu na formie jednego obrazka o nazwie np. picture1 i po zaznaczeniu go wybrać opcję: Edit—> copy
A następnie Edit—>Paste
I na pytanie: you already have a control named ‘Picture1’. Do you wan to create a control array?
kliknąć: Tak.
Można też umieszczać indeksy we właściwościach obiektów: Properties gdzie jest taka opcja: index
Podczas następnych wklejeń indeksy kolejnych obrazków zostaną dodawane automatycznie.
Na Formie chcesz umieścić 600 obrazków?
Nie wydaje mi się żeby to było możliwe. O ile wiem to na formie można umieścić co najwyżej 256 elementów.
Dzięki znowu za pomoc floyd ;D No 600 to przesada ale trochę tego dużo. – Dodane 29.06.2011 (Śr) 20:57 – Yyy… czekaj, gdzie to najlepiej wstawić do timera? Gdy wklejam:
Private Sub Picture1_Click(Index As Integer)
For i = 0 To 59
If Picture1(i).BackColor = &HFFFFFF Then Picture1(i).BackColor = &H0& Else If Picture1(i).BackColor = &H0& Then Picture1(i).BackColor = &HFFFFFF
Next i
End Sub
To jak klikne w jeden kwadracik to wszystkie zmieniają kolory.
Jeżeli chcesz aby zmieniał tło tylko ten kwadracik który klikniesz to oczywiście bez pętli.
Procedura Picture1_Click(index) powinna wówczas wyglądać tak:
Private Sub Picture1_Click(Index As Integer)
If Picture1(Index).BackColor = &HFFFFFF Then Picture1(Index).BackColor = &H0& Else If Picture1(Index).BackColor = &H0& Then Picture1(Index).BackColor = &HFFFFFF
End Sub