Have you ever gotten the error message: "Error: Object Not Found"? If you have, it's usually because you misspelled a reference to a form or control, or refered to a recordset which wasn't opened yet. If you're like most VB programmers, you simply correct the mistake and move on. But did you ever stop to think about what the message means? Whether it's a form, a control, or a database- VB refers to such structure as "objects. And if you've ever monkeyed around directly with the screen, the printer, or OLE; you know that the VB documentation refers to these items as "objects" as well. But what is an object? And why aren't the variables you declare in your programs refered to as objects? Well basically, and object is anything which has it's own properties and methods - like a form with propeties of "size" and "windowstate", and methods of "load" or "keypress". VBX's and OCX's have properties and methods too- properties like "caption", and methods such as "click". So if you're working with objects all the time in VB, why isn't VB an object oriented language? Well, it's because what you are doing when you create a new form, draw a control, or open a database, is you're creating an instance of an object which is already defined by someone else. You can modifiy the object by manipulating it's properites, and by putting code into it's methods; but you couldn't add properties and methods to it. At least not until VB 4.0...
In VB 4.0, Microsoft introduced class modules. Class modules gave VB programmers the ability to define new objects. They used the word "class" because, in other programming languages, that is the word used to describe the definition of an object. An easy way to think of it is this: a class is like a cookie cutter, and an object is like the cookie. So, the buttons on the custom control toolbox in VB are like your cookie cutters, and when you click on one to draw a control on a form it's like making a cookie. You can decorate it (modify it's properties and methods) anyway you want to, but you can't change what the cookie cutter it came from did. The scroll bar control will always make the same type of scroll bar, the text box control will always make the same type of text box. If you wanted a text box that had a property called "3D Font", or a data-aware calender, you had to buy a VBX or OCX from someone else. With class modules, VB programmers were given some of these capabilities, but they still couldn't go so far as to create the own OCX's (this is supposed to change with VB5).
So there is a barrier to the average VB programmer who wants to take advantage of these new capabilities. VB was written to make programming fast and easy, and it shielded the programmer from the whole concept of OOP. But in order to get more out of the evolution of VB than enjoying the line continuation character, the programmer has to become comfortable with the notion or creating and using their own objects. The good news is, it isn't necessary to learn C++ in order to do it. Microgold Software produces a CASE tool called With Class which can help you manipulate objects almost as easily the custom control toolbox. Instead of struggling to master class module syntax while you're still getting familiar with OOP, With Class can create an easy-to-understand graphical represenation of the structures you are creating. And when you've mapped out the structure you want, it can generate the class module code for you.