Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Hiding a read only control from count
Message
From
15/05/1998 16:34:36
 
 
To
14/05/1998 20:29:52
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00098865
Message ID:
00099860
Views:
24
>>Thanks Paul -
>>
>>Can you give me an example of what you put in your setup and cleanup?
>
>Here's an actual working one, where IsValid() is called from Setup()...
>
>
>	*-- Returns value, and sets .DataValid to the same value, depending on state of all contained controls.
>	PROCEDURE isvalid
>		* Program....: QCNTUI.ISVALID
>		* Version....: 1.0
>		* Author.....: Paul Maskens
>		* Date.......: June 24, 1997
>		* Notice.....: Copyright (c) 1997 FoxWare Ltd, All Rights Reserved.
>		* Compiler...: Visual FoxPro 03.00.00.0711 for Windows
>		*
>		* Abstract...: Loop through controls[]
>		*              For every enabled EditBox and Textbox, call its Valid()
>		*              If any of them return .F., then this returns .F.
>		*              If all if them return .T., then this returns .T.
>		*              The return value is also copied to the .DataValid property
>		*
>		* Changes....:
>		*
>
>		*
>		* laCTabs[n,1]  object pointer form .controls[]
>		* laCTabs[n,2]  object .tabindex property value
>		* laCTabs[n,3]  object index in .controls[]
>		*
>		LOCAL ARRAY laCTabs[1,3]
>		LOCAL llValid, lnControl, luResult, loControl
>
>		WITH THIS
>		*
>		* Although there is no code in BasicEdits, this provides a hook
>		*  to add the feature later on.
>		* Simply add code to BasicEdits in any subclass that requires it.
>		*
>			THIS.BasicEdits()
>
>		* Assume it's going to work.
>			llValid = .T.
>
>		    .setall("NavDir","+")
>
>		* only if there are any controls
>		    IF .controlcount > 0
>		    * ensure first/last are dynamic - clear current properties
>		        IF .FirstControl != 0
>		            .controls[.FirstControl].FirstControl = .F.
>		            .FirstControl = 0
>		        ENDIF
>		        IF .LastControl != 0
>		            .controls[.LastControl].LastControl = .F.
>		            .LastControl = 0
>		        ENDIF
>		        IF .InvalidControl != 0
>		            .InvalidControl = 0
>		        ENDIF
>			* size array to hold control references
>			    DIMENSION laCTabs[.controlcount,3]
>			* populate array from controls[]
>			    FOR lnControl = 1 TO .controlcount
>			        loControl = .controls[lnControl]
>			        laCTabs[lnControl,1] = loControl
>			        IF UPPER(loControl.baseclass) $ "TEXTBOX|EDITBOX"
>			        * Store text/edit controls in array
>		    	        laCTabs[lnControl,2] = loControl.tabindex
>			        ELSE
>			        * if it's not a text/edit box - ignore it
>		    	        laCTabs[lnControl,2] = 9999
>		            ENDIF
>			        laCTabs[lnControl,3] = lnControl
>			    ENDFOR
>
>			* sort array
>			    =ASORT(laCTabs,2)
>		    ENDIF
>
>		*
>		* VFP 3 will not execute this loop if there are no controls
>		*
>		    FOR lnControl = 1 TO .controlcount
>		        loControl = laCTabs[lnControl,1]
>		        IF loControl.enabled ;
>		        AND UPPER(loControl.baseclass) $ "TEXTBOX|EDITBOX" ;
>		        AND NOT loControl.readonly
>			        IF .InvalidControl = 0
>			        	luResult = loControl.valid()
>				        IF TYPE("luResult") == "N"
>				            .InvalidControl = laCTabs[lnControl,3]
>				            llValid = .F.
>			            ENDIF
>			        ENDIF
>			    * handle last/first
>			        IF .FirstControl = 0
>			        * if it's first
>			        	.FirstControl = laCTabs[lnControl,3]
>			        	loControl.FirstControl = .T.
>			        ENDIF
>		        * make it the last
>		        	.LastControl = laCTabs[lnControl,3]
>		        ENDIF
>		    ENDFOR
>		* set last control's property
>		    IF .LastControl != 0
>		    	.controls[.LastControl].LastControl = .T.
>		    ENDIF
>
>		    .setall("NavDir","")
>
>		    .DataValid = llValid
>
>		ENDWITH
>
>		IF TYPE("THIS.parent") == "O"
>			THISFORM.cmdSave.refresh()
>			THISFORM.cmdNext.refresh()
>		ENDIF
>
>		RETURN llValid
>	ENDPROC
>
>
>
>The corresponding DESTROY sets all laCTabs[n,1] to .NULL.
>
>
>
>I'll have more examples with me at DevCon.

Sadly, I won't be there, but thanks for the code sample.
Sylvia
Previous
Reply
Map
View

Click here to load this message in the networking platform