@wolfgang: Habe Deine L�sung nochmal gepostet, weil ich anhand der sibjects nicht erkannt hatte, dass diese mails noch zum selben Problem geh�ren...
Claudius > -----Original Message----- > From: Wolfgang Kluge [mailto:[EMAIL PROTECTED]] > Sent: Mittwoch, 13. M�rz 2002 20:53 > To: AspGerman Kaffeehaus > Subject: [aspdecoffeehouse] RE: vererbung von variablen per > vb [war: RE: vb-frage zu klassenmodulen] > > > > hi.. > > ich glaube(!) verstanden zu haben, was du willst..ob dies > wiederum sinnig > ist, ist wie immer ansichtssache. > > wieder mal die einfachste l�sung, die auch oft praktiziert > wird ist, dass > jede deiner klassen einen verweis auf die klasse1 bzw. auch > dessen parent > hat. > > > bei controls sieht man zb h�ufig die eigenschaft "parent".. > diese w�re dann > ein verweis auf deine main-klasse. > > beim instanzieren deiner objekte musst du eben auch noch > parent mitgeben. > problematisch(bzw. eigentlich nur m�hselig) ist dabei, dass du niemals > nie-nicht vergessen darfst, diesen auch wieder zu entfernen, > da sonst im > schlimmsten fall dein ganzes objektgebilde im speicher bleibt > (und das mag > der iis gar nicht*g*) > > ums nochmal mit anderen worten zu verdeutlichen: > es gibt 2 klassen. clsParent und clsChild > > du willst nun von clsChild auf eine funktion/ein objekt von clsParent > zugreifen. > deswegen kannst du in clsChild eine eigenschaft namens "parent"(nur > schreiben und wenn du willst auch als friend definieren) anlegen. > sieht dann ca. so aus: > > Friend Property Set parent(Value As clsParent) > Set m_ParentObject = Value > End Property > > m_ParentObject ist dabei eine modulweite variable vom typ clsParent > diese musst(!!) du bei class_Terminate() wieder freigeben, > sonst kommts zu > besagten h�ngern (da gibts noch mehr gr�nde, aber eins nach > dem anderen > *g*)... > > > so. wenn du nun von deiner klasse clsParent aus ein > child-objekt erstellst, > solltest du gleich danach die eigenschaft setzen > > Set m_clsChild = New clsChild > Set m_clsChild.parent = Me > > > ums etwas sicherer und vielleicht auch �bersichtlicher zu > halten, kannst du > ja alle funktione, die von deinen unterobjekten aufgerufen > werden sollen als > friend deklarieren. nat�rlich nur, wenn du diese nicht auch > extern aufrufen > willst. > > friend-funktionen(und auch eigenschaften) sind nach aussen > einfach nicht > mehr sichtbar, und k�nnen nur innerhalb der klassen des einen > projekts(deiner ax-dll aufgerufen werden) > > > wenn du eine auflistung hast, und du immer wieder auf ein > parent verweisen > willst, statt immer wieder auf die "haupt"-klasse. dann > solltest du die > eigenschaft auch lesbar machen, damit du dich dort bis zur > obersten ebene > durchangeln kannst ;) > > > dann bleibt noch dazuzusagen: da es unter vb6 ja keine > konstruktoren gibt, > ist in der funktion Class_Initialize der childklasse das > parentObject noch > nicht gesetzt.. leider > > daher: wenn du sofort nach objekterstellung an der > parentklasse etwas machen > willst, statt Class_Initialize die eigenschaftsfunktion als > "einstiegspunkt" > nehmen. dann sollte es passen > > > ach ja. zu guter letzt noch ein kleiner hinweis: > in klassen sollte(von wem das ist, wei� ich nicht*g*) man > m�glichst auf > public-variablen verzichten. stattdessen sollte man propertys > nutzen(die ja > auch weitaus anpassbarer sind(read-write, read, write, > friend), und man kann > zus�tzlich auf wert�nderungen reagieren..) > > > wolfgang > http://www.vbwelt.de/ > > > > hi, > > > > ich frag nochmal, vieleicht hab ich mich nicht klar > > ausgedr�ckt, hierf�r > > mu� es doch eine l�sung geben :-) > > > > gehen wir von 3 klassenmodulen aus. > > > > * klasse1 > > * klasse2 > > * klasse3 > > > > klasse1 wird con asp aus per server.createObject aufgerufen. > > > > innerhalb klasse1 gibt es einige public-variablen > > > > PUBLIC var1 AS INTEGER > > PUBLIC var2 AS INTEGER > > var1 = 12 > > var2 = 5012 > > > > klasse1 ruft eine Funktion in Klasse2 per: > > > > DIM klasse2 AS app.klasse2 > > SET klasse2 = NEW app.klasse2 > > x = klasse2.funktion > > > > auf. > > > > wie schaffe ich es nun in klasse2.funktion auf die > > variableninhalte von > > klasse1.var1 und klasse1.var2 zuzugreifen?? mir ist klar, > da� ich sie > > mit�bergeben k�nnte, aber wenn ich dies nicht will? > > > > noch lustiger ist es, wenn ich noch eine klasse3 auf klasse1 > > instanziere > > und dort variablen setze. wie schaffe ich es von klasse2 > aus auf diese > > inhalte zur�ckzugreifen. > > > > mein problem ist einfach, da� ein > > > > SET klasse2 = NEW app.klasse2 > > > > immer eine neue Instanz anlegt, aber nicht eine schon > existierende als > > eine Art zeiger �bernimmt... > > > > ciao & danke > > carsten wawer > > leiter programmierung | cto > > > > barracuda digitale agentur GmbH > > t +49(0)221 454 5405 f +49(0)221 454 5489 > > > > > > > > | [aspdecoffeehouse] als [EMAIL PROTECTED] subscribed > > | http://www.aspgerman.com/archiv/aspdecoffeehouse/ = Listenarchiv > > | Sie k�nnen sich unter folgender URL an- und abmelden: > > | > http://www.aspgerman.com/aspgerman/listen/anmelden/aspdecoffee house.asp | [aspdecoffeehouse] als [EMAIL PROTECTED] subscribed | http://www.aspgerman.com/archiv/aspdecoffeehouse/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdecoffeehouse.asp | [aspdecoffeehouse] als [email protected] subscribed | http://www.aspgerman.com/archiv/aspdecoffeehouse/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdecoffeehouse.asp
