Rapid-Q Documentation by William Yu (c)1999 Appendix C: Methods


Introduction to Methods

There's many definitions of a "method," for lack of a better word, that's what I'm using to describe the methods CONSTRUCTOR, CREATE and WITH. Alone they serve no purpose, but you'll learn what each does, and how to use them here.

CREATE .. END CREATE
Using CREATE is exactly like using DIM
    CREATE Form AS QForm
    END CREATE

    '' or

    DIM Form AS QForm
However, the CREATE method offers more. It can save you typing, and also make your code look cleaner by embedding CREATEs (refer to Chapter 5). Any code you type inbetween the CREATE .. END CREATE method is automatically bound to that object. Since there's no point in regurgitating what was already mentioned, please refer to Chapter 5 for some examples.

WITH .. END WITH
The WITH construct is to provide the developer an easier way to reference properties, methods, and events of certain objects. Basically what it does is save you a lot of typing:
    Form.Caption = "Hello"
    Form.ShowModal

    '' Using WITH

    WITH Form
       .Caption = "Hello"
       .ShowModal
    END WITH
You can also embed WITH .. END WITH statements:
    Something.Another.Caption = "Hello"

    '' Using WITH

    WITH Something
       WITH Another
         .Caption = "Hello"
       END WITH
    END WITH
As you can see, the embedded WITH statement inherits the previous declaration. The period at the front tells the compiler to bind that variable to the WITH declaration. Anything which doesn't start with a period won't be bound, don't worry, decimal numbers won't be bound.

CONSTRUCTOR .. END CONSTRUCTOR
This method is only used inside a TYPE declaration when you're defining your own objects. It will give default values to your properties whenever your component is created (DIMmed).
    TYPE NewObject EXTENDS QObject
      Left AS INTEGER

      CONSTRUCTOR
        Left = 50
      END CONSTRUCTOR
    END TYPE
There's nothing to it, it's much like the CREATE method, except our object in this case is NewObject.


<- Loops Contents Procedures ->