The COM Course - Part 2
By Karl Moore
Going It Alone
Remember how last week we threw a class into a standard Visual Basic project?
Well, one of the main points in the elegant COM philosophy is that code can be reused.
In other words, if you create an Accounting class in Visual Basic, you shouldn't only be able to access that from your application ?but perhaps also from another VB program your colleague is working on. And maybe an Excel spreadsheet that needs such data. You might even have a C++ programmer that needs to grab certain information for his latest project.
So what do you do? At the moment, you've worked with classes residing inside a standard Visual Basic application. And even if you give them a copy of your final .EXE program, they still won't be able to access the classes or properties within it.
The solution is to throw all the classes into a program of their own. Then they're "COM-enabled".
<Karl: Corr, I just invented that buzzword! COM-enabled. Let me call my trademark people...>
In other words, say your class has an AnnualProfitsToDate property. When this property is retrieved, your class dips into the company database, performs half-a-dozen calculations, then returns a value in pounds. Or dollars. Or Yen. Or green bananas. Or whatever.
Now instead of physically giving the Excel user a chunk of code to access the database, simply give him your 'class program'. This program 'exposes' your class and the AnnualProfitsToDate property, allowing other users to plug into its functionality. And instead of telling the C++ programmer how to manually perform the calculation so he can access the statistic himself, you could also give him this program, saving you both a lot of work.
So let's review this... in addition to throwing classes into Visual Basic projects, you can throw them into programs of their own, called ActiveX components, which say to other programs "Hey, I can do this ?provide an AnnualProfitsToDate property, update the Customers database, etc!".
And all the functionality of your ActiveX program can then be accessed from within any ActiveX-aware programming language. In other words, the AnnualProfitsToDate property can be retrieved from within Excel, C++, Access ?and more!
So how do you create an ActiveX program to hold your classes?