[VB] Event voor een dynamisch gemaakte Button in Array

Pagina: 1
Acties:

  • JumpingCycle
  • Registratie: Oktober 2003
  • Laatst online: 17-08 11:01
Ik heb het volgende probleem,

Ik heb een array met 'Buttons', dit werkt perfect de buttons worden dynamisch aangemaakt en staan ook op het scherm. Nu krijg ik het met geen mogelijkheid voor elkaar om een event voor die knop op te vangen. Het gaat goed tot ik er een array van maak.

Hier het stukje code voor het aanmaken van 1 button uit de array

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Explicit
Private WithEvents btnObj As CommandButton


Private Sub Form_Load()
   
   Dim btnObj(5) As CommandButton
   
   Set btnObj(1) = Controls.Add("VB.CommandButton", "myButton")
   With btnObj(1)
      .Visible = True
      .Width = 2000
      .Caption = "Hallo"
      .Top = 1000
      .Left = 1000
   End With
End Sub


Heeft iemand ideeën of ervaring hiermee? Nogmaals het werkt dus wel als ik er geen array van maak en die haakjes ook verwijder... :?

[ Voor 4% gewijzigd door JumpingCycle op 09-10-2003 11:30 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je krijgt bij het event toch gewoon de index mee van de button. Of begrijp ik je vraag nu niet goed?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • JumpingCycle
  • Registratie: Oktober 2003
  • Laatst online: 17-08 11:01
Nou da's dus het probleem, die events moet ik ook zelf aanmaken.

Bijvoorbeeld btnOBJ_click (index as integer)

Zo zou visual basic dat zelf aanmaken met statische buttons, maar als ik zelf deze functie aanmaak krijg ik een foutmelding, echter werkt btnObj_click() wel als hij dus niet in een array zit...

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
JumpingCycle schreef op 09 oktober 2003 @ 11:26:
Ik heb het volgende probleem,

Ik heb een array met 'Buttons', dit werkt perfect de buttons worden dynamisch aangemaakt en staan ook op het scherm. Nu krijg ik het met geen mogelijkheid voor elkaar om een event voor die knop op te vangen. Het gaat goed tot ik er een array van maak.

Hier het stukje code voor het aanmaken van 1 button uit de array

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Explicit
Private WithEvents btnObj As CommandButton


Private Sub Form_Load()
   
   Dim btnObj(5) As CommandButton
   
   Set btnObj(1) = Controls.Add("VB.CommandButton", "myButton")
   With btnObj(1)
      .Visible = True
      .Width = 2000
      .Caption = "Hallo"
      .Top = 1000
      .Left = 1000
   End With
End Sub


Heeft iemand ideeën of ervaring hiermee? Nogmaals het werkt dus wel als ik er geen array van maak en die haakjes ook verwijder... :?
Is het niet zo dat je nu een nieuwe locale variabel aanmaakt in de load functie?

code:
1
2
3
4
5
6
7
8
9
10
Option Explicit
Private WithEvents btnObj() As CommandButton

Private Sub Form_Load()
   
   ReDim btnObj(5) As CommandButton
   
   Set btnObj(1) = Controls.Add("VB.CommandButton", "myButton")

End Sub


Mischien dat dit beter werkt? Ik weet niet het is een tijdje geleden dat ik met vb heb gewerkt.

Noushka's Magnificent Dream | Unity


  • JumpingCycle
  • Registratie: Oktober 2003
  • Laatst online: 17-08 11:01
Dat had ik dus ook al geprobeerd :) maar

code:
1
Private WithEvents btnObj() As CommandButton


wordt niet geaccepteerd (althans de haakjes niet)...

VB geeft melding dat 'AS' al voor de haakjes moet komen te staan :(

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Dat is vreemd. In vb.net, de versie waar ik goed bekend mee ben zou dat gewoon moeten werken?

Dit is zelfs een stukje uit de msdn:
Visual Basic:
1
2
3
4
5
Dim I, MyArray() As Integer   ' Declare variable and array variable.
ReDim MyArray(5) ' Allocate 6 elements.
For I = 0 To UBound(MyArray)
   MyArray(I) = I   ' Initialize array.
Next I

Noushka's Magnificent Dream | Unity


  • JumpingCycle
  • Registratie: Oktober 2003
  • Laatst online: 17-08 11:01
Ja okee, integer pakt ie bij mij ook wel, het werken met arrays gaat ook perfect maar juist een array van commandbuttons is het probleem :)

Private WithEvents btnObj() As CommandButton

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Dat weet ik niet sorry. Geen idee waarom die dat dan niet pakt.

Noushka's Magnificent Dream | Unity


Verwijderd

vb ondersteunt voor zover ik weet geen array van controls/objecten die 'withevents' worden gedeclareerd. Je zou het ook anders kunnen doen. Zet op de form waar je de buttons wil hebben één button (in design mode dus), bijvoorbeeld cmdButton, en geef hem index 0. Maak vervolgens de events aan die je voor deze buttons wilt afvangen. Als het goed is krijgt elke event een parameter 'index' mee. Vervolgens kan je vanuit code mbv 'load cmdButton(index)' meerdere buttons aanmaken. Let er wel op dat index dan 1 of hoger moet zijn.

  • JumpingCycle
  • Registratie: Oktober 2003
  • Laatst online: 17-08 11:01
OK dat VB dat niet ondersteund zou heel goed kunnen gezien de situatie, maar waarom kan hij dat wel dan met al aangemaakte buttons? Nou ja, op die manier kan ik het idd wel aan de praat krijgen. :)
Pagina: 1