Avatar billede bumle90 Nybegynder
22. juli 2003 - 18:08 Der er 1 kommentar og
1 løsning

collection driver mig til vanvid

nu er jeg ved at være godt træt af det.
Jeg har oprettet en class, og en collection baseret på denne class. Det hele oprettet i class-builderen.
MEN JEG KAN IKKE FINDE UD AF AT TILFØJE NOGET TIL DEN COLLECTION???
add har jeg prøvet at bruge på 1000 forskellige måde...Der må være noget jeg har fuldstændig misforstået.
Er der nogle der vil være venlige at vise mig et eksempel hvor de opretter en collection, en class og vigtigst af alt hvordan man tilføjer noget til den collection.
På forhånd tak.
Avatar billede fgsupermand Nybegynder
22. juli 2003 - 19:00 #1
Først en klasse: (Limit)
##############
Option Explicit

Private mstrName As String      'Navnet på reglen
Private mudtAction As Action    'Hvad der skal ske hvis reglen bliver brudt

Public Property Let Name(strName As String)
    mstrName = strName
End Property
Public Property Get Name() As String
    Name = mstrName
End Property

Public Property Let Action(udtAction As Action)
    mudtAction = udtAction
End Property
Public Property Get Action() As Action
    Action = mudtAction
End Property
########################

Så en samling af "limits" (LimitCollection)
################
Option Explicit

Private colLimits As Collection

'DEFAULT FUNCTION
Public Function Item(ByVal Index As Variant) As clsLimit
  Set Item = colLimits.Item(Index)
End Function

' NewEnum must return the IUnknown interface of a collection's enumerator.
' Gør det muligt at bruge For Each … Next på samlingen
' Funktionen er "usynlig"
Public Function NewEnum() As IUnknown
  Set NewEnum = colLimits.[_NewEnum]
End Function

'Tilføjer en ny menu til samlingen og retunere det indsatte "Menu" objekt
Public Function Add(strName As String) As clsLimit
    On Error GoTo handle
   
    Dim objLimit As New clsLimit
   
    'Tilføjer Limit til samlingen
    colLimits.Add objLimit, strName
    'Sætter Limit's navn
    objLimit.Name = strName
    'retunere "Limit" objektet
    Set Add = objLimit
   
    Exit Function
   
handle:
    If Err.Number = 457 Then 'Der findes allerede en Limit med det navn
        Set Add = Nothing
    End If
End Function

'Fjerne en "Limit" fra samlingen
Public Function Remove(strName As String) As Boolean
    colLimits.Remove strName
End Function

'Retunere antal limits i samlingen
Public Function Count() As Integer
    Count = colLimits.Count
End Function

Public Function Exists(strName As String) As Boolean
    Dim objLimit As New clsLimit
    Dim blnResult As Boolean
   
    blnResult = False
   
    For Each objLimit In colLimits
        If objLimit.Name = strName Then
            blnResult = True
            Exit For
        End If
    Next objLimit
   
    Exists = blnResult
End Function

Public Sub Clear()
    Class_Initialize
End Sub

Private Sub Class_Initialize()
    Set colLimits = New Collection
End Sub

Private Sub Class_Terminate()
    Set colLimits = Nothing
End Sub

#####################
Og så en test metode
Private Sub Test()
    Dim colLimit As LimitCollection
    Dim objLimit As Limit
   
    Set objLimit = colLimit.Add("Thu shall not steal")
End Sub
Avatar billede fgsupermand Nybegynder
22. juli 2003 - 19:06 #2
For at Item og NewEnum funktionerne virker skal man sætte det op i Visual Basic (det kan ikke gøre i koden)

Gå ind i din Collection klasse og tryk "Tools" så "Procedure attributes", i "Name" vælger du "Item" og trykker på "Advanced" i "Procedure ID" vælger du så "(Default)".
Så vælger "NewEnum" i "Name" og skriver -4 i "Procedure ID" og sæt så hak i "Hide this member", til sidst trykker du "OK" også skulle det virke
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging