Du skal lave din collection i et klassemodul, med tilhørende klasse... Hermed et eksempel lavet vha. vb classbuilderen (med et par få ændringer:
'Class Setting Option Explicit
Public Key As String Public Value As String
'Class Settings (din collection)
Option Explicit
'local variable to hold collection Private mCol As Collection
Public Function Add(Key As String, Value As Variant) As Setting 'create a new object Dim objNewMember As Setting Set objNewMember = New Setting
'set the properties passed into the method objNewMember.Key = Key If IsObject(Value) Then Set objNewMember.Value = Value Else objNewMember.Value = Value End If mCol.Add objNewMember, Key
'return the object created Set Add = objNewMember Set objNewMember = Nothing
End Function
Public Property Get Item(vntIndexKey As Variant) As Setting 'used when referencing an element in the collection 'vntIndexKey contains either the Index or Key to the collection, 'this is why it is declared as a Variant 'Syntax: Set foo = x.Item(xyz) or Set foo = x.Item(5) Set Item = mCol(vntIndexKey) End Property
Public Property Get Count() As Long 'used when retrieving the number of elements in the 'collection. Syntax: Debug.Print x.Count Count = mCol.Count End Property
Public Sub Remove(vntIndexKey As Variant) 'used when removing an element from the collection 'vntIndexKey contains either the Index or Key, which is why 'it is declared as a Variant 'Syntax: x.Remove(xyz)
mCol.Remove vntIndexKey End Sub
Public Property Get NewEnum() As IUnknown 'this property allows you to enumerate 'this collection with the For...Each syntax Set NewEnum = mCol.[_NewEnum] End Property
Private Sub Class_Initialize() 'creates the collection when this class is created Set mCol = New Collection End Sub
Private Sub Class_Terminate() 'destroys collection when this class is terminated Set mCol = Nothing End Sub
Well I would NOT have thought that Setting("Color.Status") would have worked but then I dont know what setting does! when you place Color.status in "" then it is regarded as string. But if Setting() can handle it then thats fine. So if it can handle ("Color.Status") then it should also be able to handle ("Identd.Enable") UNLESS Identd.Enabled is UNKNOWN!
DET BURDE IKKE være nødvendigt at lave så meget kode for så lidt! Jeg er enig med jennemaan i at det kan være smart at lave en sådan klasse men kun hvis det er større data mængder, der skal gemmes!
På at paste den eksakte kode, der benyttes så vil jeg kigge på den!
Med så meget viden på denne side kan det simpelthen ikke lade sig gøre at finde en løsning på noget jeg bruger HELE tiden og som overhovedet ikke burde være noget problem!!
Det fatter jeg ikke en skid af! Hvis du nu tog og pastede den kode så skulle det ikke tage mig lang tid at finde bommerten!! For sådan en er der! Man stirrer sig sgu blind på sådan noget lort ind imellem!
invisbleman... Nu gik spm jo om hvordan du kunne bruge en collection... At bruge et array af userdefined types er da en simpel løsning - men spørgsmåket gik på hvordan man brugte en collection...
Jeg er ligeglad med point, men lad være med at spilde folks tid (kunne være at de ikke gad svare så)...
jennemaan > Som jeg forstod dit svar så gik det på at man ikke kunne smide strenge ind i en collection men at det skulle være objekter hvilket ikke er rigtigt! Det har nok noget at gøre med at VB bag om ryggen på en laver disse strenge om til objecter og derfor forventer en type, der kan indeholde et objekt, når der hentes ting fra en collection!
Det er en af de RIGTIG store ulemper ved VB!! Du har ikke en jordisk chance for at vide, hvad fanden der foregår!
Det er jo lettere at gå herind at spørge! Og så vidt jeg ved synes jeg ikke at det står særlig tydeligt der!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.