Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Reflektiivinen koodi (VB)

Cc [15.08.2006 22:53:13]

#

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

Merri [15.08.2006 23:01:03]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta