Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Hiding a read only control from count
Message
From
14/05/1998 20:29:52
 
 
To
14/05/1998 14:35:48
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00098865
Message ID:
00099633
Views:
30
>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.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform