Nu är iofs Item en property snarare än en metod, men iaf:
Tools->Procedure Attributes->Advanced->Tryck sedan F1, för det finns en grej som är lätt att missförstå..
(Procedure Attributes är dimmat om du inte befinner dig inne i själva klasskoden.)
11 svar · 345 visningar · startad av Erik Juhlin
Hur gör man så att en metod är standard för en klass? Som .Item är i Scripting.Dictionary...
Nu är iofs Item en property snarare än en metod, men iaf:
Tools->Procedure Attributes->Advanced->Tryck sedan F1, för det finns en grej som är lätt att missförstå..
(Procedure Attributes är dimmat om du inte befinner dig inne i själva klasskoden.)
F1 hjälper mig inte eftersom att jag inte har MSDN installerat. Kan du istället säga hur man gör?
OK. Du väljer din property i övre combon och sätter Procedure ID till (Default). That's it.
(Det luriga är att det inte hjälper att kryssa i User Interface Default.)
Tack!
Hur gör man sen så att man med For Each ... In ... kan gå igenom min collection?
Dim Item as String
For Each Item In MinCollection
'...
Next Item
Men behöver jag inte ha vissa metoder i mitt collectionobjekt?
Nej. Det går att loopa igenom en collection sådär eftersom att den då använder Item som är standard i collection. :)
Erik Juhlin skrev:
Men behöver jag inte ha vissa metoder i mitt collectionobjekt?
Du försöker alltså skriva en egen klass som uppför sig som en collection vad gäller for - each? Isåf är du antagligen rätt kokt, eftersom VB inte stöder klassarv. (Att skriva Implements Collection i klassen funkar inte heller eftersom Collection innehåller en metod _NewEnum som inte ens är ett tillåtet metodnamn i VB.)
Du blir nog tvungen att skriva klassen i nåt annat språk: VB.NET eller C++ tex.
Isåf är du antagligen rätt kokt
Vem är det som är kokt egentligen...? :)
Jodå, visst går det att skriva egna klasser som man kan köra For...Each på...
Public Property Get NewEnum() As IUnknown
Set NewEnum = myCollection.[_NewEnum]
End Property
Gå sen in i menyn och välj "Procedure Attributes", i ProcedureID skriver du "-4", samt så måste du klicka i "Hide this member"
myCollection är alltså ett Collection-objekt som kan innehålla referenser till dina egna klasser.
Nu kan du köra For...Each på din klass och returnera det som finns i din collection.
fredrik skrev:
Vem är det som är kokt egentligen...?
Tja, denna gången var det uppenbarligen jag. Du har naturligtvis helt rätt. När jag själv testade så provade jag att lägga till en funktion med namnet _NewEnum (duh!), vilket naturligtvis inte går att kompilera. Tricket är att sätta Procedure Id till -4. Tack.