[vb]Geen properties list van object uit collection

Pagina: 1
Acties:

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 01-09 08:19

Tukk

De α-man met het ẞ-brein

Topicstarter
Ik ben geen VB n00b, maar nu heb ik toch iets waar ik even geen antwoord op kon verzinnen.

Stel ik heb twee objecten A en B.
A dient meerdere instanties van B te bezitten.
De meeste efficiente manier die ik ken is met behulp van een collection.
(bestaan er betere manieren???)

B:
code:
1
2
3
property get Name as string
  Name = "TukkB" 
end  property


A:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim lColBs as collection

property get Name as string
  Name = "TukkB" 
end  property

property get Bs() as collection
  Bs = lColBs
end property

public function addB(aB as B)
   lColBs.add(aB)
end function


So far so good!

Als ik nu vanuit de applicatie een instantie heb van A die meerdere B's bevat kan ik
de eerste B bereiken door A.Bs.item(1)

Alleen wat ik nu voor elkaar will krijgen is dan als de punt na A.Bs.item(1) plaats dat dan de properties list van B verschijnt. Ik weet dat B de name propery heeft maar deze verschijnt gewoon weg niet. A.Bs.item(1).Name werkt trouwens wel run-time.

Ik begrijp dat het komt doordat op development level VB niet begrijpt dat ik in de collection van A allemaal B'tjes ga stoppen. Daarom zal ik de properties van B niet te zien zijn.

Lang verhaal :O , maar dit alles om me zelf duidelijker te maken. :+
Mijn vraag is nu: Hoe krijg ik toch voor elkaar dat anderen die properties te zien
krijgen als zijn mijn B collection via A proberen te bereiken.....

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

Zie ik het verkeerd of is die BS een collection en niet een collection van B? Iets dergelijks moet volgens mij.

oogjes open, snaveltjes dicht


Verwijderd

uit het blote bolletje :
code:
1
2
3
4
5
6
    Dim col As New Collection
    Dim b As New clsIets
    Dim c As clsIets           'deze wordt niet ge-New-ed . .en is dus "leeg"
    
    col.Add b, "naampje"
    c = col("naampje")


omdat vb niet weet wat jij in die collection gestopt heb . . daarom krijg je geen lijstje van properties . . dit kun je dus oplossen door hetgene wat in de collection zit eerst terug te zetten naar zijn eigen type (zie Var c)

ps : dit zou ideaal zijn . .maar dat snap VB niet
code:
1
Dim col As Collection Of clsIets

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 01-09 08:19

Tukk

De α-man met het ẞ-brein

Topicstarter
damn Skizmo, kan dat? 8)7

Volgens mij is dit het, ik ga het morgen in de baas z'n tijd proberen..
Je hoort het nog..

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


Verwijderd

yupz. .. dat kan .. . maar nu ik erover nadenk .. c = col("naampje") moet geloof ik Set voor. . .dus Set c = col("Naampje") .. .weeniemeerzeker .. ;(

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 01-09 13:54

Crazy D

I think we should take a look.

Je geeft nu de hele collectie terug. Ik neem aan dat je 1 item wilt, dus zul je een Index of Key parameter mee moeten geven, en dan kun je i.p.v. "as Collection" er "as B" van maken:
code:
1
2
3
property get Bs(Index as Integer) as B
    Set Bs = lColBs(Index)
end property

Overigens kun je dit heel makkelijk met de class builder wizard ding (:P) maken, je gewone class aanmaken (B in dit geval) en dan via die wizard een collectionclass maken gebaseerd op die class B. Werkt super simpel :)

edit:
alleen dan met Set ervoor...

Exact expert nodig?


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 01-09 08:19

Tukk

De α-man met het ẞ-brein

Topicstarter
Crazy_D, ik wil echt de gehele collection terug geven.
Je kan dan bijvoorbeeld 'for each' gebruiken en er zitten voor mij nog meer voordelen aan.
ps : dit zou ideaal zijn . .maar dat snap VB niet
Skizmo ik blijk dus verkeerd gelezen te hebben. Het woordje niet had ik gemist ;(

Ik ga ff verder googlen...

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 01-09 13:54

Crazy D

I think we should take a look.

Met een collection class kun je ook for each gebruiken... :) (ik gebruik die dingen echt te pas en te onpas (naja bij wijze van dan), vnid ze echt ideaal :)

Exact expert nodig?


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 01-09 08:19

Tukk

De α-man met het ẞ-brein

Topicstarter
Ik denk dat ik als resultaat moet concluderen dat het in VB dus gewoon niet kan.

:(

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 01-09 13:54

Crazy D

I think we should take a look.

Hmmm sorry maar heb je sowieso wel even gekeken naar zo'n collection class? Die gedraagt zich namelijk volledig als een collection, alleen dan van het type class dat jij ervan maakt, dus met de handige properties list... Alleen dim je dan dus niet meer "as Collection" maar als "as CollectionOfClassB"...

Exact expert nodig?


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 01-09 08:19

Tukk

De α-man met het ẞ-brein

Topicstarter
Hmmm sorry maar heb je sowieso wel even gekeken naar zo'n collection class?
Jawel, ik wist wel dat ik dit probleem met een eigen gecodeerd class-je op kan lossen,
maar ik wilde juist weten of dit niet op een makkelijker manier kan uitvoeren.

Ik had absoluut verwacht dat dit m.b.v. VB-syntaxis op te lossen zou zijn en daar was ik
benieuwd naar....

Alles is toch op te lossen door het zelf te schrijven? Nu moet ik alleen weer moeilijk doen om voor elke class die ik maak weer een collection-class moet definieren (= veel overhead)

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 01-09 13:54

Crazy D

I think we should take a look.

Je kan als vage oplossing (:P) een functie maken die als input 1 item uit de collection wil en een class B teruggeeft, en dan per class een functie schrijven.

Tis inderdaad wel een nadeel dat je anders voor iedere class een 2e collection-class moet maken, mjah tis niet anders ;) Ik heb er op zich geen probleem mee, kan er mooi meteen indien nodig wat extra functies instoppen.

Exact expert nodig?

Pagina: 1