Bob Bedell
bobbedell15 at msn.com
Fri Jun 6 10:17:59 CDT 2003
>I guess that since Microsoft considers VBA developers to be children, >giving us such powers is >considered dangerous - This really is kinda' bizarre when you think about it. All Microsoft would need to do is add one more item to the Instancing Enum: 3- PublicCreatable. Then - 1 - Private: Attribute VB_Exposed = False, Attribute VB_Creatable = False 2 - PublicNotCreatable: Attribute VB_Exposed = True, Attribute VB_Creatable = False 3 - PublicCreateable: Attribute VB_Exposed = True, Attribute VB_Creatable = True What we need is 3, and that's the one setting they don't provide. I wonder what the point of 2 is anyway: why expose a class and then prevent anyone from instantiating objects from it? Go figure. Access 11? >From: "Bob Bedell" <bobbedell15 at msn.com> >Reply-To: accessd at databaseadvisors.com >To: accessd at databaseadvisors.com >Subject: RE: [AccessD] Where does WithEvents go? >Date: Fri, 06 Jun 2003 14:01:56 +0000 > >Outstanding! Phenonmenal! This is great! Think of the endless >possibilities! > >Oh, it worked... > >That's great John. clsInventory is now "creatably" exposed to my event sink >app, with custom events firing and all. Thanks for adding several >productive years to my life. > >Bob > > >>From: "John Colby" <jcolby at colbyconsulting.com> >>Reply-To: accessd at databaseadvisors.com >>To: <accessd at databaseadvisors.com> >>Subject: RE: [AccessD] Where does WithEvents go? >>Date: Fri, 6 Jun 2003 08:56:25 -0400 >> >>Bob, >> >>Classes built directly in a library database are not visible outside of >>the >>library in VBA. No Se Por Que. I guess that since Microsoft considers >>VBA >>developers to be children, giving us such powers is considered dangerous - >>kinda like playing with knives or matches I suppose. At any rate, it >>absolutely is possible to get your classes exposed such that they can be >>seen and used outside of the library. >> >>The easiest way to do this is to: >> >>1) Export the class to a text file. >>2) Open the class module with a text editor >>3) Look for two attributes at the top of the module. Change Creatable and >>Exposed to True. >>4) Save the class and close the text file. >>5) In your library, click Insert / Class module >>6) In the editor window that opens, click Insert / File. Navigate to and >>select the txt file that you saved the class in. This will cause Access >>to >>pull in the contents of whatever file you selected and insert it in your >>class. In this case it is the contents of the modified class. >>7) At the top of the class you will see something like: >> >>Option Compare Database >>Option Explicit >> >>VERSION 1.0 CLASS >>BEGIN >> MultiUse = -1 'True >>End >>Option Compare Database >>Option Explicit >> >>Select and delete everything from the first Option down through the End. >> >>8) Compile and save the class >> >>The class will now be visible from any database that references your >>library. >>John W. Colby >>www.colbyconsulting.com >> >> -----Original Message----- >> From: accessd-bounces at databaseadvisors.com >>[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Bob Bedell >> Sent: Friday, June 06, 2003 2:22 AM >> To: accessD at databaseadvisors.com >> Subject: [AccessD] Where does WithEvents go? >> >> >> I hope I can make this intelligible. Info on this issue seems a bit >>sparse. I have a custom class and a form that work fine together. The >>class >>declares a custom event using Public Event syntax in the general >>declaration >>and Raise syntax in a method. The calling class (the form) declares a >>private instance of the class using WithEvents and instantiates it. No >>problems. >> >> >> >> Now I'm trying to import the class into a library (mda.) and set a >>reference to it in the database that contains the calling form. It's my >>understanding that my calling application can't instantiate the class >>directly, and needs to use a wrapper function. So I added a standard >>module >>to the calling application that calls a function in the library database >>which returns a copy of the object. The calling database then has a >>public, >>shared copy of the object to work with. The standard module in the calling >>database is: >> >> >> >> Public g_oInventory As clsInventory >> >> >> >> Public Sub Startup() >> >> ' Get handles to shared objects >> >> Set g_objInventory = GetclsInventory >> >> >> >> DoCmd.OpenForm "frmInventory" >> >> End Sub >> >> >> >> The standard module in the library database (where the class is >>located) >>is: >> >> >> >> Public Function GetclsInventory() >> >> Dim objInventory As clsInventory >> >> Set GetclsInventory = New clsInventory >> >> End Function >> >> >> >> Here's my problem. Using the library scenario, I can't find any place >>to >>put my WithEvents statement. The old declaration (before seperating the >>class and the form) was in the forms general declaration: >> >> >> >> Private WithEvents m_objProduct As clsInventory >> >> >> >> But now (library scenario) the declaration needs to be global, needs >>to >>include WithEvents, and needs to be in a class or form module (WithEvents >>won't work in a standard module). >> >> >> >> Should I do a VB ActiveX component instead? I'm kinda' at a loss here. >>Real limited experience with classes/libraries stuff. Thanks to anyone who >>can make heads or tails of that. >> >> >> >> Bob >> >> >>_______________________________________________ >>AccessD mailing list >>AccessD at databaseadvisors.com >>http://databaseadvisors.com/mailman/listinfo/accessd >>Website: http://www.databaseadvisors.com > >_________________________________________________________________ >Add photos to your messages with MSN 8. Get 2 months FREE*. >http://join.msn.com/?page=features/featuredemail > >_______________________________________________ >AccessD mailing list >AccessD at databaseadvisors.com >http://databaseadvisors.com/mailman/listinfo/accessd >Website: http://www.databaseadvisors.com _________________________________________________________________ The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail