Page 1 of 1

Inherit a class from another to add new methods for FW WIKI

Posted: Sat Oct 27, 2007 12:11 pm
by Otto
(div. posts from the NG)
I am trying to inherit a class from another because I need to add a method.

I am getting an error that I don´t have if I use the original class.
The object seems not to be created at all...
The code is something like this:

Class CL2 from CL1
METHOD PrintCl()
ENDCLASS

METHOD PrintCl() class CL2
alert("CL2")
return NIL

Questions:
Al the CL1 methods are avaiable in CL2 ?
Do I need a constructor/destructor method or the CL1 one is used ?
--------------------------------------------------------------------------------

Don't forget to add:

CLASSDATA lRegistered AS LOGICAL
--------------------------------------------------------------------------------

Why ?
What is "lRegistered" ?


-It is a flag that allows a one-time registration of a control class. It is
needed to get Windows aware of the new control.

-Ok, but could you tell me when I need it and when I do not ?

-If you are creating a temporary stand alone class from scratch and you will
not inherit from it then it is not required

-If you plan on inheriting from your class or your class is inheriting from
another, then you will need to add it.

-And apparently you need it only sometimes when it is a control. For instance,
the DBCombo class inherits from the TCombobox class but doesn't have
lRegistered (and it works fine). Perhaps lRegistered should be added, but one
wonders why it works without it.

-Because you are inheriting from a standard Windows control and not creating a
new custom control.

-Thanks for clarifying that.


Then add your new class to a .ch file.
Example:
xTWbrowse inherits from tWbrose

#xcommand @ <nRow>, <nCol> XLISTBOX [ <oBrw> ] FIELDS [<Flds,...>] ;
[ ALIAS <cAlias> ] ;
[ <sizes:FIELDSIZES, SIZES, COLSIZES> <aColSizes,...> ] ;
[ <head:HEAD,HEADER,HEADERS,TITLE> <aHeaders,...> ] ;
[ SIZE <nWidth>, <nHeigth> ] ;
[ <dlg:OF,DIALOG> <oDlg> ] ;
[ SELECT <cField> FOR <uValue1> [ TO <uValue2> ] ] ;
[ ON CHANGE <uChange> ] ;
[ ON [ LEFT ] CLICK <uLClick> ] ;
[ ON [ LEFT ] DBLCLICK <uLDblClick> ] ;
[ ON RIGHT CLICK <uRClick> ] ;
[ FONT <oFont> ] ;
[ CURSOR <oCursor> ] ;
[ <color: COLOR, COLORS> <nClrFore> [,<nClrBack>] ] ;
[ MESSAGE <cMsg> ] ;
[ <update: UPDATE> ] ;
[ <pixel: PIXEL> ] ;
[ WHEN <uWhen> ] ;
[ <design: DESIGN> ] ;
[ VALID <uValid> ] ;
[ ACTION <uAction,...> ] ;
=> ;
[ <oBrw> := ] xTWBrowse():New( <nRow>, <nCol>, <nWidth>, <nHeigth>,;
[\{|| \{<Flds> \} \}], ;
[\{<aHeaders>\}], [\{<aColSizes>\}], ;
<oDlg>, <(cField)>, <uValue1>, <uValue2>,;
[<{uChange}>],;
[\{|nRow,nCol,nFlags|<uLDblClick>\}],;
[\{|nRow,nCol,nFlags|<uRClick>\}],;
<oFont>, <oCursor>, <nClrFore>, <nClrBack>, <cMsg>,;
<.update.>, <cAlias>, <.pixel.>, <{uWhen}>,;
<.design.>, <{uValid}>, <{uLClick}>,;
[\{<{uAction}>\}] )

Posted: Sat Oct 27, 2007 8:44 pm
by James Bott
Otto,

>I am getting an error that I don´t have if I use the original class.
>The object seems not to be created at all...

The code looks OK. What is the error you are getting? Are you inheriting from an existing FWH class or one that you wrote? Have you read my OOP articles on my website?

I advise not naming your method PrintCl but rather just Print. Remember that one of the great features of OOP is that you can use the same method name in more than one class. This allows you to call the same method name without even knowing which object you are dealing with. Later you will see how valuable this feature is.

>All the CL1 methods are avaiable in CL2 ?

Yes.

>Do I need a constructor/destructor method or the CL1 one is used ?

The CL1 is used.

James

Posted: Sat Oct 27, 2007 8:53 pm
by Otto
Sorry James,
I expressed my self wrong.
All is working. I though this could be transferred into the new Fivewin WIKI.
Regards,
Otto
Hua,

We are organizing a FiveTech wiki at:

www.fivetechsoft.com/wiki

Its empty by now. If someone wants to cooperate on its development, please request a login and password from us.
_________________
regards, saludos

Antonio Linares
www.fivetechsoft.com