Shamil Salakhetdinov
shamil at smsconsulting.spb.ru
Sat Jun 7 06:04:52 CDT 2003
> Please have a look here/dowload: > http://smsconsulting.spb.ru/samples/exposed.jpg (137 244 bytes) I uploaded another picture with the same URL: http://smsconsulting.spb.ru/samples/exposed.jpg and it has more details on subj and it's now 202 984 bytes in size. Shamil ----- Original Message ----- From: "Shamil Salakhetdinov" <shamil at smsconsulting.spb.ru> To: "AccessD" <AccessD at databaseadvisors.com> Sent: Saturday, June 07, 2003 2:06 PM Subject: Re: [AccessD] Where does WithEvents go? > <<< > > None of the properties that are exposed when > > the class is exported to a text > > file is visible from within Access. > >>> > John, > > Please have a look here/dowload: > http://smsconsulting.spb.ru/samples/exposed.jpg (137 244 bytes) > I follow the principle that "one good picture is better that thousand > words" - and this good IMO picture referenced above shows that VB_Exposed > property of MS Access 2000/XP/... VBA modules can be set from within MS > Access... > > > why you wouldn't simply set both of > > the properties I discussed to true > This is not standard functionality and I can't recommend that because MS can > well close this "backdoor" in the future - then all your coding will have to > be changed. > VB_Exposed is standard for MS Access 2000 and up - so it is safe to use with > wrapper class factory functions, subs, custom classes... > > In general I don't like to use New keyword with custom classes here and > there because as I said this makes the coding unorganized - when you've a > special class factory code then you can control custom classes' instances > creation in the sense that you can concentrate all this code in one-two > modules etc. > > There is also a technical reason of avoiding to use > > Dim obj as New MyClass > > This code above AFAIK uses 'just in time custom class instance creation > (JITCCIC)' technique - and therefore it may generate a lot of additional > support code on compilation... > > Dim obj as MyClass > set obj=new MyClass > > shouldn't use JITCCIC but to avoid temptation of using shorter code > > Dim obj as New MyClass > > I don't use it too :) - speaking seriously: > > Dim obj as MyClass > set obj = MyClassFactoryCreateObject("MyClass") > > IMO gives a developer much more freedom for future extensions and safety... > E.g. using this approach you can well make your class MyClass an Interface > Definition Class in the future WITHOUT breaking any of your functionality - > etc... > > Well, all that are my preferences and of course they can be argued... - this > message isn't an invitation to such a discussion - I made my choice several > years ago :) > > > What does the wrapper buy you? It seems like extra work, an extra layer > > that things have to go through, as well as an extra layer that I have to > > write (the helper function). We don't do that with the libs that MS > > publishes do we? > Yes, some more work but without breaking "MS fences" - they didn't give us > an opportunity to set VB_Creatable = True from within VBA editor - in the > future they may well introduce this functionality as standard or drop it > completely by closing "backdoor" of exporting/manually setting > VB_Creatable=True/importing back custom class module. And I don't think > they can drop standard (MS Access 2000, 2002,...) functionality of > VB_Exposed=true - then they will break versions compatibility... > Yes, MS allows to use New with their libraries but they use C++ or VB to > write these libraries , where this is a STANDARD (COM-)functionality > when these libraries expose their CREATABLE public objects... > > > > And yes, the ClassExposer add-in would be nice. > I will try to make conversion in the near future - it wasn't straightforward > "convert to Acc2000" when I tried to make it first time in the past.. > And then I also found that MS Acces 2000 has setting VB_Exposed as > standard functionality... > > Shamil > > ----- Original Message ----- > From: "John Colby" <jcolby at colbyconsulting.com> > To: <accessd at databaseadvisors.com> > Sent: Saturday, June 07, 2003 3:14 AM > Subject: RE: [AccessD] Where does WithEvents go? > > > > Shamil, > > > > None of the properties that are exposed when the class is exported to a > text > > file is visible from within Access. What I don't quite understand is why > > you wouldn't simply set both of the properties I discussed to true and > > directly see the classes from any database referencing the library. Doing > > this allows seeing all of the class properties, functions etc, as well as > > directly dimensioning a class variable. > > > > What does the wrapper buy you? It seems like extra work, an extra layer > > that things have to go through, as well as an extra layer that I have to > > write (the helper function). We don't do that with the libs that MS > > publishes do we? > > > > And yes, the ClassExposer add-in would be nice. It appears that the > object > > on your site is compiled - I can't open or convert it in A2K. I could > > certainly write my own if I need to. > > > > John W. Colby > > www.colbyconsulting.com > > > > -----Original Message----- > > From: accessd-bounces at databaseadvisors.com > > [mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Shamil > > Salakhetdinov > > Sent: Friday, June 06, 2003 6:50 PM > > To: AccessD > > Subject: Re: [AccessD] Where does WithEvents go? > > > > > > <<< > > > If MyClass is in a lib, then this dim statement doesn't work since > MyClass > > > isn't exposed. > > >>> > > John, > > > > But you can dimension the class specifically as that class type if this > > custom class's Instancing property is set to PublicNotCreatable. Then you > > create instance of this class using wrapper/helper function. And you can > > sink an event of this class declared as public. > > > > Instancng is a standard property for custom class modules in MS Access > 2000 > > and XP. > > > > Are we talking about different things? > > > > Shamil > > > > P.S. Unfortunately I don't see Instancing property for Forms' and Reports' > > modules (am I missing it?) - so maybe ClassExposer Add-In for MS > > Access2000/XP to expose forms' and reports' modules isn't a totally crazy > > idea.... > > > > ----- Original Message ----- > > From: "John Colby" <jcolby at colbyconsulting.com> > > To: <accessd at databaseadvisors.com> > > Sent: Saturday, June 07, 2003 12:10 AM > > Subject: RE: [AccessD] Where does WithEvents go? > > > > > > > Shamil, > > > > > > I don't understand how to sink an sourced from a class in a library > > without > > > being able to dimension the class specifically as that class type > > > > > > dim withevents SomeCls as MyClass > > > > > > If MyClass is in a lib, then this dim statement doesn't work since > MyClass > > > isn't exposed. > > > > > > John W. Colby > > > www.colbyconsulting.com > > > > > > _______________________________________________ > > AccessD mailing list > > AccessD at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/accessd > > Website: http://www.databaseadvisors.com > > > > _______________________________________________ > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com