Subclassing Base classes in VFP9

Author: Pablo Rivera Sr

Posted: 2005-04-05 at 01:30:00

This is code written by Fred Taylor. I wanted to expand it's availability to

more "newbies" and to see if you are interested in examining it to make sure

it's OK for redistribution. Is FT around? :). As a professional newbie

myself, I know this is very helpful to us. ;)

*

** Begin Code

* MakeBase.prg

* By Fred Taylor

* Updated for VFP9 April 2005 with help from Profox List members

*

* Fred Taylor 2/9/99 - just so you know where it came from!

* Define base classes into xxxBase.VCX

*

LOCAL cRoot, cBase

cRoot = 'ft' && Change these characters to what ever you want ie:

'pr'...

&& If you don't change them you will get classes named:

&& ftTextBox, etc in a ftBase9.VCX

cBase = cRoot + 'Base9'

*

* aBaseClass[x,2]

* [x,1] = VFP Base Class name

* [x,2] = .T. - Create subclass

*

LOCAL aBaseClass[41,2] && When VFP defines new baseclasses, add them here

aBaseClass[1,1] = 'CheckBox'

aBaseClass[1,2] = .T.

aBaseClass[2,1] = 'Collection'

aBaseClass[2,2] = .T.

aBaseClass[3,1] = 'ComboBox'

aBaseClass[3,2] = .T.

aBaseClass[4,1] = 'CommandButton'

aBaseClass[4,2] = .T.

aBaseClass[5,1] = 'CommandGroup'

aBaseClass[5,2] = .T.

aBaseClass[6,1] = 'Container'

aBaseClass[6,2] = .T.

aBaseClass[7,1] = 'Control'

aBaseClass[7,2] = .T.

aBaseClass[8,1] = 'Cursor'

aBaseClass[8,2] = .T.

aBaseClass[9,1] = 'CursorAdapter'

aBaseClass[9,2] = .T.

aBaseClass[10,1] = 'Custom'

aBaseClass[10,2] = .T.

aBaseClass[11,1] = 'DataEnvironment'

aBaseClass[11,2] = .T.

aBaseClass[12,1] = 'EditBox'

aBaseClass[12,2] = .T.

aBaseClass[13,1] = 'Exception'

aBaseClass[13,2] = .T.

aBaseClass[14,1] = 'Form'

aBaseClass[14,2] = .T.

aBaseClass[15,1] = 'FormSet'

aBaseClass[15,2] = .T.

aBaseClass[16,1] = 'Grid'

aBaseClass[16,2] = .T.

aBaseClass[17,1] = 'HyperLink'

aBaseClass[17,2] = .T.

aBaseClass[18,1] = 'Image'

aBaseClass[18,2] = .T.

aBaseClass[19,1] = 'Label'

aBaseClass[19,2] = .T.

aBaseClass[20,1] = 'Line'

aBaseClass[20,2] = .T.

aBaseClass[21,1] = 'ListBox'

aBaseClass[21,2] = .T.

aBaseClass[22,1] = 'OleContainer' && Something wrong?

aBaseClass[22,2] = .F.

aBaseClass[23,1] = 'OptionButton'

aBaseClass[23,2] = .T.

aBaseClass[24,1] = 'OptionGroup'

aBaseClass[24,2] = .T.

aBaseClass[25,1] = 'OleBoundControl' && OLE controls need to be manually

done

aBaseClass[25,2] = .F.

aBaseClass[26,1] = 'OleControl' && OLE controls need to be manually done

aBaseClass[26,2] = .F.

aBaseClass[27,1] = 'Page'

aBaseClass[27,2] = .T.

aBaseClass[28,1] = 'PageFrame'

aBaseClass[28,2] = .T.

aBaseClass[29,1] = 'ProjectHook'

aBaseClass[29,2] = .T.

aBaseClass[30,1] = 'Relation'

aBaseClass[30,2] = .T.

aBaseClass[31,1] = 'ReportListener'

aBaseClass[31,2] = .T.

aBaseClass[32,1] = 'Separator'

aBaseClass[32,2] = .T.

aBaseClass[33,1] = 'Session'

aBaseClass[33,2] = .T.

aBaseClass[34,1] = 'Shape'

aBaseClass[34,2] = .T.

aBaseClass[35,1] = 'Spinner'

aBaseClass[35,2] = .T.

aBaseClass[36,1] = 'TextBox'

aBaseClass[36,2] = .T.

aBaseClass[37,1] = 'Timer'

aBaseClass[37,2] = .T.

aBaseClass[38,1] = 'Toolbar'

aBaseClass[38,2] = .T.

aBaseClass[39,1] = 'XMLAdapter'

aBaseClass[39,2] = .T.

aBaseClass[40,1] = 'XMLField'

aBaseClass[40,2] = .T.

aBaseClass[41,1] = 'XMLTable'

aBaseClass[41,2] = .T.

*

* Now lets create the empty subclasses

*

* Delete any existing table

*

ERASE (cBase+'.VC*')

*

* Now add the VFP base classes

*

LOCAL xx

FOR xx=1 TO ALEN(aBaseClass,1)

IF aBaseClass[xx,2]

od = CREATEOBJECT(aBaseClass[xx,1])

od.SaveAsClass(cBase,cRoot+aBaseClass[xx,1])

ENDIF

ENDFOR

od = .NULL.

** End Code

Best regards.

PabloSr

Still Learning.

That which I value!

==============

©2005 Pablo Rivera Sr