Gå til innhold

Martiser og objectgrupper


Anbefalte innlegg

Videoannonse
Annonse

Vel, i grunnen ja, men det krevs en del mer avansert koding for å få det til å fungere. Vanlige objekter (som Collection o.l) kan man fint deklarere slik:

 

Dim aColl(1 To 100) As New Collection

 

Eller slik:

 

Dim aColl(1 To 100) As Object ' Eller As Collection
Dim Tell As Long

For Tell = LBound(aColl) To UBound(aColl)
   Set aColl(Tell) = New Collection
Next

 

Men dette kan man ikke gjøre med kontroller. Labeler, timere, command buttons ect. kan derfor ikke deklareres på denne måten. Istedenfor må man gjøre det på denne måten:

 

Dim aCommand(1 To 10) As Object ' Eller As CommandButton
Dim Tell As Long

For Tell = LBound(aCommand) To UBound(aCommand)
   Set aCommand(Tell) = Controls.Add("VB.CommandButton", "cmdTest" & Tell, Me)
   
   aCommand(Tell).Visible = True
   aCommand(Tell).Move 120, ((Tell - 1) * 360) + 120, 1280, 360
   aCommand(Tell).Caption = "Knapp nr. " & Tell
Next

 

Det er ikke lett å forklare den overstående koden, men som du ser er det noen egenskaper som må settes etter skapelsen, noen som normalt sett ikke trenger å bli endret i det hele tatt. Visible er f.eks alltid satt til False, mens Move kan brukes til å sette posisjonen og størrelsen på formen (er 0,0,0,0 som standard) i rekkefølgen X, Y, Bredde og Høyde.

 

Controls.Add funksjonen legger til kontroller med følgende paramentre:

 

[klasse navn på kontroll (VB.Label[/] for Label, VB.CommandButton for CommandButton ect.)], [Navn på kontroll], [Form eller PictureBox hvor kontrollen skal plasseres (Me er akkurat lik formen koden kjøres i)]

 

Husk bare på at du må deklarere matrisen for det den skal brukes for. As Integer nytter ikke for kontroller, da dette er datatypen for heltall. Skal du lagre tekst bruker du datatypen String, og hvis du skal blande (alt mulig) kan du bruke Variant.

Lenke til kommentar

når jeg kjører kommandoen får jeg opp en feilmelding som sier at linjen

Set aCommand(Tell) = Controls.Add("VB.CommandButton", "cmdTest" & Tell, Me)

er feil. næremere betemt "ugyldig klassestreng"

 

kan det ha noe å gjøre med at jeg bruker vb i word?

Lenke til kommentar
kan det ha noe å gjøre med at jeg bruker vb i word?

Ja, ettersom Word bruker andre klasser og kontroller vil du ikke kunne bruke det samme navnet på kontrollene. Jeg tror du må erstatte VB.CommandButton med Forms.CommandButton.1, men jeg er ikke sikker. Jeg fant dette ut ved å bruke system registeret (HKEY_CLASSES_ROOT), så det kan hende oppsettet er annerledes hos din maskin.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...