toss Skrevet 14. juli 2004 Del Skrevet 14. juli 2004 hvordan definerer man en martise eller objectgruppe? jeg er nybegynner,ja.. Lenke til kommentar
aadnk Skrevet 14. juli 2004 Del Skrevet 14. juli 2004 En matrise eller array kan defineres/deklareres slik: Dim Var() As Object Jeg forklarte litt mer grundigere hvordan å bruke dem i denne tråden. Lenke til kommentar
toss Skrevet 14. juli 2004 Forfatter Del Skrevet 14. juli 2004 takk skal du ha. så jeg kan definere 50 command buttons ved å skrive Dim btn(1-50) As Integer (hvis knappene er kalt "btn1-50"..) Lenke til kommentar
aadnk Skrevet 14. juli 2004 Del Skrevet 14. juli 2004 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
toss Skrevet 14. juli 2004 Forfatter Del Skrevet 14. juli 2004 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
aadnk Skrevet 14. juli 2004 Del Skrevet 14. juli 2004 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
toss Skrevet 14. juli 2004 Forfatter Del Skrevet 14. juli 2004 jeg prøvde, men nå lød feilmeldingen: "Typekonflikt" Lenke til kommentar
aadnk Skrevet 14. juli 2004 Del Skrevet 14. juli 2004 Ja, det er også sant. Paramentrene til Words versjon av Add kommandoen krever ikke at du skriver hvilken form kontrollen skal plaseres i. Derfor blir koden slik: Set aCommand(Tell) = Controls.Add("Forms.CommandButton.1", "cmdTest" & Tell) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå