Getting parameters from inherited classes
Visual Foxpro allows you to create a class that inherits behavior from another class. This includes properties, events and methods. The base class could have a method like this:
PROCEDURE FooBar
LPARAMETERS strParm as string, nParm2 as Integer
When designing the subclass in the class designer, VFP will automatically show the inherited parameters. VFP6 obtained this information from the compiled base class info. However, the compiled code has no information on parameter cAse, which users understandably wanted to preserve. So it was changed for VFP7 to obtain the parameter info from the base class source code, which has the cAse information.
TrevorH has this repro code. Run it and you won’t see the base class parameters. Comment out the “REPLACE METHODS” line and you will.
LOCAL lcThisDir AS STRING
lcThisDir = ADDBS(JUSTPATH(SYS(16)))
CD (lcThisDir)
CLEAR ALL
CLEAR
IF VERSION(5) >= 800
TRY
CLEAR CLASSLIB ParamTstLib
CLEAR CLASSLIB ParamTstLib2
CATCH TO foo
ENDTRY
ENDIF
ERASE ParamTst*.*
LOCAL laClass[1]
CREATE CLASS FormBase OF ParamTstLib AS FORM NOWAIT
_CLIPTEXT = 'LaunchForm'
KEYBOARD '{ALT+C}M'
KEYBOARD '{CTRL+V}'
KEYBOARD '{ALT+A}'
KEYBOARD '{ALT+C}'
DOEVENTS
ASELOBJ( laClass, 1 )
laClass[1].WRITEMETHOD( 'LaunchForm', 'LParameters tcClassID' )
KEYBOARD '{CTRL+W}'
DOEVENTS
CLOSE ALL
USE ParamTstLib.VCX
GO 2
REPLACE METHODS WITH ''
CLOSE DATA ALL
COMPILE CLASSLIB ParamTstLib.VCX
CREATE CLASS FormChild OF ParamTstLib2 AS FormBase FROM ParamTstLib NOWAIT
KEYBOARD '{CTRL+W}'
DOEVENTS
MODIFY CLASS FormChild OF ParamTstLib2 METHOD LaunchForm NOWAIT