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").Caption
Myös arrayt toimivat:
' olettaen, että Command2 on kontrolliarray MsgBox Me.Controls("Command2")(0).Caption MsgBox Me.Controls("Command2")(1).Caption
MsgBox 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).Caption
Controls on ilmeisesti Collection, joten sitä ei kannata paljoa kutsua tekstimuuttujalla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.