[VB6] 2d PictureBox Array MouseDown/Click event

Pagina: 1
Acties:

  • dixon
  • Registratie: Januari 2001
  • Laatst online: 16-08 17:19
Ik heb dus dmv code een 2-Dimensionale array van PictureBox's opgebouwd op mijn Form. Nu kan ik dus niet in Design View dubbelklikken op zo'n PictureBox zodat VB zelf een _Click procedure maakt. Ik lees overal over de Control Array, maar die is altijd 1-Dimensionaal. Zou wel fijn zijn als die ook 2D kon zijn.

Het is me in VB .Net al gelukt met een nogal omslachtige manier. Ik heb eerst een functie waar ie de PictureBox Array opbouwt, en daar de y,x coordinaten van de array in de .Text eigenschap(bijv: "10,3") voor elke PictureBox zet. Daarna voegt ie een handler toe:
AddHandler.Click, AddressOf Me.HandlePictureBoxArray_Click

En in die HandlePictureBoxArray functie word sender.Text opgevraagd en weer ontleed naar Byte waardes. Op deze manier weet ik welke PictureBox is geklikt.
En t werkt ook, omslachtig, maar t werkt. Misschien zou het makkelijker zijn om .Location op te vragen maar kheb geen idee hoe ik die ontleed :)

Ik heb uren en uren op google gezocht maar iedereen heeft het over een Control Array en ik wil dus een 2D array. Ik heb ook iets gelezen waaruit blijkt dat het onmogelijk is, wat ik me niet kan voorstellen.

Wat een onzin..


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je kunt toch ook gewoon een 2D array mappen op een 1D array?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 16-08 17:19
Ow? Hoe dan?

Ik weet dat als ik een PictureBox kopieert en plakt dat ie vraagt wil je Control Array maken, ja dus en dat werkt leuk :) Maar tis niet zo dat als je die weer kopieert en plakt dat ie dan vraagt of ie weer een Control Array moet maken. Dan plakt ie ze gewoon met pbNaam(x+1) zeg maar

Wat een onzin..


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 16-08 17:19
Dit is ongeveer het stukje waarmee ik hem opbouw (komt eruit te zien als een damboord met zwart om wit)

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
Dim rest_x As Single
Dim rest_y As Single
    For Y = 1 To aantal_y
        For X = 1 To aantal_x
            
            rest_x = X Mod 2
            rest_y = Y Mod 2

            picName = "Pic_" & Y & "_" & X

            Set pbVakje(Y, X) = frmMain.Controls.Add("VB.PictureBox", picName, frmMain)
            With pbVakje(Y, X)
                .Appearance = 1
                .BorderStyle = 0
                .Height = 500
                .Width = 500
                .Left = (X * 500)
                .Top = (Y * 500)
                .ToolTipText = Str(Y) & "," & Str(X)
                
                
                If (rest_x = 1) Then
                    If (rest_y = 0) Then
                        .BackColor = &H0  'wit
                    End If
                    If (rest_y = 1) Then
                        .BackColor = &HFFFFFF 'zwart
                    End If
                End If
                
                If (rest_x = 0) Then
                    If (rest_y = 1) Then
                        .BackColor = &H0   'wit
                    End If
                    If (rest_y = 0) Then
                        .BackColor = &HFFFFFF 'zwart
                    End If
                End If

                .Visible = True
            End With
        Next X
    Next Y

Wat een onzin..


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Als je een 2D array hebt van 100 breedt en 50 hoog. Dan kun je dat aanspreken met (x, y). Maar je kunt het natuurlijk ook aanspreken als een 1D array, waarbij de index gelijk is aan (y * 100 + x)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 16-08 17:19
Hmm oke, wacht ff, dus ik moet op het moment dat ik me 2d Array opbouw, een extra 1d array meebouwen met dus de waarde volgens die berekening?
ik snap het niet helemaal hoe doe ik dan dat .click gebeuren enzo

Wat een onzin..


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 16-08 17:19
Het is in VB6 dus niet gewoon mogelijk om een click event te binden aan een 2d array van een picture box?

Wat een onzin..


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, je vergeet gewoon de 2D array, en je maakt gewoon alleen een 1D array van controls

Ik weet verder niet of het überhaupt mogelijk is om een 2D array te maken. Kun je niet iets met Redim doen ofzo? Ben niet zo'n VB held dus ik zou het niet weten eigenlijk :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1