[VB] at runtime event invullen voor toegevoegde component

Pagina: 1
Acties:

  • BdR
  • Registratie: Juni 2001
  • Laatst online: 03-09-2025

BdR

TV is gooder then books

Topicstarter
ik heb at runtime een aantal labels toegevoegd aan mn form dat werkt goed, maar nou wil ik op deze labels kunnen klikken. Dus ik dacht dat je net als in Delphi, het OnClick event ook op runtime kan invullen maar deze code werkt niet.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public Function test()
  MsgBox "test" 'of Self.Tag 'zou moeten kunnen(?)
End Function 

Private Sub Form_Load()
  Dim Check As Label
  Dim i As Integer
  Dim Name As String

  For i = 1 To 3
    Name = "Label" & i
    Set Check = Form1.Controls.Add("VB.Label", Name, Form1)
    Check.Left = 120 + (i * 240)
    Check.BackColor = 12640511 - i * 20
    Check.Tag = i
    Check.Width = 255
    Check.Click = test 'deze regel geeft error
    Check.Visible = True
  Next i

End Sub
Alles werkt goed, behalve de regel "Check.OnClick=test", deze geeft de error "Method or data member not found". Als ik "Check.OnClick = test" probeer krijg ik het zelfde.. :{

Wat is de manier om at runtime een functie aan een event te koppelen? of is het onmogelijk? :?

btw ik weet dat dit topic er al is maar dit is echt een aparte vraag

mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 29-08 15:14

johnwoo

3S-GTE

Dat is onmogelijk... om events af te vangen voor dynamisch gecreeerde controls zul je een control array moeten gebruiken. Je krijgt dan een Index mee in de Click event waaraan je kan zien welk control het geweest is.

Kijk ook eens hier.

[ Voor 0% gewijzigd door johnwoo op 11-11-2002 17:53 . Reden: linkje toegevoegd ]

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 29-08 04:15

Gerco

Professional Newbie

johnwoo: van een control array kun je geen events vangen (niet zonder een hoop geklooi tenminste). Wat je moet doen is een withEvents variabele maken en daar de Control aan assignen. Dan kun je de events van de variabele afvangen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Gerco: Van een control array kun je prima events afvangen.
Je plaats gewoon 1 label op je form, maakt die hidden en vervolgens maak je van dat label net zo veel kopieën als je nodig hebt.
Van het eerste label maak je een OnClick event en daarin kun je de index opvragen zodat je weet op welk label is er geklikt.

Verwijderd

Gerco schreef op 11 November 2002 @ 19:00:
johnwoo: van een control array kun je geen events vangen (niet zonder een hoop geklooi tenminste).
Waarom niet dan? 't enige wat je moet doen is 'n indexje bekijken om te zien welk control er geraakt is.. hardly een hoop geklooi te noemen toch?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 29-08 04:15

Gerco

Professional Newbie

Ik bedoelde een collection... foutje van mij.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • BdR
  • Registratie: Juni 2001
  • Laatst online: 03-09-2025

BdR

TV is gooder then books

Topicstarter
thanks voor de reacties, ik heb em door :7

ik heb een control array gemaakt door 2 labels op het form te plaatsen en deze dezelfde naam te geven (kan dit trouwens niet op een andere manier, bijv. een "Control Array"-property ofzoiets? dat leek me logischer..) en dan kan je gewoon de events van die ene control gebruiken en de index gebruiken om de verschillende controls te 'herkennen'.

Dat aanmaken van een Control Array was even het lastige punt, maar nu kon ik dus met deze code alles aanmaken
Visual Basic .NET:
1
2
3
4
5
For i = 1 To 10
  Load Label1(i)
  Label1(i).Left = i * Label1(i).Width
  Label1(i).Visible = True
Next i


ohja.. moet ik de objects die ik met "Load" gemaakt heb ook "unloaden" als de applicatie sluit, of gebeurt dat automatisch? :?

mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 29-08 03:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

BdR schreef op 11 November 2002 @ 19:52:
(kan dit trouwens niet op een andere manier, bijv. een "Control Array"-property ofzoiets? dat leek me logischer..)


ja, gewoon 1 control maken, en bij Index 0 invullen

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.


Verwijderd

Onclick bestaat niet in VB.... je heb wel t Label1_Click
Pagina: 1