Pystyykö visual basic:illä tekemään kasvavan kontrollin nimen?
Esim:
Formilla on labeleita nimellä label1, label2 jne...
Ja kaikki labelit ovat arrayssa esim. label1(0) jne...
dim nimi as string dim arvo as integer arvo = 0 nimi = "label" & arvo for arvo = 1 to nimi.count nimi(arvo).caption = "moi" arvo = arvo + 1 next
Tutkimalla löysin yhden rivin koodin tähän:
MsgBox Me.Controls("Command1").CaptionMyös arrayt toimivat:
' olettaen, että Command2 on kontrolliarray
MsgBox Me.Controls("Command2")(0).Caption
MsgBox Me.Controls("Command2")(1).CaptionMsgBox on tietenkin vain sitä varten, että voi nähdä koodin toimivan.
Muoks!
Koodia voi myös nopeuttaa useamman kutsun osalta:
'
Dim Ctl As Control, Ctl2 As Object
Set Ctl = Me.Controls("Command1")
MsgBox Ctl.Caption
Set Ctl2 = Me.Controls("Command2")
MsgBox Ctl2(0).Caption
MsgBox Ctl2(1).CaptionControls on ilmeisesti Collection, joten sitä ei kannata paljoa kutsua tekstimuuttujalla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.