John Colby
jcolby at colbyconsulting.com
Fri Jun 6 07:56:25 CDT 2003
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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://databaseadvisors.com/pipermail/accessd/attachments/20030606/d4a743c0/attachment-0001.html>