Mini Kabibi Habibi

Current Path : C:/Users/ITO/Desktop/VF9/program files/microsoft visual foxpro 9/wizards/
Upload File :
Current File : C:/Users/ITO/Desktop/VF9/program files/microsoft visual foxpro 9/wizards/wizstyle.vct


�@VERSION =  0.029gridgridgrid1pRecordSource = "customer"
FontName = "MS Sans Serif"
FontSize = 8
Height = 152
Width = 397
Name = "grid1"
Class1Pixels)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
txtbtnsPixelsstylebmp\textbttn.bmpstylebmp\textbttn.bmpClass11	containertxtbtns�Top = 0
Left = 378
Height = 24
Width = 53
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Edit"
Enabled = .T.
StatusBarText = "Edit existing record / Revert edits"
TabIndex = 8
ToolTipText = ""
Name = "cmdEdit"
txtbtns.cmdEdit
commandbutton
commandbuttontxtbtns.	cmdDeleteform�ScaleMode = 3
Height = 293
Width = 401
DoCreate = .T.
AutoCenter = .T.
BackColor = 192,192,192
Caption = "Add Record"
WindowType = 1
Name = "gridaddform"
ckeyvalue
��� ��<�%�7	�U�9%�C�"Do you want to delete this record?�$�x������%�C�������
%�C+
��g�	H�����%�C+�C
	����
H��������T���a����C�������C�����T���-���%��������t,������U	THISPARENT
UPDATEROWSTHISFORM
LOCKSCREEN
BUTTONREFRESH
NAVREFRESH
SHOWWINDOWNAME4�����"��C�
��
��
������UNERRORCMETHODNLINETHISPARENTERRORClick,��Error���1�AA��A1�AA��AB�A3�!1��)��Top = 0
Left = 432
Height = 24
Width = 53
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Delete"
Enabled = .T.
StatusBarText = "Delete existing record"
TabIndex = 9
ToolTipText = ""
Name = "cmdDelete"

commandbutton
commandbuttontxtbtns.baseformwizstyle.vcxformnobtnsbScaleMode = 3
Top = 6
Left = 6
DoCreate = .T.
wizbuttons = 0
wizbtnpos = 0
Name = "nobtns"
Class4PixelsshapeshapeShape1nobtns>Height = 2
Left = 1
Top = 48
Width = 584
Name = "Shape1"
shapeshapeShape2nobtns?Height = 2
Left = 3
Top = 264
Width = 584
Name = "Shape2"
labellabelLabel1nobtns�FontSize = 14
BackStyle = 0
Caption = "Label1"
Height = 22
Left = 27
Top = 12
Width = 62
AutoSize = .T.
Name = "Label1"
�� ����%�6�U����������%��������%��������F����	��%�C�	Buffering���w�
��Ca���%�C���
�
����F����
��%�C�	Buffering�����
��Ca�����[�
�����T�
��C���y�������(��
���W�*%�C�	BufferingC�
������S���CaC�
���������F����	��%�CN���
����#)����#��������/�F%�C�
SourceType��C�offline�
	�C�SendUpdates�
	����T��a���q%�C���
�
�C�
SourceType���
�	�C�offline���
�
	�C�SendUpdates���
�
	��~�T��a���2%��
���
�	�C���
���
�	���O��C�CYou cannot edit because the view(s) selected does not send updates.�x��B��T���	�C��T����CO���T�������
��T����-��T�
��a����C�������C�����T�
��-��ULNOSENDPARENTUPDATESLNOSENDCHILDUPDATESATABLESUSEDNTABLESUSEDITHISPARENTEDITMODE
USEDATAENVOLDALIAS	GRIDALIASOLDRECADDMODETHISFORM
LOCKSCREEN
BUTTONREFRESH
NAVREFRESH4�����"��C�
��
��
������UNERRORCMETHODNLINETHISPARENTERRORClick,��Error���1��32��Aa��AA��A��qAAAaQ��A�d�A�A#�AA"!A���2�!1Y3u�F)�U�PROCEDURE Click
#DEFINE C_NOUPDATE_LOC	"You cannot edit because the view(s) selected does not send updates."

LOCAL lNoSendParentUpdates,lNoSendChildUpdates
LOCAL aTablesUsed,nTablesUsed,i

** Reverting record
IF THIS.Parent.EditMode
	
	IF THIS.Parent.UseDataEnv
		SELECT (THIS.Parent.OldAlias)
		IF CURSORGETPROP("Buffering")>1
			=TableRevert(.T.)
		ENDIF
		IF !EMPTY(THIS.Parent.GridAlias)
			SELECT (THIS.Parent.GridAlias)
			IF CURSORGETPROP("Buffering")>1
				=TableRevert(.T.)
			ENDIF
		ENDIF			
	ELSE
		DIMENSION aTablesUsed[1]
		m.nTablesUsed = AUSED(aTablesUsed)
		FOR i = 1 TO m.nTablesUsed
			IF CURSORGETPROP("Buffering",aTablesUsed[m.i,1])>1
				=TableRevert(.T.,aTablesUsed[m.i,1])
			ENDIF
		ENDFOR
	ENDIF
	
	* Go back to original place
	SELECT (THIS.Parent.OldAlias)
	IF RECCOUNT() < THIS.Parent.OldRec	&&added record at EOF()
		GO TOP
	ELSE
		GO THIS.Parent.OldRec
	ENDIF
ELSE

	* Check to see if view allows updates
	IF CURSORGETPROP("SourceType")#3 AND !CURSORGETPROP("offline") AND;
		!CURSORGETPROP("SendUpdates")
		lNoSendParentUpdates = .T.
	ENDIF
	IF !EMPTY(THIS.Parent.GridAlias) AND ;
	  CURSORGETPROP("SourceType",THIS.Parent.GridAlias)#3 AND ;
	  !CURSORGETPROP("offline",THIS.Parent.GridAlias) AND ;
	  !CURSORGETPROP("SendUpdates",THIS.Parent.GridAlias)
		lNoSendChildUpdates= .T.
	ENDIF
	
	IF (m.lNoSendChildUpdates AND m.lNoSendParentUpdates) OR;
		(EMPTY(THIS.Parent.GridAlias) AND m.lNoSendParentUpdates)
		=MESSAGEBOX(C_NOUPDATE_LOC)
		RETURN
	ENDIF
	
	THIS.Parent.OldAlias = ALIAS()	&&save alias in case reverting
	THIS.Parent.OldRec = RECNO()	&&save record in case reverting
ENDIF

** Editing record
THIS.Parent.EditMode = !THIS.Parent.EditMode
THIS.Parent.AddMode = .F.
THISFORM.LockScreen = .T.
THIS.Parent.ButtonRefresh()
THIS.Parent.NavRefresh()
THISFORM.LockScreen = .F.
ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine
this.parent.error(m.nError, m.cMethod, m.nLine)
ENDPROC
�Top = 0
Left = 324
Height = 24
Width = 53
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Add"
Enabled = .T.
StatusBarText = "Add new record / Save edits"
TabIndex = 7
ToolTipText = ""
Name = "cmdAdd"

shadowbase .T.
BackColor = 0,128,128
wizfield = fancyfPixelsormClasss3orm#PROCEDURE Click
#DEFINE MSGBOX_YES		6
#DEFINE C_MSGBOX1		36
#DEFINE C_DELETE_LOC	"Do you want to delete this record?"
#DEFINE C_NOLOCK_LOC	"Record could not be deleted because it is being used by someone else."

* Note: Cascading deletes should be handled via RI triggers in DBC!

IF MESSAGEBOX(C_DELETE_LOC,C_MSGBOX1) = MSGBOX_YES
	DELETE
	IF THIS.Parent.UpdateRows()  &&success
		* Success
		IF !EOF()
			SKIP 1
		ENDIF
		IF EOF() AND !BOF()
			SKIP -1
		ENDIF
	ENDIF
	THISFORM.LockScreen = .T.
	THIS.Parent.ButtonRefresh()
	THIS.Parent.NavRefresh()
	THISFORM.LockScreen = .F.
ENDIF

IF THISFORM.ShowWindow = 2 
	Activate Window (THISFORM.Name)
ENDIF

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine
this.parent.error(m.nError, m.cMethod, m.nLine)
ENDPROC
cmdAdd
commandbutton
commandbutton�� ����%Pe_�U

����UTHISFORMRELEASEClick,��1�2#)�.PROCEDURE Click
THISFORM.Release

ENDPROC
�Top = 0
Left = 486
Height = 24
Width = 53
FontName = "MS Sans Serif"
FontSize = 8
Caption = "E\<xit"
Enabled = .T.
StatusBarText = "Exit input form"
TabIndex = 10
ToolTipText = ""
Name = "cmdExit"
txtbtns.cmdExit
commandbutton
commandbutton��� ��*�%^,�U��������T��C��T��C�
SourceName��T��C�Database��
T�����T��CC�=�.FRX��T��C�DATASESSIONv��%�C�
�0����?��
���:��^�)T�
��C�frx�Pick report:�����%�C�
��
��Z�%�C�
�0���?��
���:��V�6�C�Q�wizards\wzreport.app��C���
AUTOREPORT�����%��������t,������U	CREPNAME	NSAVESESS
CSAVEALIASCSAVESOURCE	CSAVEDATACDIFFSOURCETHISFORM
SHOWWINDOWNAMEClick,��1u����������!��bAAAK�A2d)��Top = 0
Left = 274
Height = 24
Width = 49
FontName = "MS Sans Serif"
FontSize = 8
Caption = "P\<rint"
Enabled = .T.
StatusBarText = "Print to report"
TabIndex = 6
ToolTipText = ""
Name = "cmdPrint"
txtbtns.cmdPrint
commandbutton
commandbutton��� ��N�%M�UK�������%��������%��C�
��N�
T�C��a��T��a���%��9�����T�9�����T��a����T��C�
searchform�N��
��C����%��
�����
T�C��-���%��
�����T�9������%�������t,������T�	�
��-��T�	�
��-����C�	�
�
��UOSEARCHDLOG
LVISCHANGELSTATECHANGETHISFORM
SHOWWINDOWVISIBLEWINDOWSTATESHOWNAMETHISPARENTTOPFILEENDFILE
NAVREFRESHClick,��1q�C��A1��AA����A��AB�A1e)��Top = 0
Left = 224
Height = 24
Width = 49
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Find"
Enabled = .T.
StatusBarText = "Search for records"
TabIndex = 5
ToolTipText = ""
Name = "cmdFind"
	containervcx
shadowbaseIF
	this.lstLeft.rowsourcetype = 5						&&arr
shadowbase.nitchoices
lparameters aChoices

LOCAL lSoLabel1"
Eԉ2�u�U��M�2�M�M��!�E�@4���E���E�5�� FS%g����U�
��������#�����	�
���
�������
H�^�
�����������C������C������h�T����C��T����CO��F%�C�
SourceType��C�offline�
	�C�SendUpdates�
	��_�[��C�OYou cannot add a new record because the view(s) selected does not send updates.�x��B���2�
�T����C��T����CO��T��-��%�C����
����T�	�C������
H���t��C�m.oRelb�O��I�
���	��:�T�����T�����T�����T�������T�	���C����
��-�T��C��T�������T����� ��T�������z%�C�
SourceType�
���C�offline�
��
	�=C�,�
��,�,C�UpdatableFieldList�
���,��	��)�T��a���2�t�T��C��T��C����T����� ��T��C�
�����F���� ��
T�!����!%�C�����	C�
��
	����
T�
���������(�C��V��#�%�CC�
��fC�
�f���T�
�C�
�m��T��C�
���!����,%�C�(�
�
���C�+�
�
����`�
T��������T���
�
��T�!�C�
�b����U%�C�
SourceType�
���C�offline�
��
	�C�SendUpdates�
��
	����T��a���U%�C�
SourceType�
���C�offline�
��
	�C�SendUpdates�
��
	��T�T��a���%��
���
�	����[��C�OYou cannot add a new record because the view(s) selected does not send updates.�x��B��F������#%�C�
�!�
��
�!C�
�b	���T��a���
H�"�
�"��
���
���
�	����[��C�OYou cannot add a new record because the view(s) selected does not send updates.�x��B���
���
�	��F����C�{You cannot add a new record because the view(s) selected does not send updates and the child data source has a primary key.�x��B���
������%�C�;The child data source is a view and does not send updates. �9Do you just want to add a new record to the parent table?�$�x�����B�����
������%�C�OThe field relating the grid's view to the parent data source is not updatable. �9Do you just want to add a new record to the parent table?�$�x�����B�����
���l	��%�C�LThe fields relating the parent and child tables are not the same data type. �9Do you just want to add a new record to the parent table?�$�x���c	�B���2�
�T��a��z%�C�
SourceType�
���C�offline�
��
	�=C�,�
��,�,C�UpdatableFieldList�
���,��	��
�T��-���,%�C�(�
����C�+�
�����A
�
T������T��C�DATASESSIONv��T��C�
GridAddRec�N��%�C�	m.oAddRecb�O���
�_��C�SFailed create the Add Record form class. Check or reinstall your WIZSTYLE.VCX file.�x��B��T��"��
���T��#��
���T��$��
���T��%��
���'T��&�CC�
��
�
C�
����6��
��C��'��%���(�����B��G�(����F������$%�C�oAddRec.KeyValueb�C����T��&�C��&`���T��CO��%�C��(�����_�%�C�
����0���
����[�#r���
�����%�����&����T�
�CO��%�C��(�����
�#��
���;%�C�
���'C�m.cChildKeybC�oAddRec.KeyValueb������
����
�"r���
����
������&���#��
�
�����T�������
��T���)������T���*�-��T�+�,�a����C���-����C���.��T�+�,�-��U/OSEARCHDLOGOADDRECCCHILDALIAS
CPAPAALIASI	LPRIMEKEYCPAPAKEY	CCHILDKEY	NSAVESESSORELCTAGNAMELBADVIEWKEYNSAVEREC	NSAVEREC2LBADCHILDKEYLUPDATABLEPARENTKEYLNOSENDPARENTUPDATESLNOSENDCHILDUPDATESTHISPARENTEDITMODE
UPDATEROWSGRIDREFOLDALIASOLDREC
ODATARELATIONPARENTALIASRELATIONALEXPR
CHILDALIAS
CHILDORDERVIEWKEY	PARENTKEY	GRIDALIASCGRIDKEYTYPECHILDPRIMARYKEYUPDATABLEPARENTKEY
NOSENDUPDATESKEYFIELDKEYVALUE
RUNADDFORM	ADDOPTIONADDMODETOPFILETHISFORM
LOCKSCREEN
BUTTONREFRESH
NAVREFRESH4�����"��C�
��
��
������UNERRORCMETHODNLINETHISPARENTERRORClick,��Error��1�11�1R#!c�AAQ�#!�bQA�������A�a�111��A���1A����!AAA����AAS�AR�A��AA1�A�!�A�qA��AAQ�1
AAQ�
AAQ����A��A����AA!!!!q�AAA�BQA����1AA������!A�AAA����2�!18�T��)txtbtns.cmdFindlabel 1
updated = .F.
usearrays = .T.
sortleft = .F.
�PROCEDURE Click
#DEFINE OPT_CANCEL			0
#DEFINE OPT_ADD_PARENT		1
#DEFINE OPT_ADD_CHILD		2
#DEFINE OPT_ADD_BOTH		3
#DEFINE MB_Q_YESNO			36
#DEFINE MB_A_YES			6
#DEFINE C_KEYFLDNOUPDATE_LOC	"The field relating the grid's view to the parent data source is not updatable. "+;
	"Do you just want to add a new record to the parent table?"
#DEFINE C_BADCHILDKEY_LOC		"The fields relating the parent and child tables are not the same data type. "+;
	"Do you just want to add a new record to the parent table?"
#DEFINE C_NOCHILDUPDATE_LOC		"The child data source is a view and does not send updates. "+;
	"Do you just want to add a new record to the parent table?"
#DEFINE C_NOOBJ_LOC		"Failed create the Add Record form class. Check or reinstall your WIZSTYLE.VCX file."
#DEFINE C_NOUPDATE_LOC	"You cannot add a new record because the view(s) selected does not send updates."
#DEFINE C_NOUPDATE2_LOC	"You cannot add a new record because the view(s) selected does not send updates and the child data source has a primary key."

LOCAL oSearchDlog,oAddRec,cChildAlias,cPapaAlias,i,lPrimeKey
LOCAL cPapaKey,cChildKey,nSaveSess,oRel,cTagName,lBadViewKey,nSaveRec,nSaveRec2
LOCAL lBadChildKey,lUpdatableParentKey,lNoSendParentUpdates,lNoSendChildUpdates

DO CASE
CASE THIS.Parent.EditMode

	** Code for saving record
	THIS.Parent.UpdateRows()

CASE EMPTY(THIS.Parent.GridRef)		&& not using Grid object

	** Code for adding record
	THIS.Parent.OldAlias = ALIAS()	&&save alias in case reverting
	THIS.Parent.OldRec = RECNO()	&&save record in case reverting
	IF CURSORGETPROP("SourceType")#3 AND ;
	   !CURSORGETPROP("offline") AND ;
		!CURSORGETPROP("SendUpdates")
		=MESSAGEBOX(C_NOUPDATE_LOC)
		RETURN
	ENDIF
	APPEND BLANK

OTHERWISE

	** Code for adding record
	THIS.Parent.OldAlias = ALIAS()	&&save alias in case reverting
	THIS.Parent.OldRec = RECNO()	&&save record in case reverting
	lPrimeKey = .F.					&&is child key primary index
	
	IF !EMPTY(THIS.Parent.oDataRelation)
		oRel = EVAL(THIS.Parent.oDataRelation)
	ENDIF
		
	DO CASE
	CASE TYPE("m.oRel") = "O"	&&data environment
		WITH oRel
			cPapaAlias = .ParentAlias
			cPapaKey = .RelationalExpr
			cChildAlias = .ChildAlias
			cChildKey = .ChildOrder
		ENDWITH
		oRel = .NULL.	&&reset
	CASE !EMPTY(THIS.Parent.ViewKey)	&&using views
		cPapaAlias = ALIAS()
		cPapaKey = THIS.Parent.ParentKey
		cChildAlias = THIS.Parent.GridAlias
		cChildKey = THIS.Parent.ViewKey
		
		* Need to check if Key field is updatable
		IF CURSORGETPROP("SourceType",m.cChildAlias)#3 AND !CURSORGETPROP("offline",m.cChildAlias) AND ;
			ATC(","+m.cChildKey+",",","+CURSORGETPROP("UpdatableFieldList",m.cChildAlias)+",")=0
			lBadViewKey = .T.
		ENDIF
	OTHERWISE
		cPapaAlias = ALIAS()
		cPapaKey = RELATION(1)
		cChildAlias = THIS.Parent.GridAlias
		cChildKey = ORDER(m.cChildAlias)
	ENDCASE
	
	* Test to see if both keys are of the same data type
	SELECT (THIS.Parent.GridAlias)
	cGridKeyType = ""

	IF EMPTY(THIS.Parent.ViewKey) AND !EMPTY(m.cChildKey)	&&regular table used 
		* Get the Child Key field since only index tag is here
		* if these is an expression, then default to blank.
		cTagName = ""
		FOR i = 1 TO TagCount("")
			IF UPPER(TAG(m.i)) == UPPER(m.cChildKey)
				cTagName = KEY(m.i)
				lPrimeKey = PRIMARY(m.i)
				EXIT
			ENDIF
		ENDFOR
		
		* Check if we have an index expression here.
		IF ATC("(",m.cTagName)#0 OR ATC("+",m.cTagName)#0 
			cChildKey = ""
		ELSE
			cChildKey = m.cTagName
			cGridKeyType = TYPE(m.cChildKey)
		ENDIF
	ENDIF
	
	IF CURSORGETPROP("SourceType",m.cPapaAlias)#3 AND !CURSORGETPROP("offline",m.cPapaAlias) AND ;
	 !CURSORGETPROP("SendUpdates",m.cPapaAlias)
		lNoSendParentUpdates = .T.
	ENDIF
	IF CURSORGETPROP("SourceType",m.cChildAlias)#3 AND !CURSORGETPROP("offline",m.cChildAlias) AND ;
	 !CURSORGETPROP("SendUpdates",m.cChildAlias)
		lNoSendChildUpdates = .T.
	ENDIF

	* Check if have two views and both do not send updates	
	IF m.lNoSendParentUpdates AND m.lNoSendChildUpdates
		=MESSAGEBOX(C_NOUPDATE_LOC)
		RETURN
	ENDIF
	
	SELECT (THIS.Parent.OldAlias )
	IF !EMPTY(m.cGridKeyType) AND m.cGridKeyType # TYPE(m.cPapaKey)
		lBadChildKey = .T.
	ENDIF

	DO CASE
	CASE m.lNoSendParentUpdates AND (m.lBadViewKey OR m.lBadChildKey)
		=MESSAGEBOX(C_NOUPDATE_LOC)
		RETURN
	CASE m.lPrimeKey AND m.lNoSendParentUpdates
		=MESSAGEBOX(C_NOUPDATE2_LOC)
		RETURN
	CASE m.lNoSendChildUpdates	&&child view does not send updates
		IF MESSAGEBOX(C_NOCHILDUPDATE_LOC,MB_Q_YESNO) # MB_A_YES
			RETURN
		ENDIF
		APPEND BLANK
	CASE m.lBadViewKey	&&view key in not updatable
		IF MESSAGEBOX(C_KEYFLDNOUPDATE_LOC,MB_Q_YESNO) # MB_A_YES
			RETURN
		ENDIF
		APPEND BLANK
	CASE m.lBadChildKey 	&&bad child key -- different data type from parent
		IF MESSAGEBOX(C_BADCHILDKEY_LOC,MB_Q_YESNO) # MB_A_YES
			RETURN
		ENDIF
		APPEND BLANK
	OTHERWISE
		* Need to check if Key field is updatable
		lUpdatableParentKey = .T.
		IF CURSORGETPROP("SourceType",m.cPapaAlias)#3 AND !CURSORGETPROP("offline",m.cPapaAlias) AND;
			ATC(","+m.cPapaKey+",",","+CURSORGETPROP("UpdatableFieldList",m.cPapaAlias)+",")=0
			* cPapaKey = ""
			lUpdatableParentKey = .F.
		ENDIF

		* Check for expression in cPapaKey if so, then do not update record with keyvalue
		IF ATC("(",m.cPapaKey)#0 OR ATC("+",m.cPapaKey)#0
			cPapaKey = ""
		ENDIF

		nSaveSess = SET("DATASESSION")
		oAddRec = CREATE("GridAddRec")
		IF TYPE("m.oAddRec") # "O"
			=MESSAGEBOX(C_NOOBJ_LOC)
			RETURN
		ENDIF
		oAddRec.ChildPrimaryKey = m.lPrimeKey
		oAddRec.UpdatableParentKey = m.lUpdatableParentKey
		oAddRec.NoSendUpdates = m.lNoSendParentUpdates
		oAddRec.KeyField = m.cPapaKey
		oAddRec.KeyValue = 	IIF(!EMPTY(m.cPapaKey),EVAL(m.cPapaKey),"")
		oAddRec.RunAddForm()
		IF oAddRec.AddOption = OPT_CANCEL
			RETURN
		ENDIF

		SET DATASESSION TO nSaveSess
		SELECT (THIS.Parent.OldAlias)
		
		IF TYPE("oAddRec.KeyValue") = "C"
			oAddRec.KeyValue = TRIM(oAddRec.KeyValue)
		ENDIF
		
		* Add record to parent table
		nSaveRec = RECNO()
		IF INLIST(oAddRec.AddOption,OPT_ADD_PARENT,OPT_ADD_BOTH)
			IF EMPTY(m.cPapaKey)
				APPEND BLANK IN (m.cPapaAlias)
			ELSE
				INSERT INTO (m.cPapaAlias) ((oAddRec.KeyField)) VALUES(oAddRec.KeyValue)
			ENDIF
		ENDIF
		nSaveRec2 = RECNO()

		* Add child record
		IF INLIST(oAddRec.AddOption,OPT_ADD_CHILD,OPT_ADD_BOTH)
			* Need to check
			GO m.nSaveRec
			IF EMPTY(m.cChildKey) OR TYPE("m.cChildKey")#TYPE('oAddRec.KeyValue')
				APPEND BLANK IN (m.cChildAlias)
			ELSE
				INSERT INTO (m.cChildAlias) ((m.cChildKey)) VALUES(oAddRec.KeyValue)
			ENDIF
			GO m.nSaveRec2
		ENDIF
	ENDCASE
ENDCASE

THIS.Parent.EditMode = !THIS.Parent.EditMode
THIS.Parent.AddMode = THIS.Parent.EditMode
THIS.Parent.TopFile = .F.
THISFORM.LockScreen = .T.
THIS.Parent.ButtonRefresh()
THIS.Parent.NavRefresh()
THISFORM.LockScreen = .F.
ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine
this.parent.error(m.nError, m.cMethod, m.nLine)
ENDPROC
oPROCEDURE Click
#DEFINE C_MAKEREPO_LOC			"Could not locate a report to print. Create new one?"
#DEFINE C_NOOPEN_LOC					"Error opening table. Unable to print report."
#DEFINE C_GETFILEPROMPT_LOC		"Pick report:"

LOCAL cRepName,nSaveSess,cSaveAlias,cSaveSource,cSaveData 

cSaveAlias = ALIAS()
cSaveSource = CURSORGETPROP("SourceName")
cSaveData = CURSORGETPROP("Database")
cDiffSource = ""
cRepName = LEFT(ALIAS(),8)+".FRX"
nSaveSess = SET("DATASESSION")

* Handling for Private data sessions
#IF 0
	IF m.nSaveSess # 1
		SET DATASESSION TO 1
		SELECT 0
		IF !EMPTY(m.cSaveData)
			OPEN DATABASE (m.cSaveData)
		ENDIF
		IF USED(m.cSaveAlias)
			SELECT (m.cSaveAlias)
			IF CURSORGETPROP("SourceName")#m.cSaveSource
				cDiffSource = CURSORGETPROP("SourceName")
				USE IN (m.cSaveAlias)
				SELECT 0
			ENDIF
		ENDIF	
		IF EMPTY(ALIAS())
			USE (m.cSaveSource) AGAIN ALIAS (m.cSaveAlias) SHARED
			IF EMPTY(ALIAS())
				=MESSAGEBOX(C_NOOPEN_LOC)
				RETURN
			ENDIF
		ENDIF
	ENDIF
#ENDIF

IF FILE(m.cRepName)
	REPORT FORM (m.cRepName) PREVIEW NOWAIT
ELSE
	m.cRepName = GETFILE("frx",C_GETFILEPROMPT_LOC,"",1)
	IF !EMPTY(m.cRepName)
		IF FILE(m.cRepName)
			* User pressed Open button
			REPORT FORM (m.cRepName) PREVIEW NOWAIT
		ELSE
			* User pressed New button
			DO HOME()+"wizards\wzreport.app" WITH ALIAS(), "AUTOREPORT"
		ENDIF
	ENDIF
ENDIF

* Private data session code
#IF 0
	IF !EMPTY(cDiffSource)
		USE (m.cDiffSource) IN 0
	ENDIF
	SET DATASESSION TO m.nSaveSess
	SELECT (m.cSaveAlias)
#ENDIF

IF THISFORM.ShowWindow = 2 
	Activate Window (THISFORM.Name)
ENDIF

ENDPROC

commandbutton
commandbutton0�� �%����UJF������#6�T����-��T����a����C�����UTHISPARENT	NWORKAREATOPFILEENDFILE
NAVREFRESHClick,��1Q1�)ZAutoSize = .T.
ButtonCount = 3
BackStyle = 0
BorderStyle = 0
Value = 2
ControlSource = "nAddAction"
Height = 68
Left = 36
SpecialEffect = 0
Top = 48
Width = 218
TabIndex = 1
Name = "Optiongroup1"
Option1.BackStyle = 0
Option1.Caption = "Add record to parent only"
Option1.Value = 0
Option1.Height = 18
Option1.Left = 5
Option1.Top = 5
Option1.Width = 181
Option1.AutoSize = .T.
Option1.Name = "Option1"
Option2.BackStyle = 0
Option2.Caption = "Add record to child (grid) only"
Option2.Value = 1
Option2.Height = 18
Option2.Left = 5
Option2.Top = 25
Option2.Width = 208
Option2.AutoSize = .T.
Option2.Name = "Option2"
Option3.BackStyle = 0
Option3.Caption = "Add record to both"
Option3.Value = 0
Option3.Height = 18
Option3.Left = 5
Option3.Top = 45
Option3.Width = 137
Option3.AutoSize = .T.
Option3.Name = "Option3"
wAutoSize = .T.
BackStyle = 0
Caption = "Key value:"
Height = 18
Left = 48
Top = 196
Width = 67
Name = "Label1"
label)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
TablesUsed[1]
standardmemo
LOCAL aTablesUsed,nTablesUsed,i,aMems,nTotPixelsONLY_LOC		"The table is Read-Only. You will not bestylebmp\memo1.bmp-+
stylebmp\memo1.bmp-���	Class-���	`�1�-���	`�-editbox�-��"Systemn-standardmemo���	���editboxe = "txtbtns"
BeforeOpenTables event of the DatapPROCEDURE Click
LOCAL oSearchDlog
LOCAL lVisChange,lStateChange

* Check if SDI Window
IF THISFORM.ShowWindow = 2 
	IF !_VFP.Visible
		_VFP.Visible = .T.
		lVisChange = .T.
	ENDIF
	IF _SCREEN.WindowState = 1
		_SCREEN.WindowState = 0
		lStateChange = .T.
	ENDIF
ENDIF

oSearchDlog = CREATE("searchform")
oSearchDlog.SHOW()

IF m.lVisChange
	_VFP.Visible = .F.
ENDIF
IF m.lStateChange 
	_SCREEN.WindowState = 1
ENDIF

IF THISFORM.ShowWindow = 2 
	Activate Window (THISFORM.Name)
ENDIF

* Reset from prior
THIS.Parent.TopFile = .F.
THIS.Parent.EndFile = .F.
THIS.Parent.NavRefresh()
ENDPROC
label = 377
Height = 108
BackStyle = 0
BorderWidth = �FontName = "MS Sans Serif"
FontSize = 8
Height = 43
SpecialEffect = 1
Width = 150
ColorSource = 0
DisabledBackColor = 255,255,255
Name = "standardmemo"
��������4)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
sh = 0
oldrec picbtns
TabIndex = 1
nworkarea = 0
editmode = 0
prevPixels= 542
Height = 25
BackStyle = 0
BorderWidth = 0stylebmp\picbttns.bmpWITH EVAL("."+aMems[m.i])
					IF stylebmp\picbttns.bmp1�a�S {Cg..�&YQFh.IR�Class9�%I;/]E:IS�100___UUUMMMBBB999
���������```txtbtns(fvEE>j(�9jJ2�picbtns���������i����ݜ����*o�?��H�6��Awizbmppath
�����������������������0�� �%����UJF������-�T����a��T����C+����C�����UTHISPARENT	NWORKAREATOPFILEENDFILE
NAVREFRESHClick,��1A!1�)K�� 22�%��	��UaF������
%�C+
��&�	H�����T����C+��T����C����C�����UTHISPARENT	NWORKAREAENDFILETOPFILE
NAVREFRESHClick,��1��A"!2�)2@PROCEDURE Init

TxtBtns::Init()
THISFORM.ShowTips = .T.

ENDPROC
PROCEDURE setcaption
IF !THIS.EditMode
	THIS.cmdAdd.Picture = THIS.wizbmppath+"wznew.bmp"
	THIS.cmdEdit.Picture = THIS.wizbmppath+"wzedit.bmp"
	THIS.cmdAdd.DownPicture = THIS.wizbmppath+"wznew.bmp"
	THIS.cmdEdit.DownPicture = THIS.wizbmppath+"wzedit.bmp"
ELSE
	THIS.cmdAdd.Picture = THIS.wizbmppath+"wzsave.bmp"
	THIS.cmdEdit.Picture = THIS.wizbmppath+"wzundo.bmp"
	THIS.cmdAdd.DownPicture = THIS.wizbmppath+"wzsave.bmp"
	THIS.cmdEdit.DownPicture = THIS.wizbmppath+"wzundo.bmp"
ENDIF
ENDPROC
�����	�	containerhape1"
Label1.Height = 16
Label1.Left = 0
Lawizstyle.vcx= 51
Shape1.Height = 20
Shape1.Width = 97
editboxxfield��%xtextboxe.vcx
wizlogic Class reference for a logic field!Arial, 0, 9, 5, 15, 12, 13, 3, 0
ocess = SET("REPROCESS"
scrollgrid.nWorkArea = SELECT()
THIS.oldSetDelete = SETPixelsx
THIS.TopFile = .F.
THIS.EndFile = .F.
THIS.AddClassardfieldIS.ParentKey = ""
THIS.ViewType = 3
THIS.3andardfield"
 This routine sets the member variables
grid
SpecialEffect = 1
Width = 100
ColorSource = 0
N
scrollgrid "MS Sans Serif"
FontSize = 8
Alignment = 3
scrollgrid.Column1.					"To remedy this, ensure the View)MS Sans Serif, 1, 8, 6, 13, 11, 12, 2, 0
653752��verttxtbtnsldreprocess
oldalias
previewinit
usedataenPixelsetdelete
oldmultilocks
oldbuffering
addmode
olstylebmp\textbttn.bmppreviewmode
topfile
endfile
oldsstylebmp\textbttn.bmpAA2���AAaAD���AAClass: �b:B;�B�D�)l/1'�/]=0�2�T�2q3�`�3�7txtbtns^�� ��� �!!�"b'verttxtbtns�A1aA�A2�Width = 94
Height = 276
Name = "verttxtbtns"
cmdPrev.Top = 24
cmdPrev.Left = 0
cmdPrev.Name = "cmdPrev"
cmdNext.Top = 48
cmdNext.Left = 0
cmdNext.Name = "cmdNext"
cmdTop.Top = 0
cmdTop.Left = 0
cmdTop.Name = "cmdTop"
cmdEnd.Top = 72
cmdEnd.Left = 0
cmdEnd.Name = "cmdEnd"
cmdFind.Top = 108
cmdFind.Left = 0
cmdFind.Width = 55
cmdFind.Name = "cmdFind"
cmdPrint.Top = 132
cmdPrint.Left = 0
cmdPrint.Width = 55
cmdPrint.Name = "cmdPrint"
cmdExit.Top = 252
cmdExit.Left = 0
cmdExit.Height = 24
cmdExit.Width = 55
cmdExit.Name = "cmdExit"
cmdAdd.Top = 168
cmdAdd.Left = 0
cmdAdd.Name = "cmdAdd"
cmdDelete.Top = 216
cmdDelete.Left = 0
cmdDelete.Name = "cmdDelete"
cmdEdit.Top = 192
cmdEdit.Left = 0
cmdEdit.Name = "cmdEdit"
2
cm	container����M��AZ��t��t
���Ŀ��U�f�� t�Mwizstyle.vcxፕ|�����	u�̃}�Nt
���ң��M���T���E�!Arial, 1, 8, 5, 14, 11, 14, 3, 0

chiselbasePixelsstylebmp\txtbox2.bmpstylebmp\txtbox2.bmpClass3	container
chiselbase�FontName = "Arial"
FontSize = 8
Alignment = 1
BackStyle = 0
Caption = "Label1"
Height = 13
Left = 0
Top = 5
Width = 45
ColorSource = 3
TabIndex = 0
Name = "Label1"

chiselbase.Label1labellabeljBackColor = 255,255,255
Height = 2
Left = 46
Top = 20
Width = 97
SpecialEffect = 0
Name = "Shape1"

chiselbase.Shape1shapeshape{Width = 148
Height = 24
BackColor = 192,192,192
BackStyle = 0
BorderWidth = 0
SpecialEffect = 2
Name = "chiselbase"
chisellogic�PROCEDURE Click
SELECT (THIS.parent.nWorkArea)
GO BOTTOM
THIS.Parent.TopFile = .F.
THIS.Parent.EndFile = .T.
THIS.Parent.NavRefresh()
ENDPROC
�Top = 0
Left = 168
Height = 24
Width = 55
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Bottom"
StatusBarText = "Go to bottom of table"
TabIndex = 4
ToolTipText = ""
Name = "cmdEnd"
txtbtns.cmdEnd
commandbutton
commandbuttontxtbtns.cmdTopoptiongroup�� ����%Pe_�U

����UTHISFORMRELEASEClick,��1�2#)�Classled =  !THIS.EditMode
THIS.cmdExit.Enabled =  !THI�PROCEDURE Click
SELECT (THIS.parent.nWorkArea)
LOCATE
THIS.Parent.TopFile = .T.
THIS.Parent.EndFile = EOF()
THIS.Parent.NavRefresh()
ENDPROC
�Top = 0
Left = 0
Height = 24
Width = 55
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Top"
StatusBarText = "Go to top of table"
TabIndex = 1
ToolTipText = ""
Name = "cmdTop"

commandbutton
commandbuttonL�� 339%��	��UbF������
%�C
��'�
H�������T����C��T����C+����C�����UTHISPARENT	NWORKAREATOPFILEENDFILE
NAVREFRESHClick,��1��A"!1�)3�PROCEDURE Click
SELECT (THIS.parent.nWorkArea)
IF !EOF()
	SKIP 1
ENDIF

THIS.Parent.EndFile = EOF()
THIS.Parent.TopFile = BOF()

THIS.Parent.NavRefresh()

ENDPROC
�Top = 0
Left = 112
Height = 24
Width = 55
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Next"
StatusBarText = "Skip to next record"
TabIndex = 3
ToolTipText = ""
Name = "cmdNext"
txtbtns.cmdNext
commandbutton
commandbutton�PROCEDURE Click
SELECT (THIS.parent.nWorkArea)
IF !BOF()
	SKIP -1
ENDIF

THIS.Parent.TopFile = BOF()
THIS.Parent.EndFile = EOF()

THIS.Parent.NavRefresh()
ENDPROC
txtbtns.cmdPrevbaseformn position centering (0-none, 1-hori, 2-vert, 3-standardformtons Class reference for button set object.
)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
XXXXXXXXXXXXXXXsearchclassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPixelsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXstylebmp\searchcl.bmpXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXstylebmp\searchcl.bmpXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX15XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX	containerXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsearchclassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX�Top = 69
Left = 290
Height = 15
Width = 88
FontName = "MS Sans Serif"
FontSize = 8
AutoSize = .T.
BackStyle = 0
Caption = "Case Sensiti\<ve"
TabIndex = 8
Name = "chkCaseSensitive"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsearchclass.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXchkCaseSensitiveXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcheckboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcheckboxsearchclass.label6p�� WW��%���U�4%�C�
SourceType��C�SendUpdates�
	����[��C�OYou cannot add a new record because the view(s) selected does not send updates.�x��B���
��C����UTHISFORMREFRESHClick,��1B�AAQ�1)W�FontBold = .T.
FontName = "Arial"
FontSize = 8
Alignment = 1
BackStyle = 0
Caption = "Label1"
Height = 16
Left = 0
Top = 3
Width = 41
TabIndex = 0
Name = "Label1"
=ASORT(TH�Top = 4
Left = 51
Height = 20
Width = 97
BackStyle = 0
BorderStyle = 0
BorderWidth = 0
FillStyle = 0
BackColor = 0,255,255
FillColor = 128,128,128
Name = "Shape1"
���/�\I�� ��f�%Pd^�UT������UTHISVALUEInit,��11)�2AllProp()
THIS.cmdFind.Enabled = !THIS.EditMode
THIS.	containerS.nWorkArea
	SELECT (THIS.nWorkArea)
ENDIF

�Top = 0
Left = 56
Height = 24
Width = 55
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Prev"
StatusBarText = "Skip to previous record"
TabIndex = 2
ToolTipText = ""
Name = "cmdPrev"

commandbutton
commandbutton)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
 environment
D
standardfieldHIS.PreviewInit = IIF(TYPE("THIS.PreviewIniPixelsPreviewMode = IIF(TYPE("THIS.PreviewMode")#"L",.F.stylebmp\txtbox1.bmp
* the Preview button of the Form Wstylebmp\txtbox1.bmphese properties should not be used. 	fancyform�)}Q�4�б$ѱ' �8�6�������ClassSET DELETED ON
THIS.oldReprocess = SET("REPROCESS"wizstyle.vcxty.Left = 4
layoutsty.Width = 571
layoutstembossedform�бUѱ, (��4����de������/%1zѱ$ ������/C:Uѱ�ѱ& �t�4Class��)}Q�1��}P.<'zѱ�ѱ' �N�Pixels
if empty(this.Label1.Caption)
	this.Label1.Heigh	fancyforms.Label2.Height = this.Label1.Height
this.Labe!Arial, 0, 9, 5, 15, 12, 13, 3, 0
stLeft.Top = this.Label�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Value:"
Height = 16
Left = 262
Top = 99
Width = 165
Name = "label6"
labellabel�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Operator:"
Height = 16
Left = 161
Top = 99
Width = 93
Name = "label5"
searchclass.label5labellabelsearchclass.label4	fancybaseaption()
ENDPROC
PROCEDURE initvars
						
PixelsIS.cmdDelete.Enabled =  !THIS.EditMode AND !ISREAD�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Field:"
Height = 16
Left = 12
Top = 99
Width = 102
Name = "label4"
labellabel�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Value:"
Height = 16
Left = 262
Top = 7
Width = 165
Name = "label3"
searchclass.label3labellabel�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Operator:"
Height = 16
Left = 158
Top = 7
Width = 93
Name = "label2"
searchclass.label2labellabel�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Field:"
Height = 16
Left = 12
Top = 7
Width = 102
Name = "label1"
searchclass.label1labellabel	fancybasebuttons
* for appropriate table environments.
tFontName = "Tahoma"
FontSize = 9
Caption = "Label1"
Height = 18
Left = 8
Top = 9
Width = 43
Name = "Label1"
 whi	fancybase.= 0
previewinit = .T.
usedataenv = .T.
view(PROCEDURE Init
THIS.VALUE =1
ENDPROC
WAutoSize = .T.
ButtonCount = 2
BackStyle = 0
Value = 1
Height = 46
Left = 50
Top = 55
Width = 58
TabIndex = 7
Name = "optgrpAndOr"
Option1.FontName = "MS Sans Serif"
Option1.FontSize = 8
Option1.BackStyle = 0
Option1.Caption = "\<And"
Option1.Value = 1
Option1.Height = 18
Option1.Left = 5
Option1.Top = 5
Option1.Width = 48
Option1.Name = "Option1"
Option2.FontName = "MS Sans Serif"
Option2.FontSize = 8
Option2.BackStyle = 0
Option2.Caption = "\<Or"
Option2.Value = 0
Option2.Height = 18
Option2.Left = 5
Option2.Top = 23
Option2.Width = 39
Option2.Name = "Option2"
searchclass.optgrpAndOroptiongroupoptiongroup|FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Left = 260
TabIndex = 6
Top = 118
Width = 176
Name = "txtExpr2"
!Arial, 0, 9, 5, 15, 12, 13, 3, 0
ion = m.cDataEnvRef+"."shadowlogictMem
			IF UPPER(EVAL("."+aMems[m.i]+".BaseCPixelsITH EVAL(m.cDataEnvRef)
		* Check for relation
	ClassERWISE
	THIS.UseDataEnv = .F.
ENDCASE

IF THIS.2")="O" AND !THISFORM.VISIBLE 
		THISFORM.VISIBLE = .T.
shadowbasenvironment"
	* let's also set the 
	IF TYPE(shadowlogicISFORMSET.DataEnvironment,2)
	cDataEnvRef = �Top = 0
Left = 52
Height = 15
Width = 15
BackStyle = 0
Caption = ""
SpecialEffect = 1
TabIndex = 0
ColorSource = 0
DisabledBackColor = 255,255,255
Name = "Check1"

	nTotMem shadowlogic.HISFORM.DataEnvironment") = "O"
	THIS.UseDaCheck1IS.PreviewInit)

* Check for data environment
Dcheckboxe)
THIS.PreviewInit = IIF(TYPE("THIS.PreviewInisearchclass.txtExpr2textboxtextbox�FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Left = 160
Style = 2
TabIndex = 5
Top = 117
Width = 96
Name = "cboOperators2"
�� ���[%9jH�U�9%�C�"Do you want to delete this record?�$�x������%�C�������
%�C+
��g�	H�����%�C+�C
	����
H���������
��C����%��������t,������UTHISPARENT
UPDATEROWSTHISFORMREFRESH
SHOWWINDOWNAMEClick,��1�AA��A1�AAA�A�A2�)�Label1
topfile = 0
endfile = 0
oldrefresh = 0
oldrec labelT.
TabIndex = 1
nworkarea = 0
editmode = 0
prevqPROCEDURE InteractiveChange
IF INLIST(THIS.ListItemId,5,6)
	THIS.Parent.TxtExpr2.Value = ""
ENDIF
THIS.Parent.TxtExpr2.ENABLED = !INLIST(THIS.ListItemId,5,6)

ENDPROC
PROCEDURE Init
#DEFINE C_OPERATORS_LOC	"equals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between"
THIS.ADDITEM(C_OPERATORS_LOC)
THIS.VALUE = THIS.LIST[1]

ENDPROC
�FontName = "Arial"
FontSize = 8
Height = 48
Left = 48
SpecialEffect = 1
TabIndex = 0
Top = 2
Width = 150
ColorSource = 0
BackColor = 255,255,255
Name = "Edit1"

Name = "ShaJArial, 0, 9, 5, 15, 12, 13, 3, 0
MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
m.cDataType = "L" 		&& don't allow other optio
searchform = 5	&& is blank
	RETURN "EMPTY("+m.cFldName+PixelsoOp.listitemid = 4	&& less than
	m.cOp = "<"
CASstylebmp\searchfm.bmpistitemid = 3	&& more than
	m.cOp stylebmp\searchfm.bmp m.oOp.listitemid = 2	&& not equalsClassage equivalent
DO CASE
CASE m.oOp.listitemid = 1	3ldName = "UPPER("+m.cFldName+")" 
ENDIF

* Get the oform m.cDataType = "C" AND THIS.chkCaseSensitive.Value =
searchformield
m.cDataType = aWizFList(m.oField.listite��� ����%
N�U{�������T��C��T��C�
SourceName��T��C�Database��
T�����T��CC�=�.FRX��T��C�DATASESSIONv��%�C�
�0����?��
���:��N�6T�
��C�frx�Select a report to print:�����%�C�
��
��J�%�C�
�0��%�?��
���:��F���<���
AUTOREPORT�����%������t�t,������U	CREPNAME	NSAVESESS
CSAVEALIASCSAVESOURCE	CSAVEDATACDIFFSOURCETHISFORM
SHOWWINDOWNAMEClick,��1u���������a!���AAAK�A28)�label = 542
Height = 25
BackStyle = 0
BorderWidth = 0
searchform.xAND !m.lShowedMess
							=MESSAGEBOX(C_NOU
Commandgroup1pdates are made
						IF !CURSORGETPROP("S
shadowbase.ape3.Top = 264
Shape3.Left = 6
Shape3.HeighShape1 5
Shape2.Height = 1
Shape2.Width = 568
Shape2.shapedth = 568
Shape1.Name = "Shape1"
Shape2.Top = 43
shape
Shape1.Top = 42
Shape1.Left = 5
Shape1.Height =OWidth = 149
Height = 25
BackStyle = 0
BorderWidth = 0
Name = "shadowbase"
el1.Top = 8
Label1.Width = 83
Label1.Na�ButtonCount = 3
BackStyle = 0
BorderStyle = 0
Value = 1
Height = 31
Left = 118
Top = 175
Width = 241
Name = "Commandgroup1"
Command1.Top = 1
Command1.Left = 0
Command1.Height = 29
Command1.Width = 73
Command1.Caption = "\<Search"
Command1.TabIndex = 1
Command1.Name = "Command1"
Command2.Top = 1
Command2.Left = 84
Command2.Height = 29
Command2.Width = 73
Command2.Caption = "A\<ll"
Command2.TabIndex = 2
Command2.Name = "Command2"
Command3.Top = 1
Command3.Left = 168
Command3.Height = 29
Command3.Width = 73
Command3.Cancel = .T.
Command3.Caption = "\<Cancel"
Command3.TabIndex = 3
Command3.Name = "Command3"
,THIS.txtExpr1)
m.cGetExpr2 = THIS.SearchItem(THIS.cbcommandgroup 5, 15, 12, 13, 3, 0
ERY(.Alias)
						ENDI	container= 37
layoutsty.Shape4.Name = "Shape4"
layouts!Arial, 0, 9, 5, 15, 12, 13, 3, 0
hp,A�5�u�N�E�embossedform�E�$�@�E��E���$�@�E��d,PixelsE��E���4A�
(A�����,�=$�@�stylebmp\form3.bmp�Q�E���E�}��8�E�McommandgroupIF THIS.oldSetDelete = "OFF" AND ATC("?",CUR
searchform.ttons Class reference for button set object.
Searchclass1use for testing but can improve performance 	containerect with 1-Many forms.
wizverify Whether to vewizstyle.vcxHeight = 34
Name = "fancylogic"
Label1.Namsearchclass4.Left = 52
shape4.Height = 13
shape4.Width'saverecord
savefilter
changedfilter
me = "shape3"
sh�Height = 216
Width = 477
DoCreate = .T.
AutoCenter = .T.
BorderStyle = 1
Caption = "Search"
WindowType = 1
AlwaysOnTop = .T.
Name = "searchform"
.T.
ColorSource = 0
BackColoformybase	THIS.NavRefresh()
ENDIF

ENDPROC
DATESKEstylebmp\form3.bmp�����W3�����@󫪿��1.

THIS.nWorkArea = SELECT()
THIS.oldSetDelete = SETtextbox
THIS.TopFile = .F.
THIS.EndFile = .F.
THIS.Add
standardfieldIS.ParentKey = ""
THIS.ViewType = 3
THIS.textboxates checkbox is checked in the View Designer."
1�� -k%x���U����%�������%�C�����/�G(��g�T�
������SET FILTER TO &cFilterExpr
�%�CN�����#�������UCFILTEREXPRTHIS
CHANGEDFILTER
SAVEFILTER
SAVERECORDK%�CC�
��D�T���CO��T���C�FILTERv��T���-���UTHIS
SAVERECORD
SAVEFILTER
CHANGEDFILTERDestroy,��Init���1q!a�!�A�AA3����A1��))MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0

Container19, 5, 15, 12, 13, 3, 0
or more of the Views masearchclass.label�������"���E썕����P�M����
�E���FontName = "MS Sans Serif"
FontSize = 8
Alignment = 0
BackStyle = 0
Caption = "Label1"
Height = 15
Width = 39
AutoSize = .F.
Name = "standardlabel"
�����k����t�������
standardlabel������j�U�M��E��E����P��boxpagesformtons Class reference for button set object.
Edit1bmp\txtbox1.bmpidth = 0
FillStyle = 0
BackColor =
shadowmemo.tbox1.bmp128,128
Name = "Shape1"
ther to veClass�������u����%��ËD$=�t=�tTTop = 23
Left = 15
Width = 200
Height = 200
BackStyle = 1
Name = "Container1"
92
Name = "Container1"
will not be	containercption()
ENDPROC
PROCEDURE initvars
						
	containercmdDelete.Enabled =  !THIS.EditMode AND !ISREAD'Caption = "Header1"
Name = "Header1"
t.Enabled =  !THIscrollgrid.Column1.dFind.Enabled = !THIS.EditMode
THIS.Header1seS.nWorkArea
	SELECT (THIS.nWorkArea)
ENDIF

label���E��U���r�A�E��AR�8�ǂ������󥤋M��1��C	�}�t�M��{�U�M�����}�t�M��"�M��Class��V~p�E���KN�:��M��E��Q��KN�#&��M���Kstylebmp\label1.bmp�#��M���7�i�E���C����hstylebmp\label1.bmpM���M���M��$�M��o�E���Pixels��t�E���Qr���т�M���M��;�M��U3ҋM��headerogicuttons
* for appropriate table environments.
headerck1"

Top = 9
Width = 43
Name = "Label1"
 whi
wizbtnstyle
 = 56
Height = 18
Width = 17
Caption = "Pixels = 37
shape4.Name = "shape4"
mprove performance Classrame4.Top = 7
shape4.Left = 56
shape4.Height = 131oxpagespe3.Height = 13
shape3.Width = 37
shape3.Name 	pageframeme = "Page5"
 "shape2"
shape3.Top = 22
shapeboxpages "Page4"
Page4.Name = "Page4"
Page5.Caption = gridaddform.�AutoSize = .T.
BackStyle = 0
Caption = "A. Select option for adding records:"
Height = 18
Left = 24
Top = 24
Width = 225
Name = "Label2"
labelLabel1gridaddform.!Arial, 0, 9, 5, 15, 12, 13, 3, 0
- Note: Parameterized vbaseformourceType",.Alias)#3
						* Check if we need tPixels "CURSOR"
				WITH EVAL("."+aMems[m.i])
					IF �ErasePage = .T.
PageCount = 2
TabStretch = 1
TabStyle = 1
Width = 287
Height = 169
Name = "boxpages"
Page1.Caption = "Page1"
Page1.Name = "Page1"
Page2.Caption = "Page2"
Page2.Name = "Page2"
Page3.Caption = "Page3"
Page3.Name = "Page3"
	pageframeClass reference for a general field object.
wiwizstyle.vcx field object.
wizmemo Class reference for Pixels�q��0l}a�P$#����퇻� ������&�i����<'��G-G�eestylebmp\layout.bmp�F����)+�'D�|����pEg���y;���"�stylebmp\layout.bmp�����P�N��',Ý0��4�nT�)�1��Z[Class8�܃�Z��#�Ɂ�T�4�ⴾ���l���]��S���.sz��^5�в��!����Pʟ�?�{�L�/�4m�
R0���5‘	l~��̋�X�'	container�ns��e�/�S�#�`�i�������n��¾_d
ke��o�	layoutsty�q��
����ʅ�1������96�?^B����<!L�bC�|q�@Height = 13
Left = 228
Top = 24
Width = 37
Name = "Shape4"
^���׹D�8��mK��g��C�h������+/��Z
vG"R
�Gm�͙V�
�9>	layoutsty.��~�.Ą�l�n�i�'�B#���[���&��r��x�P����nShape4"%��b���yTG�6���ɵ�Q�g����TT_*�Wv ���	��V)shapeǛQ�Z�SLM     INI#Ɂd�ZzshapeǛQ�Z�TXTBOX4 BMP!ǛQ�Z�?Height = 13
Left = 24
Top = 45
Width = 37
Name = "Shape3"
 BMP!�Q�Z�TXTBOX2 BMP!ǛQ�Z�	layoutsty.ǛQAZ�OLE5    BMP!ǛQBZ�Shape3ƛQ�Y�OLE3    BMP!ƛQ@Z�shapeƛQ�Y�OLE1    BMP!�Q�Y�shapeƛQ�Y�MEMO4   BMP!ƛQ�Y�?Height = 13
Left = 24
Top = 24
Width = 37
Name = "Shape2"
 BMP!�QgY�MEMO2   BMP!ƛQhY�	layoutsty.ƛQ&Y�LOGIC3  BMP!ƛQdY�Shape2#�Q$Y�LOGIC1  BMP!�Q%Y�shapeƛQ"Y�FORM5   BMP!ƛQ#Y�shapeƛQ�X�FORM3   BMP!ƛQ!Y�?Height = 205
Left = 0
Top = 0
Width = 517
Name = "Shape1"
 BMP!ǜQcX�FORM1   BMP!��QxX�	layoutsty.Shape1shapeshape&odimensions
olabel1
olabel2
ocol2
�Width = 517
Height = 205
TabIndex = 0
odimensions = Shape1
olabel1 = Shape2
olabel2 = Shape3
ocol2 = Shape4
Name = "layoutsty"
	container�>��1�rWjZ��yŠ_d�4�Ϙ��)CF����cJ�/)s�		layoutsty Class reference for layout object.
wizfield C7�t�@������|$t
�T$��T$ ]_^[������D$baseform��t.��t�����tF�@���@������tF�embossedform���3ۃ�������M��t��t�\@��M��u���sTop = 265
Left = 6
Height = 1
Width = 568
BackColor = 255,255,255
BorderColor = 255,255,255
Name = "Shape4"
��>"uembossedform.�uN�S��tO�@��IF�>"t3����t(�҄���tShape4�d���P�E�P�E�P��CAj3�E�PjZ�5-A��FA��d���PjW�shapep,A��d���P�E�P�E�P��CAj3�E�PjY�5-A��FA��d���shapeAj3�E�PjX�5-A��FAj3��d���P���@�����8��PsTop = 264
Left = 6
Height = 1
Width = 568
BackColor = 128,128,128
BorderColor = 128,128,128
Name = "Shape3"
�d���embossedform.�P�E�P��CAj3�E�PjN�5-A��FAj3��d���P��Shape3�PjM�5-A��FAj3��d���P���@�����8��P�5-Ashape��DA_^[��U���SVWjjj
�ͺ���@j3�E�PjL�5shapejhhj�|���u3��9�
`t��`t���ȣx�stylebmp\form.bmpMem
			IF UPPER(EVAL("."+aMems[m.i]+".stylebmp\form.bmp	ENDIF
		ENDFOR
		
		* Check for VieClassLATION"
				THIS.oDataRelation = m.cDataEnvRef+"."11 TO m.nTotMem
			IF UPPER(EVAL("."+aMems[m.i]+".BaseCshapeshapewizshape;Height = 68
Width = 68
wizeffect = 0
Name = "wizshape"
Class1wizeffect
Pixels!Arial, 1, 9, 6, 15, 12, 15, 3, 0
boxbasePixelsstylebmp\txtbox5.bmpstylebmp\txtbox5.bmpClass3	containerboxbase�FontSize = 9
BackColor = 0,0,255
BackStyle = 0
Caption = "Label1"
ForeColor = 0,0,255
Height = 15
Left = 3
Top = 2
Width = 49
TabIndex = 0
Name = "Label1"
boxbase.Label1labellabel�BackColor = 255,255,255
BackStyle = 1
FillColor = 255,255,255
FillStyle = 0
Height = 43
Left = 0
Top = 0
Width = 94
SpecialEffect = 1
wizeffect = 1
Name = "Shape1"
boxbase.Shape1shapewizstyle.vcxwizshape^Width = 94
Height = 43
BackStyle = 0
BorderWidth = 0
SpecialEffect = 2
Name = "boxbase"
	container!Arial, 1, 9, 6, 15, 12, 15, 3, 0
boxlogicPixelsClass2boxbaseboxlogic�Top = 22
Left = 2
Height = 17
Width = 13
FontSize = 9
BackStyle = 1
Caption = ""
SpecialEffect = 0
TabIndex = 0
ColorSource = 0
Name = "Check1"
boxlogic.Check1checkboxcheckbox�Width = 88
Height = 43
Name = "boxlogic"
Shape1.Height = 43
Shape1.Left = 0
Shape1.Top = 0
Shape1.Width = 88
Shape1.Name = "Shape1"
Label1.Height = 15
Label1.Left = 3
Label1.Top = 2
Label1.Width = 49
Label1.Name = "Label1"
	containerwizstyle.vcx!Arial, 1, 9, 6, 15, 12, 15, 3, 0
boxolePixelsClass2boxbaseboxoleXTop = 23
Left = 3
Height = 100
Width = 150
TabIndex = 0
Name = "Oleboundcontrol1"
boxole.Oleboundcontrol1oleboundcontrololeboundcontrol�Width = 156
Height = 125
Name = "boxole"
Shape1.Height = 125
Shape1.Left = 0
Shape1.Top = 0
Shape1.Width = 156
Shape1.Name = "Shape1"
Label1.Height = 15
Label1.Left = 3
Label1.Top = 2
Label1.Width = 49
Label1.Name = "Label1"
	containerwizstyle.vcx!Arial, 1, 9, 6, 15, 12, 15, 3, 0
boxmemoPixelsClass2boxbaseboxmemo�FontSize = 9
BackColor = 255,255,255
BorderStyle = 0
Height = 50
Left = 3
ScrollBars = 0
SpecialEffect = 1
TabIndex = 0
Top = 23
Width = 241
ColorSource = 0
Name = "Edit1"
boxmemo.Edit1editboxeditbox�Width = 247
Height = 75
Name = "boxmemo"
Shape1.Height = 75
Shape1.Left = 0
Shape1.Top = 0
Shape1.Width = 246
Shape1.Name = "Shape1"
Label1.Height = 15
Label1.Left = 3
Label1.Top = 2
Label1.Width = 49
Label1.Name = "Label1"
	containerwizstyle.vcx!Arial, 1, 9, 6, 15, 12, 15, 3, 0
boxfieldPixelsClass2boxbaseboxfield�FontSize = 9
BackColor = 255,255,255
BackStyle = 1
BorderStyle = 0
Height = 18
Left = 3
SpecialEffect = 1
TabIndex = 0
Top = 23
Width = 88
SelectedBackColor = 128,128,128
ColorSource = 0
Name = "Text1"
boxfield.Text1textboxtextbox�Width = 94
Height = 43
Name = "boxfield"
Shape1.Height = 43
Shape1.Left = 0
Shape1.Top = 0
Shape1.Width = 94
Shape1.Name = "Shape1"
Label1.Height = 15
Label1.Left = 3
Label1.Top = 2
Label1.Width = 49
Label1.Name = "Label1"
	containerwizstyle.vcx	container^�� EEK&%����U#�����%��������%��C�
��K�
T�C��a��T��a���%��9����|�T�9�����T��a����T��C�
searchform�N��
��C����
��C����%��
�����
T�C��-���%��
�����T�9������%�������t,���	���U

LVISCHANGELSTATECHANGEOSEARCHDLOGTHISFORM
SHOWWINDOWVISIBLEWINDOWSTATESHOWREFRESHNAMEClick,��1�C��A1��AA�����A��AA�A2)EAWidth = 184
Height = 34
SpecialEffect = 0
Name = "fancybase"
xtbtnsss = 0
previewinit = .T.
usedataenv = .T.
view	containerNDPROC
f�&��!�[b��q�!9����/4�<�`u���!{wizstyle.vcx
	SET FIELDS ON
ENDIF

SET REFRESH TO THIrTop = 43
Left = 5
Height = 1
Width = 568
BackColor = 255,255,255
BorderColor = 255,255,255
Name = "Shape2"
jP�ׅembossedform.k��V�b��j�l�P���^�%���%p�Shape2(��t	P����F0��t	P����F8��t	P����F@�shape����^Ã=l��V���t$��u�l�P�l���ti�F$�shape����t0V�l�P�����t�����F�����F�FPrTop = 42
Left = 5
Height = 1
Width = 568
BackColor = 128,128,128
BorderColor = 128,128,128
Name = "Shape1"
l���embossedform.�t$;�v���t�Ѓ�;�w�_^�V�	�t��l�Shape1hܦhئ�1����t��
�t$���^[�j
�
shapeu?�=xwt$�5pw��;5xwr���t�Ѓ�;5xws�hԦ^Alignment = 0
Height = 24
Left = 132
TabIndex = 3
Top = 192
Width = 218
Name = "Text1"
labelJArial, 1, 8, 5, 14, 11, 14, 3, 0
MS Sans Serif, 1, 8, 6, 13, 11, 12, 2, 0
PixelsClass2
chiselbasechisellogic�Top = 0
Left = 53
Height = 15
Width = 15
FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = ""
SpecialEffect = 0
TabIndex = 0
Name = "Check1"
chisellogic.Check1checkboxcheckbox�Width = 94
Height = 18
Name = "chisellogic"
Shape1.Height = 2
Shape1.Left = 53
Shape1.Top = 15
Shape1.Width = 13
Shape1.Name = "Shape1"
Label1.Height = 13
Label1.Left = 0
Label1.Top = 1
Label1.Width = 45
Label1.Name = "Label1"
	containerwizstyle.vcx!Arial, 1, 8, 5, 14, 11, 14, 3, 0
	chiselolePixelsClass2
chiselbase	chiseloleXTop = 0
Left = 46
Height = 100
Width = 150
TabIndex = 0
Name = "Oleboundcontrol1"
	chiselole.Oleboundcontrol1oleboundcontrololeboundcontrol	containerwizstyle.vcx
chiselmemoform	WITH EVAL(m.cDataEnvRef)
		* Check for relation
	�Width = 200
Height = 106
Name = "chiselole"
Shape1.Height = 2
Shape1.Left = 46
Shape1.Top = 103
Shape1.Width = 150
Shape1.Name = "Shape1"
Label1.Height = 13
Label1.Left = 0
Label1.Top = 3
Label1.Width = 45
Label1.Name = "Label1"
BArial, 1, 8, 5, 14, 11, 14, 3, 0
Arial, 0, 8, 5, 14, 11, 20, 3, 0
PixelsClass2
chiselbase
chiselmemoFontBold = .F.
FontName = "Arial"
FontSize = 8
BackColor = 192,192,192
BackStyle = 0
Height = 48
Left = 46
SpecialEffect = 0
TabIndex = 0
Top = -1
Width = 150
DisabledForeColor = 0,0,128
SelectedForeColor = 255,255,255
SelectedBackColor = 0,0,0
Name = "Edit1"

chiselmemo.Edit1shape��jjj����jjj����SV��h���AutoSize = .T.
FontBold = .T.
FontName = "Times New Roman"
FontSize = 20
BackStyle = 0
Caption = "Label1"
Height = 34
Left = 12
Top = 8
Width = 83
Name = "Label1"
�3���jembossedform.��]_^[��\�3�]_^[��\ø���]_^[��\�Label1E�Ј�$h�D$T�R����D$8�E���h<��������label$4�D$4�8uI�L$4�D$4�8t����+�鍄$h;�r��label ��3ɋD$0�8u ��L$0�D$0�8uA�L$0�D$0�8tbaseformISE
	THIS.UseDataEnv = .F.
ENDCASE

IF THIS.�wizlayout Class reference for layout object.
wizfield Class reference for a field object.
wizmemo Class reference for a memo field object.
wizlogic Class reference for a logic field object.
wizole Class reference for a general field object.
wizmaxcharfld Max width of character field before using editbox memo object.
wizlblsuffix Character expression added to the end of each label (e.g., :).
wizlblcap Label capitalization (proper, normal, upper or lower).
wizformstretch Whether to shrink/expand form (height only) based on number of fields selected.
wizlbldefwid Whether to use fixed label width for consistent look and alignment of fields on form.
wiztitle Class reference for title object (label).
wizuser For use by user.
wizgrid Class reference for grid object with 1-Many forms.
wizverify Whether to verify class objects (use for testing but can improve performance if set .F.).
wizbuttons Class reference for button set object.
wizbtnpos Button position centering (0-none, 1-hori, 2-vert, 3-both). By default, buttons are centered in footer. You can use these settings for better control over how buttons are placed, especially if buttons are vertically laid out.
wizcodestyle Whether to use code style or button style.
wizbtnlayout Button position object (class) if one used for unique placement of buttons. 
wizcaptions Whether to use DBC long name label captions.
wizbuffering Data environment table buffering setting.
wizgridform Whether to use a separate form for grid object.
wizlabel Class reference for label object.
wizlblspace Space between label and field.
wizcboxlbl Whether to use the checkbox as the label.
wizpages Allows use of pages for overflow of fields (0 - none, 1 - single column, 2 - multi column).
wizpagestyle
VISIBLE = .T.DataSession = 1
ScaleMode = 3
Height = 320
Width = 580
DoCreate = .T.
AutoCenter = .T.
Caption = "Form1"
Enabled = .T.
wizlayout = 
wizfield = 
wizmemo = 
wizlogic = 0
wizole = 
wizmaxcharfld = 0
wizlblsuffix = 0
wizlblcap = 0
wizformstretch = 0
wizlbldefwid = 0
wiztitle = 
wizuser = 0
wizgrid = 
wizverify = 0
wizbuttons = 0
wizbtnpos = 0
wizcodestyle = 0
wizbtnlayout = 0
wizcaptions = .T.
wizbuffering = 5
wizlabel = 
wizlblspace = 0
wizpages = 1
wizpagestyle = 
Name = "baseform"
ogicuttons
* for appropriate table environments.
formtyle.vcx
	SET FIELDS ON
ENDIF

SET REFRESH TO THI�Top = 54
Left = 4
Width = 571
Height = 205
TabIndex = 0
Name = "Layoutsty"
shape1.Top = 0
shape1.Left = 0
shape1.Height = 205
shape1.Width = 570
shape1.Name = "shape1"
shape2.Top = 7
shape2.Left = 6
shape2.Height = 13
shape2.Width = 37
shape2.Name = "shape2"
shape3.Top = 22
shape3.Left = 6
shape3.Height = 13
shape3.Width = 37
shape3.Name = "shape3"
shape4.Top = 7
shape4.Left = 260
shape4.Height = 13
shape4.Width = 37
shape4.Name = "shape4"
;�r��ЈD$d�D$d;������E�Ј�$hembossedform.���$���	������$����$��@�@�@�@	Layoutsty��P��DAh=j��8���P�u��FA�e�`Dž<��	container�u�DFA�jh��@�8DA�h��8���P�5wizstyle.vcxjh��@�8DA�jh��@�8DA��j�=�@	layoutsty��t�D$43ɊH�م�uF�D$0�<
t<
u
�L$08A�v����ScaleMode = 3
DoCreate = .T.
wizlayout = layoutsty
wizfield = embossedfield
wizmemo = embossedmemo
wizlogic = embossedlogic
wizole = embossedole
wizmaxcharfld = 45
wizlblsuffix = (":")
wizlblcap = proper
wizformstretch = .T.
wizlbldefwid = .T.
wiztitle = Label1
wizuser = 0
wizgrid = grid1
wizverify = .T.
wizbtnpos = 0
wizcodestyle = .T.
wizcboxlbl = .T.
wizlabel = embossedlabel
Name = "embossedform"
t3ɋT$4�H3��BformP��DAj����P�8DA3��o�$�@�����f������3��@wizstyle.vcx@����P�n������������	�����!Arial, 0, 9, 5, 15, 12, 13, 3, 0
�@����P�؋�����
shadowformFA�u�XFA3��sh��@h����Ph��@h��@Pixels@����E�}����E�P��FAj�5-Aj�u�ustylebmp\form4.bmp��$��D$@�T$4��J��$��L$stylebmp\form4.bmpR�Pi���D$H������|$8��h�L$0tClass�L$�l$`�9D$`}�|$`+��D$`���D$`j��$t50v�D$0�D$d9D$4v�D$4��$h9D$0����$|�D$<�T$0�baseform��$pR�l����$x�D$d��Q�l���D$`���|$8t�
shadowform�t�]_^[��\�$h�L$d�D$0�L$4�D$@�AutoSize = .T.
FontBold = .T.
FontSize = 14
BackStyle = 0
Caption = "Label1"
Height = 25
Left = 24
Top = 12
Width = 64
Name = "Label1"
@�D$e�T$4Q��$xPRQ�
����$��L$H
shadowform.���h<��������]_^[��\�h<��������]_^[�Label1|$<���D$0�D$4�D$8�����|$@to�D$0�D$4�D$8labelL9D$Ps�D$P�L$@��ЈDe��$f9D$L����D$L�L$<��labelH2��tf�l$t�D$4�<
t<
u�����+|$4��$j+|?Top = 264
Left = 2
Height = 2
Width = 584
Name = "Shape2"
c<
t_��D$4�P�օ�t�D$4��D$4�D$4�P�֍L$���Q��P
shadowform.���Q��P�D$8Pjh�H2��tf�l$t�D$0�Shape2shapeshape>Top = 48
Left = 0
Height = 2
Width = 584
Name = "Shape1"

shadowform.Shape1"@@.reloc��"shape@�.pntexeP�@�shape$4uS�|$@������D$P��D$�D$�D$P�֍L$���Q��P��Top = 54
Left = 7
Width = 564
Height = 205
TabIndex = 0
odimensions = Shape1
Name = "Layoutsty"
shape1.Top = 0
shape1.Left = 0
shape1.Height = 205
shape1.Width = 563
shape1.Name = "shape1"
shape2.Top = 7
shape2.Left = 16
shape2.Height = 13
shape2.Width = 37
shape2.Name = "shape2"
shape3.Top = 22
shape3.Left = 16
shape3.Height = 13
shape3.Width = 37
shape3.Name = "shape3"
shape4.Top = 7
shape4.Left = 252
shape4.Height = 13
shape4.Width = 37
shape4.Name = "shape4"
�l$uʊD$
shadowform.�lml�mlIllIllllIIlIlIllIlIllll	LayoutstyHHHHHHHHHHHHHH	container�������풒��������BBBIBwizstyle.vcxBm��������mmmmmmlmmlmm��m���m�mmmmmmmmm�	layoutstymmmmm
























BB�ScaleMode = 3
DoCreate = .T.
ColorSource = 0
BackColor = 192,192,192
wizlayout = layoutsty
wizfield = shadowfield
wizmemo = shadowmemo
wizlogic = shadowlogic
wizole = shadowole
wizmaxcharfld = 45
wizlblsuffix = (":")
wizlblcap = proper
wizformstretch = .T.
wizlbldefwid = .T.
wiztitle = Label1
wizuser = 0
wizgrid = grid1
wizverify = .T.
wizbtnpos = 0
wizcodestyle = .T.
Name = "shadowform"
���mlm���m�lmlmm�f�����m��lformS.EditDisForeColor)
		m.oControlParent.Controls[m.iwizstyle.vcx.i].ForeColor = IIF(THIS.EditMode,THIS.EditF!Arial, 0, 9, 5, 15, 12, 13, 3, 0
OX_YES
							m.lOverw
chiselformLD(m.nFld))
						m.lHadMessage = .T.
						Pixels			LOOP					
					ENDIF
					IF OLDVAL(FIELD(m.nstylebmp\form2.bmp(FIELD(m.nFld)) = "G"	&&skip for Generstylebmp\form2.bmpMЙ�{�MClass�M����M���}5M(����MX����baseform�����MȘ���M
chiselformM���<	�M����AutoSize = .T.
FontSize = 20
BackStyle = 0
Caption = "Label1"
Height = 35
Left = 19
Top = 10
Width = 83
ForeColor = 255,255,255
BackColor = 0,0,0
ZOrderSet = 3
Name = "Label1"
��M�����M�����
chiselform.��M�����MLabel1�Mx��*�Mؗ�+labelM����MH��(�labelP����Mh��&�M�Top = 0
Left = 0
Height = 50
Width = 580
FillStyle = 0
FillColor = 0,0,0
BorderColor = 0,0,0
ZOrderSet = 2
Name = "Shape3"
��M����M��
chiselform.tly DBCs

FOR i = 1 TO m.nTablesUsed

	SEShape3D(aTablesUsed)

* Can wrap everything in transacshape""
m.lSuccess = .T.
m.nOldArea = SELECT()
m.nTabshapeDIMENSION aTablesUsed[1]
DIMENSION aErrors[1]
m.cNTop = 270
Left = 0
Height = 2
Width = 584
ZOrderSet = 1
Name = "Shape2"
d,i,nOldArea,lSuccess,lInDBC,lOverwrite,lH
chiselform.#DEFINE E_PROMPT_LOC	 	"Error: "
#DEFINE MSGShape2ur edits?"
#DEFINE	E_NOFORCE_LOC		"Could not forcshape����M����Mshape�M���M0��-�Top = 53
Left = 2
Width = 573
Height = 213
TabIndex = 0
ZOrderSet = 0
odimensions = Shape1
Name = "Layoutsty"
shape1.Top = 0
shape1.Left = 0
shape1.Height = 212
shape1.Width = 572
shape1.Name = "shape1"
shape2.Top = 7
shape2.Left = 16
shape2.Name = "shape2"
shape3.Top = 22
shape3.Left = 16
shape3.Name = "shape3"
shape4.Top = 7
shape4.Left = 255
shape4.Name = "shape4"
MȒ���Mx|�c�
chiselform.t�M ��!�M	LayoutstyMx��r�M���s	containerM0���MH���wizstyle.vcx�
M���M	layoutstyM���	�MА�
formC)
							lShowedMess = .T.
						ENDIF
					ENDIwizstyle.vcxAND !m.lShowedMess
							=MESSAGEBOX(C_NOU!Arial, 0, 9, 5, 15, 12, 13, 3, 0
ERY(.Alias)
						ENDIboxform					IF THIS.oldSetDelete = "OFF" AND ATC("?",CURoptiongroupOptiongroup1gridaddform.commandgroupcommandgroup
Commandgroup1gridaddform.textboxlabellabelLabel3gridaddform.wFontItalic = .T.
BackStyle = 0
Caption = "Label3"
Height = 16
Left = 132
Top = 168
Width = 145
Name = "Label3"
labellabelLabel4gridaddform.
standardlabel������Q�E��ڋ�Y
��H�>���j�Y���U�)MS Sans Serif, 1, 8, 6, 13, 11, 12, 2, 0
�	�M��U�Q�E��checkbox
�A"f�EċQ&f�Uƃy2t�M��y.t�M��y*t�M�j��Height = 16
Width = 68
FontName = "MS Sans Serif"
FontSize = 9
Alignment = 0
BackStyle = 0
Caption = "Check1"
SpecialEffect = 1
Name = "standardlogic"
U܋K
����E�A"3��U
standardlogic���A.��f�U���m_^[��]���=t���nmcheckbox�������E��E��X����t�M��7��t�M�1����t�M������'����t�M����������t�M�j�E�j��Class�m����]Ã�SVW3ۍD$Uj��uj��tjjPS�P������Width = 204
Height = 55
Name = "shadowmemo"
Shape1.Top = 7
Shape1.Left = 52
Shape1.Height = 48
Shape1.Width = 152
Shape1.Name = "Shape1"
Label1.Height = 16
Label1.Left = 0
Label1.Top = 4
Label1.Width = 41
Label1.Name = "Label1"
UTH
shadowmemo.1t = 0
Height = 61
Width = 580
FillStyle =KWidth = 513
Height = 29
wizbmppath = (HOME()+"WIZARDS\WIZBMPS\")
Name = "picbtns"
cmdPrev.Top = 4
cmdPrev.Left = 51
cmdPrev.Width = 50
cmdPrev.Picture = (HOME()+"WIZARDS\WIZBMPS\WZBACK.BMP")
cmdPrev.Caption = ""
cmdPrev.ToolTipText = "Previous record"
cmdPrev.Name = "cmdPrev"
cmdNext.Top = 4
cmdNext.Left = 102
cmdNext.Width = 50
cmdNext.Picture = (HOME()+"WIZARDS\WIZBMPS\WZNEXT.BMP")
cmdNext.Caption = ""
cmdNext.ToolTipText = "Next record"
cmdNext.ColorSource = 0
cmdNext.Name = "cmdNext"
cmdTop.Top = 4
cmdTop.Left = 0
cmdTop.Width = 50
cmdTop.Picture = (HOME()+"WIZARDS\WIZBMPS\WZTOP.BMP")
cmdTop.Caption = ""
cmdTop.ToolTipText = "Top record"
cmdTop.Name = "cmdTop"
cmdEnd.Top = 4
cmdEnd.Left = 153
cmdEnd.Width = 50
cmdEnd.Picture = (HOME()+"WIZARDS\WIZBMPS\WZEND.BMP")
cmdEnd.Caption = ""
cmdEnd.ToolTipText = "Bottom record"
cmdEnd.Name = "cmdEnd"
cmdFind.Top = 4
cmdFind.Left = 204
cmdFind.Width = 50
cmdFind.Picture = (HOME()+"WIZARDS\WIZBMPS\WZLOCATE.BMP")
cmdFind.Caption = ""
cmdFind.ToolTipText = "Find records"
cmdFind.Name = "cmdFind"
cmdPrint.Top = 4
cmdPrint.Left = 255
cmdPrint.Width = 50
cmdPrint.Picture = (HOME()+"WIZARDS\WIZBMPS\WZPRINT.BMP")
cmdPrint.Caption = ""
cmdPrint.ToolTipText = "Print report"
cmdPrint.Name = "cmdPrint"
cmdExit.Top = 4
cmdExit.Left = 459
cmdExit.Width = 50
cmdExit.Picture = (HOME()+"WIZARDS\WIZBMPS\WZCLOSE.BMP")
cmdExit.Caption = ""
cmdExit.ToolTipText = "Exit form"
cmdExit.Name = "cmdExit"
cmdAdd.Top = 4
cmdAdd.Left = 306
cmdAdd.Width = 50
cmdAdd.Picture = (HOME()+"WIZARDS\WIZBMPS\WZNEW.BMP")
cmdAdd.Caption = ""
cmdAdd.ToolTipText = "Add / Save record"
cmdAdd.Name = "cmdAdd"
cmdDelete.Top = 4
cmdDelete.Left = 408
cmdDelete.Width = 50
cmdDelete.Picture = (HOME()+"WIZARDS\WIZBMPS\WZDELETE.BMP")
cmdDelete.Caption = ""
cmdDelete.ToolTipText = "Delete record"
cmdDelete.Name = "cmdDelete"
cmdEdit.Top = 4
cmdEdit.Left = 357
cmdEdit.Width = 50
cmdEdit.Picture = (HOME()+"WIZARDS\WIZBMPS\WZEDIT.BMP")
cmdEdit.Caption = ""
cmdEdit.ToolTipText = "Edit / Revert record"
cmdEdit.Name = "cmdEdit"
t file <<m.filname>> could not be found
    Pixelsin the
						* BeforeOpenTables event of the DatawAutoSize = .T.
BackStyle = 0
Caption = "Key field:"
Height = 18
Left = 48
Top = 168
Width = 60
Name = "Label4"
labellabelLabel5gridaddform.stylebmp\form5.bmpion
						* you can place a SET DELETstylebmp\form5.bmpall
						* records will be brought ostylebmp\logic1.bmpt踷��D$����Y��D$��stylebmp\logic1.bmp���D$t
����
,t�C����Pixels������tj�����������tj����������t
standardlogict
����]_^[��Ët$�D����|$�P����l$)MS Sans Serif, 1, 9, 6, 13, 11, 12, 2, 0
��A��j��!Arial, 0, 9, 5, 15, 12, 13, 3, 0
 setting.
wizgridform standardformr to use DBC long name label captions.
wizbPixelsass) if one used for unique placement of buttons. stylebmp\form1.bmptton style.
wizbtnlayout Button posit�AutoSize = .T.
BackStyle = 0
Caption = "B: Enter key value linking parent and child records:"
Height = 18
Left = 24
Top = 132
Width = 325
Name = "Label5"
�ScaleMode = 3
DoCreate = .T.
ColorSource = 0
BackColor = 192,192,192
wizlayout = layoutsty
wizfield = chiselfield
wizmemo = chiselmemo
wizlogic = chisellogic
wizole = chiselole
wizmaxcharfld = 45
wizlblsuffix = (":")
wizlblcap = proper
wizformstretch = .T.
wizlbldefwid = .T.
wiztitle = Label1
wizuser = 0
wizgrid = grid1
wizverify = .T.
wizbtnpos = 0
wizcodestyle = .T.
Name = "chiselform"
M����
gridaddrecPixelsClass1custom
gridaddrecaaddoption
keyvalue
keyfield
childprimarykey
updatableparentkey
nosendupdates
*runaddform 
.Height = 22
Width = 39
Name = "gridaddrec"
customDArial, 1, 10, 6, 16, 13, 15, 3, 0
Arial, 3, 10, 6, 16, 13, 17, 3, 0
gridaddformPixelsClass9formeditboxeditbox�Width = 198
Height = 52
Name = "chiselmemo"
Shape1.Height = 2
Shape1.Left = 46
Shape1.Top = 50
Shape1.Width = 150
Shape1.Name = "Shape1"
Label1.Height = 13
Label1.Left = 0
Label1.Top = 3
Label1.Width = 45
Label1.Name = "Label1"
!Arial, 0, 8, 5, 14, 11, 12, 3, 0
 "Edit1"

Name = "Sha
embossedfieldTabIndex = 0
Top = 2
Width = 150
ColorSoPixelsme = "Arial"
FontSize = 8
Height = 48
Left = 48stylebmp\txtbox3.bmp128,128
Name = "Shape1"
ther to vestylebmp\txtbox3.bmpidth = 0
FillStyle = 0
BackColor =Classox
Left = 51
Height = 20
Width = 97
BackStyle =1ditboxase.EFILTER
CHANGEDFILTERDestroy,��Inittextboxabel1.Width = 41
Label1.Name = "Label1"
UTH
embossedfield1"
Label1.Height = 16
Label1.Left = 0
La�FontBold = .F.
FontName = "Arial"
FontSize = 8
Height = 22
Width = 113
ColorSource = 0
DisabledBackColor = 255,255,255
Name = "embossedfield"
1.Height = 48
Shape1.Width = 152
labelu���_��_^[�VW�����u*�����{H����FontBold = .F.
FontName = "Arial"
FontSize = 8
BackStyle = 0
Caption = "Label1"
Height = 13
Width = 43
Name = "embossedlabel"
j���6��uF;�|��D$��"t�d����D$�T$P�O�e#�
embossedlabel�@�D$�9��\$D��tL��;������|$tlabel, 0, 8, 5, 14, 11, 12, 3, 0
3�;�D$�T$P�O1abelV��W���u3�_^[Ë��+�����Gt!�ˍs��Classu���_��_^[�VW�����u*�����{H���stylebmp\label3.bmp�����+���I�ȃ��D$SV��W��T$P�~stylebmp\label3.bmptName = "Arial"
FontSize = 8
BackStPixelson = "Label1"
Height = 13
Width = 43
Name = "em
embossedlabel��uF;�|��D$��"t�d����D$�T$P�O�e#�!Arial, 0, 8, 5, 14, 11, 12, 3, 0
��;������|$t!Arial, 0, 8, 5, 14, 11, 12, 3, 0
idth = 580
FillStyle =
embossedlogic5, 14, 11, 12, 3, 0
 "Edit1"

Name = "ShaPixelsedfieldTabIndex = 0
Top = 2
Width = 150
ColorSostylebmp\logic3.bmp
FontSize = 8
Height = 48
Left = 48stylebmp\logic3.bmpp128,128
Name = "Shape1"
ther to veClassbmp\txtbox3.bmpidth = 0
FillStyle = 0
BackColor =1lassox
Left = 51
Height = 20
Width = 97
BackStyle =checkboxse.EFILTER
CHANGEDFILTERDestroy,��Init
embossedlogicWidth = 41
Label1.Name = "Label1"
UTH�Height = 15
Width = 72
FontBold = .F.
FontName = "Arial"
FontSize = 8
BackStyle = 0
Caption = "Check1"
ColorSource = 0
DisabledBackColor = 255,255,255
Name = "embossedlogic"
checkboxfield��%x!Arial, 0, 8, 5, 14, 11, 12, 3, 0
idth = 580
FillStyle =embossedmemoc5, 14, 11, 12, 3, 0
 "Edit1"

Name = "ShaPixelsedfieldTabIndex = 0
Top = 2
Width = 150
ColorSostylebmp\memo3.bmpp
FontSize = 8
Height = 48
Left = 48stylebmp\memo3.bmppp128,128
Name = "Shape1"
ther to veClassbmp\txtbox3.bmpidth = 0
FillStyle = 0
BackColor =1lassox
Left = 51
Height = 20
Width = 97
BackStyle =editboxxse.EFILTER
CHANGEDFILTERDestroy,��InitembossedmemocWidth = 41
Label1.Name = "Label1"
UTH�FontBold = .F.
FontName = "Arial"
FontSize = 8
Alignment = 0
Height = 50
Width = 150
ColorSource = 0
Name = "embossedmemo"
bledBackColor = 255,255,255
Name = "embossedlogic"
oleboundcontrol��/�u�V�Y��}��M��j	�����3�OHeight = 100
Width = 150
Visible = .T.
Sizable = .T.
Name = "embossedole"
�r�M̃��t�E��ŰM��^6��E���x���Q�embossedole4���x����M��2���x���3�Q�M�����U܋u���Eoleboundcontrol
��M��8��E�t
��M��8��E��Mj1���E��I3Ё�3ЋE��t��x�������U���x�����N
Class�����*��M��t�c���E��UP�u��訬�_^��]��SB��stylebmp\ole3.bmp�[���
���
�郹������D$stylebmp\ole3.bmp��Ëkj�K������3����B��Pixels$��oj�*�΋��������+��N�эQ����>��ݛ�embossedole���7�����?;����������tL�
checkboxeviewMode = IIF(TYPE("THIS.PreviewMode")#"L",.F.�Width = 94
Height = 18
Name = "shadowlogic"
Shape1.Top = 7
Shape1.Left = 58
Shape1.Height = 11
Shape1.Width = 11
Shape1.Name = "Shape1"
Label1.Height = 16
Label1.Left = 0
Label1.Top = 0
Label1.Width = 41
Label1.Name = "Label1"
e Form W	container
THIS.ParentKey = ""
THIS.ViewType = 3
THIS.wizstyle.vcx
* This routine sets the member variables
	containerwizstyle.vcxBArial, 1, 8, 5, 14, 11, 14, 3, 0
Arial, 0, 8, 5, 14, 11, 20, 3, 0
chiselfieldPixelsClass2
chiselbasechiselfield"FontBold = .F.
FontName = "Arial"
FontSize = 8
BackColor = 192,192,192
BackStyle = 0
BorderStyle = 0
Height = 17
Left = 46
SpecialEffect = 1
TabIndex = 0
Top = 3
Width = 97
DisabledForeColor = 0,0,128
SelectedForeColor = 255,255,255
SelectedBackColor = 0,0,0
Name = "Text1"
Class, 0, 9, 5, 15, 12, 13, 3, 0
- Note: Parameterized v5aseformourceType",.Alias)#3
						* Check if we need tbaseformCURSOR"
				WITH EVAL("."+aMems[m.i])
					IF boxformp\form.bmpMem
			IF UPPER(EVAL("."+aMems[m.i]+".yTop = 261
Left = 0
Height = 61
Width = 580
FillStyle = 0
BackColor = 0,0,255
FillColor = 0,0,255
Name = "Shape2"
stylebmp\form.bmp	ENDIF
		ENDFOR
		
		* Check for Vieboxform.H EVAL(m.cDataEnvRef)
		* Check for relation
	Shape2rmISE
	THIS.UseDataEnv = .F.
ENDCASE

IF THIS.shapemn, 2 - multi column).
wizpagestyle
VISIBLE = .T.shapes use of pages for overflow of fields (0 - none, 1 �AutoSize = .T.
FontName = "Arial"
FontSize = 20
BackStyle = 0
Caption = "Label1"
Height = 35
Left = 21
Top = 17
Width = 83
ForeColor = 255,255,255
BackColor = 255,255,255
Name = "Label1"
xlbl Whether to use the checkbox as the label.
wboxform.ether to use DBC long name label captions.
wizbLabel1ass) if one used for unique placement of buttons. labele style or button style.
wizbtnlayout Button positlabeluttons are vertically laid out.
wizcodestyle WhethwTop = 0
Left = 0
Height = 61
Width = 580
FillStyle = 0
BackColor = 0,0,255
FillColor = 0,0,255
Name = "Shape1"
sboxform.n position centering (0-none, 1-hori, 2-vert, 3-Shape1wizbuttons Class reference for button set object.
shapejects (use for testing but can improve performance 
cboOperators2comboboxcombobox�AutoSize = .T.
ButtonCount = 2
BackStyle = 0
BorderStyle = 0
Value = 1.00
ControlSource = "nBtnAction"
Height = 39
Left = 120
Top = 248
Width = 163
Name = "Commandgroup1"
Command1.Top = 5
Command1.Left = 5
Command1.Height = 29
Command1.Width = 70
Command1.Caption = "Add"
Command1.TabIndex = 1
Command1.Name = "Command1"
Command2.Top = 5
Command2.Left = 88
Command2.Height = 29
Command2.Width = 70
Command2.Caption = "Cancel"
Command2.TabIndex = 2
Command2.Name = "Command2"
stylebmp\form1.bmprtically laid out.
wizcodestyle WhethClass for better control over how buttons are placed, esshape object with 1-Many forms.
wizverify Whether to vegridaddform.wizstyle.vcx
wizlogic Class reference for a logic field	containerield��%x2 default, buttons are centered in footer. You can use t�FontName = "MS Sans Serif"
FontSize = 8
Alignment = 3
Height = 22
SpecialEffect = 1
Width = 100
ColorSource = 0
Name = "standardfield"
 This routine sets the member variables
�� �]%����UCT������T����	aWizFList��T���C�����UTHIS
ROWSOURCETYPE	ROWSOURCEVALUELISTInit,��1�q2a)yPROCEDURE Init
LPARAMETERS cFldKey,cKeyValue,nBtnAction,nAddAction,lChildPrimaryKey,lUpdatableParentKey,lNoSendUpdates

IF PARAMETERS() # 7
	RETURN .F.
ENDIF

THIS.CommandGroup1.Value = 0
THIS.Label3.Caption = m.cFldKey
THIS.cKeyValue = m.cKeyValue

DO CASE
CASE m.lNoSendUpdates
	* Send Parent Updates
	THIS.Optiongroup1.Option1.Enabled = .F.
	THIS.Optiongroup1.Option3.Enabled = .F.
CASE !m.lUpdatableParentKey
	* Updatable parent key
	THIS.Optiongroup1.Option3.Enabled = .F.
ENDCASE

* Has a primary key
IF m.lChildPrimaryKey
	THIS.Optiongroup1.Option2.Enabled = .F.
ENDIF

DO CASE
CASE TYPE('THIS.cKeyValue') = "C"
	THIS.Text1.Value = ""
CASE ATC(TYPE('THIS.cKeyValue'),"NYIBF") # 0
	THIS.Text1.Value = 0
CASE ATC(TYPE('THIS.cKeyValue'),"DT") # 0
	THIS.Text1.Value = {//}
CASE TYPE('THIS.cKeyValue') = "L"
	THIS.Text1.Value = .T.
ENDCASE

ENDPROC
�PROCEDURE InteractiveChange
DO CASE
CASE THIS.Value = 2
	THISFORM.Text1.Value = THISFORM.cKeyValue
CASE TYPE('THISFORM.cKeyValue') = "C"
	THISFORM.Text1.Value = ""
CASE ATC(TYPE('THISFORM.cKeyValue'),"NYIBF") # 0
	THISFORM.Text1.Value = 0
CASE ATC(TYPE('THISFORM.cKeyValue'),"DT") # 0
	THISFORM.Text1.Value = {//}
CASE TYPE('THISFORM.cKeyValue') = "L"
	THISFORM.Text1.Value = .T.
ENDCASE

THISFORM.Text1.ReadOnly = (THIS.Value = 2)

ENDPROC
�PROCEDURE Click
cKeyValue = THIS.Parent.Text1.Value
nAddAction = THIS.Parent.OptionGroup1.Value
nBtnAction = THIS.Value
THISFORM.Release()
ENDPROC
textboxText1editboxase.EFILTER
CHANGEDFILTERDestroy,��Initeditbox
Left = 51
Height = 20
Width = 97
BackStyle =oleboundcontrol�������c�����g����1Height = 100
Width = 150
Name = "standardole"
�E��standardoleE�����T$V���T$�HNR��d���JR��oleboundcontrol����@�U���<VW�����������1��u�)����*�P�����Q�?�����x���4%Class�����xu5�@�=%�P�Z*�P�����Q�r9����stylebmp\ole1.bmp���C%�#*�PV�	i��������QV�h���stylebmp\ole1.bmp�1}��K����5%�R���U���V��������Pixels��^��]�VW�������ta��(�B��u�)���standardoleu*�@�=%�P�])�PV�{8����P�C>���labelLabel2<PROCEDURE runaddform
#DEFINE C_NOOBJ_LOC	"Failed to create the Add Record form class. Check or reinstall the WIZSTYLE.VCX file."

PRIVATE cFldKey,cKeyValue,nBtnAction,nAddAction,oGridAddForm 

IF TYPE("THIS.KeyField") # "C"
	THIS.KeyField = ""
ENDIF

cFldKey = THIS.KeyField
cKeyValue = THIS.KeyValue
nBtnAction = 1
nAddAction = 1

oGridAddForm = CREATE("gridaddform",m.cFldKey,m.cKeyValue,;
	m.nBtnAction,m.nAddAction,THIS.ChildPrimaryKey,THIS.UpdatableParentKey,THIS.NoSendUpdates)

IF TYPE("m.oGridAddForm") # "O"
	=MESSAGEBOX(C_NOOBJ_LOC)
	THIS.AddOption = 0
	RETURN
ENDIF

IF THIS.NoSendUpdates
	oGridAddForm.OptionGroup1.Value = 2
	oGridAddForm.Text1.Value = m.cKeyValue
ENDIF

oGridAddForm.Show()

THIS.AddOption = IIF(m.nBtnAction=1,m.nAddAction,0)
THIS.KeyValue = m.cKeyValue

ENDPROC
gridaddformchiselfield.Text1textboxtextbox�Width = 148
Height = 24
Name = "chiselfield"
Shape1.Height = 2
Shape1.Left = 46
Shape1.Top = 20
Shape1.Width = 97
Shape1.Name = "Shape1"
Label1.Height = 13
Label1.Left = 0
Label1.Top = 5
Label1.Width = 45
Label1.Name = "Label1"
	containerwizstyle.vcx!Arial, 0, 8, 5, 14, 11, 12, 3, 0

*
FUNCTION gensetupcshadowfield    ENDIF
   ENDIF
ENDFOR



*
* GENSEPixelsClass2
shadowbaseshadowfield	'������FontName = "Arial"
FontSize = 8
Height = 22
Left = 46
SpecialEffect = 1
TabIndex = 0
Top = 0
Width = 97
BackColor = 255,255,255
DisabledBackColor = 255,255,255
SelectedBackColor = 128,128,128
Name = "Text1"
�'��`�shadowfield.{N..	2
c{oText1��$jNmTgTjN���textbox	Q]
QxQjtextbox���	[�Y	����Width = 149
Height = 25
Name = "shadowfield"
Shape1.Top = 5
Shape1.Left = 51
Shape1.Height = 20
Shape1.Width = 97
Shape1.Name = "Shape1"
Label1.Height = 16
Label1.Left = 0
Label1.Top = 3
Label1.Width = 41
Label1.Name = "Label1"
-	container.�%�({Iq��=�,��MR���b�2@����.1�V�>*Ciw2!Arial, 1, 8, 5, 14, 11, 14, 3, 0
	shadowolePixelsClass3
shadowbase	shadowolegTop = 2
Left = 48
Height = 100
Width = 151
TabIndex = 0
ZOrderSet = 3
Name = "Oleboundcontrol1"
	shadowole.Oleboundcontrol1oleboundcontrololeboundcontrolOHeight = 100
Left = 48
Top = 2
Width = 151
ZOrderSet = 2
Name = "Shape2"
	shadowole.Shape2shapeshapeWidth = 207
Height = 111
Name = "shadowole"
Shape1.Height = 100
Shape1.Left = 54
Shape1.Top = 7
Shape1.Width = 150
Shape1.ZOrderSet = 0
Shape1.Name = "Shape1"
Label1.Height = 16
Label1.Left = 0
Label1.Top = 3
Label1.Width = 41
Label1.ZOrderSet = 1
Label1.Name = "Label1"
	containerwizstyle.vcxwizstyle.vcxod query
OTHERWISE

ENDCASE

RELEASE TH!Arial, 0, 8, 5, 14, 11, 12, 3, 0
Index = 4
cbofields2.N
shadowmemome = "cbooperators1"
txtexpr1.TabIndex = 3
tPixelsbaseame = "cbofields1"
cbooperators1.TabIndex = 2Classdex = 0
Name = "Label1"
ss1"
cbofields1.TabIndex2aption = "Label1"
Height = 16
Left = 0
Top = 3
Widt
shadowbase "Arial"
FontSize = 8
Alignment = 1
BackSty�PROCEDURE Destroy
LOCAL cFilterExpr
IF THIS.ChangedFilter
	IF EMPTY(THIS.SaveFilter)
		SET FILTER TO
	ELSE
		m.cFilterExpr = THIS.SaveFilter
		SET FILTER TO &cFilterExpr
	ENDIF
	IF RECCOUNT() # 0
		GO THIS.SaveRecord
	ENDIF
ENDIF

ENDPROC
PROCEDURE Init
IF !EMPTY(ALIAS())
	THIS.SaveRecord = RECNO()
	THIS.SaveFilter = SET("FILTER")
	THIS.ChangedFilter = .F.
ENDIF
ENDPROC
ttons
* for appropriate table environments.
�Top = 62
Left = 5
Width = 571
Height = 195
TabIndex = 0
Name = "Layoutsty"
shape1.Top = 0
shape1.Left = 0
shape1.Height = 194
shape1.Width = 570
shape1.Name = "shape1"
shape2.Top = 1
shape2.Left = 16
shape2.Height = 13
shape2.Width = 37
shape2.Name = "shape2"
shape3.Top = 13
shape3.Left = 16
shape3.Height = 13
shape3.Width = 37
shape3.Name = "shape3"
shape4.Top = 1
shape4.Left = 52
shape4.Height = 13
shape4.Width = 37
shape4.Name = "shape4"
use by user.
wizgrid Class referboxform. Class reference for a general field object.
wi	Layoutstyct.
wizlogic Class reference for a logic field	containerr a field object.
wizmemo Class reference for wizstyle.vcxass reference for layout object.
wizfield C	layoutstycuttons
* for appropriate table environments.
formlsgridDPROC
f�&��!�[b��q�!9����/4�<�`u���!{�� ��±%"k1�U�
H�
���������O�����G(�T�
��C�POINTv��G;(��.��T�
��C�����SET POINT TO &cSavePoint
%�C�
��
��?�SET FILTER TO &cGetExpr
-�%�C+��*�R��C�FNo records were found which meet your query. Please try another query.�x��T����a��B��T����-���K�-��������~�G(�-�T����-��2����<��U	THISVALUECGETEXPR
CSAVEPOINTTHISFORMSEARCHCLASS1
SEARCHEXPRPARENT
CHANGEDFILTERClick,��1�A�aa�a�!�A�!AA�AAAaA�Br1�)��� ��=K%W�	��UW%�C�������.�T���������"T�����C�����
��UTHIS
LISTITEMIDPARENTTXTEXPR2VALUEENABLED|b��C�Requals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between����T���C�����UTHISADDITEMVALUELISTInteractiveChange,��Init���1�aA!3"q2��f)�!Arial, 0, 9, 5, 15, 12, 13, 3, 0
ew button of the Form Wscrollgrid2 0

* These properties should not be used. PixelsET DELETED ON
THIS.oldReprocess = SET("REPROCESS"lPROCEDURE Init
THIS.RowSourceType = 5
THIS.RowSource = "aWizFList"
THIS.VALUE = THIS.LIST[1]

ENDPROC
XXXXXXXXXXXX�FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Left = 11
Style = 2
TabIndex = 4
Top = 117
Width = 141
Name = "cboFields2"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsearchclass.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
cboFields2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcomboboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcomboboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX{FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Left = 260
TabIndex = 3
Top = 25
Width = 176
Name = "txtExpr1"
XXXXX���AAAXXXXXXXXX===XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsearchclass.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXtxtExpr1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXtextboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXtextboxXX���AAAXXXXXXXXXXXX===XXXXXXXXXXXXXXXXXXXXXXXXXX�� ��=K%W�	��UW%�C�������.�T���������"T�����C�����
��UTHIS
LISTITEMIDPARENTTXTEXPR1VALUEENABLED|b��C�Requals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between����T���C�����UTHISADDITEMVALUELISTInteractiveChange,��Init���1�aA!3"q2��f)�qPROCEDURE InteractiveChange
IF INLIST(THIS.ListItemId,5,6)
	THIS.Parent.TxtExpr1.Value = ""
ENDIF
THIS.Parent.TxtExpr1.ENABLED = !INLIST(THIS.ListItemId,5,6)

ENDPROC
PROCEDURE Init
#DEFINE C_OPERATORS_LOC	"equals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between"
THIS.ADDITEM(C_OPERATORS_LOC)
THIS.VALUE = THIS.LIST[1]

ENDPROC
�FontName = "MS Sans Serif"
FontSize = 8
Alignment = 0
Height = 23
Left = 158
Style = 2
TabIndex = 2
Top = 25
Width = 96
Name = "cboOperators1"
searchclass.
cboOperators1combobox����������������combobox��� ��zc%W�e�U����7��
�������C�������
��C.�(�����������%%�CC�
����G�M�U�������C��
����"��C�C���D��������T������T����	aWizFList��T���C�����UI	AWIZFLISTTHIS
ROWSOURCETYPE	ROWSOURCEVALUELISTInit,��1rq���Q!!AA�q2�)��PROCEDURE Init
#DEFINE NUM_AFIELDS 16
LOCAL i
PUBLIC aWizFList
DIMENSION aWizFList[1]
=AFIELDS(aWizFList)
FOR m.i = FCOUNT() TO 1 STEP -1
	IF INLIST(aWizFList[m.i,2],"G","M","U")	&&Memo field
		=ADEL(aWizFList,m.i)
		DIMENSION aWizFList[MAX(1,ALEN(aWizFList,1)-1),NUM_AFIELDS]
	ENDIF
ENDFOR
THIS.RowSourceType = 5
THIS.RowSource = "aWizFList"
THIS.VALUE = THIS.LIST[1]

ENDPROC
��FontName = "MS Sans Serif"
FontSize = 8
ControlSource = ""
Height = 23
Left = 11
Style = 2
TabIndex = 1
Top = 25
Width = 141
Name = "cboFields1"
�����searchclass.
cboFields1��combobox���combobox�9remotedelimeter
*searchexpr 
*dataexpr 
*searchitem 
�Width = 452
Height = 160
BackStyle = 0
TabIndex = 1
BackColor = 192,192,192
remotedelimeter = (.F.)
Name = "searchclass"
tretch = .T.
wizlbldefwid = .T.
wiztitle = Label1
wiz	container = 3
DoCreate = .T.
ColorSource = 0
BackColo"Tahoma, 0, 9, 5, 14, 12, 17, 2, 0
TH
ENDIF

THIS.Edit	fancymemo						lShowedMess = .T.
						ENDIF
					ENDIPixelsle.vcxAND !m.lShowedMess
							=MESSAGEBOX(C_NOUClassorm if updates are made
						IF !CURSORGETPROP("S2rial, 0, 9, 5, 15, 12, 13, 3, 0
ERY(.Alias)
						ENDI	fancybase			IF THIS.oldSetDelete = "OFF" AND ATC("?",CUR	fancymemothe
						* BeforeOpenTables event of the Data�FontName = "Tahoma"
Height = 78
Left = 54
Top = 5
Width = 177
ForeColor = 0,0,0
DisabledForeColor = 0,0,0
IntegralHeight = .T.
Name = "Edit1"
						* you can place a SET DELET	fancymemo.rceType",.Alias)#3
						* Check if we need tEdit1ormCURSOR"
				WITH EVAL("."+aMems[m.i])
					IF editboxp\form.bmpMem
			IF UPPER(EVAL("."+aMems[m.i]+".editboxp\form.bmp	ENDIF
		ENDFOR
		
		* Check for VieFWidth = 240
Height = 90
Name = "fancymemo"
Label1.Name = "Label1"
r = 0,0,255
FillColor = 0,0,255
Name = "Shape2"
	containerSE
	THIS.UseDataEnv = .F.
ENDCASE

IF THIS.wizstyle.vcx multi column).
wizpagestyle
VISIBLE = .T.!Arial, 0, 9, 5, 15, 12, 13, 3, 0
eckbox as the label.
w
fancylogiclor = 255,255,255
BackColor = 255,255,255
NaPixelsion = "Label1"
Height = 35
Left = 21
Top = 17
Classize = .T.
FontName = "Arial"
FontSize = 20
BackS2oxform.ether to use DBC long name label captions.
wizbFWidth = 220
Height = 120
Name = "fancyole"
Label1.Name = "Label1"
NDSKW.EXE /SAGERUN:0	LayoutstyClass reference for a general field object.
wiformlsanelLink = .F.
RecordMark = .F.
RowHeight = 300
wizstyle.vcx = 0
Height = 339
Highlight = .F.
Highligstandardform. of character field before using editbox me	containerct.
wizlogic Class reference for a logic field	PROCEDURE Click
#DEFINE NORECSFOUND_LOC		"No records were found which meet your query. Please try another query."

DO CASE
CASE THIS.VALUE = 1		&&SET FILTER condition
	LOCAL cGetExpr,cSavePoint
	SET FILTER TO
	m.cSavePoint = SET("POINT")
	SET POINT TO "."
	m.cGetExpr = THISFORM.SearchClass1.SearchExpr()	
	SET POINT TO &cSavePoint
	IF !EMPTY(m.cGetExpr)
		SET FILTER TO &cGetExpr
		LOCATE
		* Check if no records found
		IF EOF()
			=MESSAGEBOX(NORECSFOUND_LOC)
			THIS.Parent.ChangedFilter = .T.
			RETURN
		ENDIF
		THIS.Parent.ChangedFilter = .F.		&&good query
	ELSE
		LOCATE
	ENDIF
CASE THIS.VALUE = 2  &&SET FILTER TO all
	SET FILTER TO
	LOCATE
	THIS.Parent.ChangedFilter = .F.			&&good query
OTHERWISE

ENDCASE

RELEASE THISFORM
ENDPROC
sitive.Value = 0
		m.cTmpExpr= "UPPER("+m.cTmp�� ����%�8�
�U@������%T�
��C����������%T�
��C��	��
������0T�
��C���
��
� OR �� AND 6��
H���.��C�
���C�
��	����T�
������C�
������T�
���
����C�
����	�T�
���
���2�.�T�
���
��
��
����B��
���U	CGETEXPR1	CGETEXPR2CJOINCGETEXPRTHIS
SEARCHITEM
CBOFIELDS1
CBOOPERATORS1TXTEXPR1
CBOFIELDS2
CBOOPERATORS2TXTEXPR2OPTGRPANDORVALUE��������
H����%�C�
��M�G�P�O�U���M�	B������
��C��1�!%�C�'Test'=�
�b�L����%�������T���"�
��"�����T���[�
��]������T���
����%�������"� T�
���UPPER(�
��)���B��
���%�C�
��N�F�I�Y�B���s�B�CCCC�
��,�g��Z����C�
��D�T�����B��{C�
��{}���}��2���	B�����U	CDATATYPECFLDEXPRCTMPEXPRTHISREMOTEDELIMETERCHKCASESENSITIVEVALUE������'��������	�
��D%�C�m.oFieldb�O�C�m.oOpb�O�C�m.oExprb�O����	B�����T�
��C�
�����T�
��C�
�����&%�C�
���C�
��
���
	����	B�����T�
��C�
��
����%%��
��C�����	��F� T�
���UPPER(�
��)���
H�W�����
��
���}�T�
���=����
��
�����T�
���<>����
��
�����T�
���>����
��
�����T�
���<����
��
��� �B��EMPTY(�
��)����
��
���Q�B��ISNULL(�
��)����
��L��u�T�
���=����
��
�����T�
��C�C�
�����
H�������
��T����*B��AT(�
��,TTOC(�
��))>0����
��D��1�*B��AT(�
��,DTOC(�
��))>0��%�C�
��N�F�I�Y�B�����2B��AT(�
��
,ALLTRIM(STR(�
��)))>0��2���$B��AT(�
��,�
��)>0���2���T�
�C�,�
������	��
�
�������(��
�
���
H������
��
�
��K�(T�	��
���C�
�C�,�
���\����
������(T�	��
���C�
�C�,�
��=��2���ZT�	��
���C�
�C�,�
��
���C�,�
��
�C�,�
��
���\���)T�	��
���C�
�C�
��	������
H�&�����
��
�����T�
����������(��
�
����T�
���
�C�
��	��%��
��
�
����T�
���
��,�����&B��INLIST(�
��,�
��)����
��
�	����%�C�	���'�
�	����T�	����C��	���%�C�	���L�
�	�����6B��BETWEEN(�
��,C��	�,C��	�)��2���	B������
H�����%�C�
��M�G�P�O�U�����	B������
��L����"%�C�
��
��
�b�L����R%�C�
��fFnN���
��<>	�#C�
��tTyY���
��<>	��x�T�
���!�
����B��
����2���T�
��C�
��
������%�C�
������	B�������B��
��
��
����UOFIELDOOPOEXPRCEXPR	CDATATYPECOPCFLDNAMECFLDEXPRCRETEXPRAEXPRS	NTOTEXPRSIVALUE
LISTITEMID	AWIZFLISTTHISCHKCASESENSITIVEDATAEXPR
<��U	AWIZFLIST
searchexpr,��dataexpr��
searchitem��Destroy���11RQ�����A�2�r�Q�B���A��AsA�R�����B4�qC�Abac�A�RA�aaaaa�a�Aa��A�A�Q!�AA�����Q�1���A�A�a���QaAAaaA�qAA�Aa��AA�Q�A!!aA�A��A��qA4q2)H$,E&=�DW�)�	fancybase) if one used for unique placement of buttons. 	container�
2(�oleboundcontrololeboundcontrolOleboundcontrol1fancyole.KTop = 12
Left = 60
Height = 100
Width = 145
Name = "Oleboundcontrol1"
Q����=���=�������N*�-�f�F4�
�fancyole������ȉ
�w�ȴ��=������=�\�����=�	fancybase=���=��������~
�����jj�6N$Top = 3
Left = 12
Width = 452
Height = 160
BorderWidth = 0
TabIndex = 1
Name = "Searchclass1"
cbofields1.TabIndex = 1
cbofields1.Name = "cbofields1"
cbooperators1.TabIndex = 2
cbooperators1.Name = "cbooperators1"
txtexpr1.TabIndex = 3
txtexpr1.Name = "txtexpr1"
cbofields2.TabIndex = 4
cbofields2.Name = "cbofields2"
cbooperators2.TabIndex = 5
cbooperators2.Name = "cbooperators2"
txtexpr2.TabIndex = 6
txtexpr2.Name = "txtexpr2"
optgrpandor.option1.Value = 1
optgrpandor.option1.Left = 5
optgrpandor.option1.Top = 5
optgrpandor.option1.Name = "option1"
optgrpandor.option2.Value = 0
optgrpandor.option2.Left = 5
optgrpandor.option2.Top = 23
optgrpandor.option2.Name = "option2"
optgrpandor.Height = 46
optgrpandor.Width = 58
optgrpandor.TabIndex = 7
optgrpandor.Name = "optgrpandor"
label1.Height = 16
label1.Left = 12
label1.Top = 7
label1.Width = 102
label1.Name = "label1"
label2.Height = 16
label2.Left = 158
label2.Top = 7
label2.Width = 93
label2.Name = "label2"
label3.Height = 16
label3.Left = 262
label3.Top = 7
label3.Width = 165
label3.Name = "label3"
label4.Height = 16
label4.Left = 12
label4.Top = 99
label4.Width = 102
label4.Name = "label4"
label5.Height = 16
label5.Left = 161
label5.Top = 99
label5.Width = 93
label5.Name = "label5"
label6.Height = 16
label6.Left = 262
label6.Top = 99
label6.Width = 165
label6.Name = "label6"
chkCaseSensitive.Top = 69
chkCaseSensitive.Left = 290
chkCaseSensitive.Height = 15
chkCaseSensitive.Width = 88
chkCaseSensitive.Name = "chkCaseSensitive"
nTables event of the Data�ScaleMode = 3
DoCreate = .T.
ColorSource = 0
BackColor = 192,192,192
wizlayout = layoutsty
wizfield = boxfield
wizmemo = boxmemo
wizlogic = boxlogic
wizole = boxole
wizmaxcharfld = 45
wizlblsuffix = (":")
wizlblcap = proper
wizformstretch = .T.
wizlbldefwid = .F.
wiztitle = Label1
wizuser = 0
wizgrid = grid1
wizverify = .T.
wizcodestyle = .T.
wizpages = 2
wizpagestyle = boxpages
Name = "boxform"
pagestyle = 
Name wizstyle.vcx
	SET FIELDS ON
ENDIF

SET REFRESH TO THI%Top = 6
Left = 9
Width = 561
Height = 253
TabIndex = 0
BackColor = 255,255,255
odimensions = Shape1
Name = "Layoutsty"
shape1.Top = 0
shape1.Left = 0
shape1.Height = 252
shape1.Width = 561
shape1.BackColor = 255,255,255
shape1.Name = "shape1"
shape2.Top = 7
shape2.Left = 16
shape2.Height = 13
shape2.Width = 37
shape2.Name = "shape2"
shape3.Top = 22
shape3.Left = 16
shape3.Height = 13
shape3.Width = 37
shape3.Name = "shape3"
shape4.Top = 7
shape4.Left = 56
shape4.Height = 13
shape4.Width = 37
shape4.Name = "shape4"
mprove performance gridtyle.vcx
	SET FIELDS ON
ENDIF

SET REFRESH TO THIgridbtnsPixelsstylebmp\textbttn.bmpstylebmp\textbttn.bmpClass�ScaleMode = 3
DoCreate = .T.
ColorSource = 0
BackColor = 255,255,255
wizlayout = layoutsty
wizfield = standardfield
wizmemo = standardmemo
wizlogic = standardlogic
wizole = standardole
wizmaxcharfld = 45
wizlblsuffix = (":")
wizlblcap = proper
wizformstretch = .T.
wizlbldefwid = .T.
wiztitle = label1
wizuser = 0
wizgrid = grid1
wizverify = .T.
wizbtnpos = 0
wizcodestyle = .T.
wizlabel = standardlabel
wizlblspace = 10
wizcboxlbl = .T.
Name = "standardform"
"+aMems[m.i]+".BaseC�DoCreate = .T.
BackColor = 0,128,128
wizfield = fancyfield
wizlabel = 
wizlblcap = lower
wizlblsuffix = ("")
wizlogic = fancylogic
wizmemo = fancymemo
wizole = fancyole
wizcboxlbl = .F.
wizlblspace = 
wizmaxcharfld = 40
Name = "fancyform"
layoutsty.Shape1.Top = 0
layoutsty.Shape1.Left = 0
layoutsty.Shape1.Height = 228
layoutsty.Shape1.Width = 538
layoutsty.Shape1.Name = "Shape1"
layoutsty.Shape2.Top = 7
layoutsty.Shape2.Left = 6
layoutsty.Shape2.Height = 13
layoutsty.Shape2.Width = 37
layoutsty.Shape2.Name = "Shape2"
layoutsty.Shape3.Top = 27
layoutsty.Shape3.Left = 6
layoutsty.Shape3.Height = 13
layoutsty.Shape3.Width = 37
layoutsty.Shape3.Name = "Shape3"
layoutsty.Shape4.Top = 6
layoutsty.Shape4.Left = 111
layoutsty.Shape4.Height = 13
layoutsty.Shape4.Width = 37
layoutsty.Shape4.Name = "Shape4"
layoutsty.Top = 48
layoutsty.Left = 21
layoutsty.Width = 538
layoutsty.Height = 228
layoutsty.Name = "layoutsty"
Label1.FontName = "Tahoma"
Label1.FontSize = 18
Label1.Height = 31
Label1.Left = 21
Label1.Top = 10
Label1.Width = 78
Label1.Name = "Label1"
Shape1.Top = 279
Shape1.Left = 5
Shape1.Height = 1
Shape1.Width = 569
Shape1.BackColor = 255,255,255
Shape1.BorderColor = 255,255,255
Shape1.Name = "Shape1"
Shape2.Top = 43
Shape2.Left = 5
Shape2.Height = 1
Shape2.Width = 569
Shape2.Name = "Shape2"
Shape3.Top = 314
Shape3.Left = 5
Shape3.Height = 1
Shape3.Width = 569
Shape3.BackColor = 255,255,255
Shape3.BorderColor = 255,255,255
Shape3.Name = "Shape3"
Shape4.Top = 5
Shape4.Left = 5
Shape4.Height = 0
Shape4.Width = 569
Shape4.BackStyle = 0
Shape4.SpecialEffect = 0
Shape4.Name = "Shape4"
}���/<Yб�б1x0�cɓc
2�N_��Z���=��P=���=���=��A=Classw��P���[�B �Q��@ ��Ej��P������Pixelsw���z���P�y�H]��@��z����WPQj
����鯳����fancyoleȍU�P�M��߰�}�d}�E�lj�U�u�M��.�����
fancylogicle or button style.
wizbtnlayout Button positgTop = 8
Left = 56
Height = 18
Width = 17
Caption = ""
DisabledForeColor = 0,0,0
Name = "Check1"
izcodestyle Wheth
fancylogic.ft = 0
Height = 61
Width = 580
FillStyle =Check1m.n position centering (0-none, 1-hori, 2-vert, 3-checkboxzbuttons Class reference for button set object.
checkboxts (use for testing but can improve performance FWidth = 88
Height = 34
Name = "fancylogic"
Label1.Name = "Label1"
object with 1-Many forms.
wizverify Whether to ve	container
shape3.Width = 37
shape3.Name = "shape3"
shwizstyle.vcxhape2"
shape3.Top = 13
shape3.Left = 16
s"Tahoma, 0, 9, 5, 14, 12, 17, 2, 0
Name = "shape1"
shape
fancyfieldtsty"
shape1.Top = 0
shape1.Left = 0
shape1Pixels62
Left = 5
Width = 571
Height = 195
TabIndex Classrm. Class reference for a general field object.
wiwizstyle.vcx7
layoutsty.Shape4.Name = "Shape4"
layouts2ayoutstyct.
wizlogic Class reference for a logic field	fancybaser a field object.
wizmemo Class reference for formowbasetsty.Left = 4
layoutsty.Width = 571
layoutst
fancyfieldcxass reference for layout object.
wizfield C�FontName = "Tahoma"
Height = 23
Left = 59
Top = 5
Width = 113
DisabledForeColor = 0,0,0
NullDisplay = ("n/a")
Name = "Text1"
tstycuttons
* for appropriate table environments.

fancyfield.wid = .F.
wiztitle = Label1
wizuser = 0
wiText1lblsuffix = (":")
wizlblcap = proper
wizformstrettextbox
wizlogic = boxlogic
wizole = boxole
wizmaxchartextbox
wizlayout = layoutsty
wizfield = boxfield
wizGWidth = 184
Height = 34
Name = "fancyfield"
Label1.Name = "Label1"
de = 3
DoCreate = .T.
ColorSource = 0
BackColoWidth = 542
Height = 25
BackStyle = 0
BorderWidth = 0
Visible = .T.
TabIndex = 1
nworkarea = 0
editmode = 0
previewmode = .F.
topfile = 0
endfile = 0
oldrefresh = 0
oldrec = 0
oldreprocess = 0
previewinit = .T.
usedataenv = .T.
viewkey = ("")
Name = "txtbtns"
	container6	containergridbtnsY�� @@7�%����ULT��������T��������T������
��C��	��U
	CKEYVALUETHISPARENTTEXT1VALUE
NADDACTIONOPTIONGROUP1
NBTNACTIONTHISFORMRELEASEClick,��1aa�1�)@Class
THIS.nWorkArea = SELECT()
THIS.oldSetDelete = SET1 = ""
THIS.TopFile = .F.
THIS.EndFile = .F.
THIS.Add�PROCEDURE Click
#DEFINE MSGBOX_YES		6
#DEFINE C_MSGBOX1		36
#DEFINE C_DELETE_LOC	"Do you want to delete this record?"

IF MESSAGEBOX(C_DELETE_LOC,C_MSGBOX1) = MSGBOX_YES
	DELETE
	IF THIS.Parent.UpdateRows()  &&success
		* Success
		IF !EOF()
			SKIP 1
		ENDIF
		IF EOF() AND !BOF()
			SKIP -1
		ENDIF
	ENDIF
ENDIF
THISFORM.REFRESH()
IF THISFORM.ShowWindow = 2 
	Activate Window (THISFORM.Name)
ENDIF

ENDPROC
�Top = 2
Left = 178
Height = 24
Width = 53
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Delete"
Enabled = .T.
StatusBarText = "Delete existing record"
TabIndex = 9
ToolTipText = ""
Name = "cmdDelete"
gridbtns.	cmdDelete
commandbutton
commandbutton
scrollgrid
THIS.ParentKey = ""
THIS.ViewType = 3
THIS.�wizrowstretch = .T.
Name = "scrollgrid2"
Column1.Header1.Name = "Header1"
Column1.Container1.Name = "Container1"
Column1.Name = "Column1"
OCAL aTablesUsed,nTablesUsed,i,aMems,nTot	containerdDPROC
f�&��!�[b��q�!9����/4�<�`u���!{scrollgrid2

* This routine sets the member variables
PROCEDURE Click
#DEFINE C_NOUPDATE_LOC	"You cannot add a new record because the view(s) selected does not send updates."
IF CURSORGETPROP("SourceType")#3 AND !CURSORGETPROP("SendUpdates")
	MESSAGEBOX(C_NOUPDATE_LOC)
	RETURN
ENDIF
APPEND BLANK
THISFORM.REFRESH()
ENDPROC
�Top = 2
Left = 116
Height = 24
Width = 53
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Add"
Enabled = .T.
StatusBarText = "Add new record / Save edits"
TabIndex = 7
ToolTipText = ""
Name = "cmdAdd"
gridbtns.cmdAdd
commandbutton
commandbuttonwizrowstretch
s,cDataEnvRef
DIMENSION aTablesUsed[1]
gridUPDATEVIEW_LOC	"Edits to one or more of the Views mawizstyle.vcxion()
ENDPROC
PROCEDURE initvars
						
	container.PROCEDURE Click
THISFORM.Release

ENDPROC
�Top = 2
Left = 240
Height = 24
Width = 53
FontName = "MS Sans Serif"
FontSize = 8
Caption = "E\<xit"
Enabled = .T.
StatusBarText = "Exit input form"
TabIndex = 10
ToolTipText = ""
Name = "cmdExit"
gridbtns.cmdExit
commandbutton
commandbutton��� ���%�9�U��C�����T���a��UTXTBTNSINITTHISFORMSHOWTIPS>%���
����#T�������	wznew.bmp��$T�������
wzedit.bmp��#T�������	wznew.bmp��$T�������
wzedit.bmp���7�$T�������
wzsave.bmp��$T�������
wzundo.bmp��$T�������
wzsave.bmp��$T�������
wzundo.bmp���UTHISEDITMODECMDADDPICTURE
WIZBMPPATHCMDEDITDOWNPICTUREInit,��
setcaptionr��1��31A1A�AAAAA1<]5)�CPROCEDURE Click
#DEFINE C_MAKEREPO_LOC			"Could not locate a report to print. Create new one?"
#DEFINE C_NOOPEN_LOC			"Error opening table. Unable to print report."
#DEFINE C_GETFILEPROMPT_LOC		"Select a report to print:"

LOCAL cRepName,nSaveSess,cSaveAlias,cSaveSource,cSaveData 

cSaveAlias = ALIAS()
cSaveSource = CURSORGETPROP("SourceName")
cSaveData = CURSORGETPROP("Database")
cDiffSource = ""
cRepName = LEFT(ALIAS(),8)+".FRX"
nSaveSess = SET("DATASESSION")

#IF 0
	* Handling for Private data sessions
	IF m.nSaveSess # 1
		SET DATASESSION TO 1
		SELECT 0
		IF !EMPTY(m.cSaveData)
			OPEN DATABASE (m.cSaveData)
		ENDIF
		IF USED(m.cSaveAlias)
			SELECT (m.cSaveAlias)
			IF CURSORGETPROP("SourceName")#m.cSaveSource
				cDiffSource = CURSORGETPROP("SourceName")
				USE IN (m.cSaveAlias)
				SELECT 0
			ENDIF
		ENDIF	
		IF EMPTY(ALIAS())
			USE (m.cSaveSource) AGAIN ALIAS (m.cSaveAlias) SHARED
			IF EMPTY(ALIAS())
				=MESSAGEBOX(C_NOOPEN_LOC)
				RETURN
			ENDIF
		ENDIF
	ENDIF
#ENDIF

IF FILE(m.cRepName)
	REPORT FORM (m.cRepName) PREVIEW NOWAIT
ELSE
	m.cRepName = GETFILE("frx",C_GETFILEPROMPT_LOC,"",1)
	IF !EMPTY(m.cRepName)
		IF FILE(m.cRepName)
			* User pressed Open button
			REPORT FORM (m.cRepName) PREVIEW NOWAIT
		ELSE
			* User pressed New button
			DO (_WIZARD) WITH "AUTOREPORT"
		ENDIF
	ENDIF
ENDIF

#IF 0
	IF !EMPTY(cDiffSource)
		USE (m.cDiffSource) IN 0
	ENDIF

	SET DATASESSION TO m.nSaveSess
	SELECT (m.cSaveAlias)
#ENDIF

IF THISFORM.ShowWindow = 2 
	Activate Window (THISFORM.Name)
ENDIF

ENDPROC
�Top = 2
Left = 58
Height = 24
Width = 49
FontName = "MS Sans Serif"
FontSize = 8
Caption = "P\<rint"
Enabled = .T.
StatusBarText = "Print to report"
TabIndex = 6
ToolTipText = ""
Name = "cmdPrint"
gridbtns.cmdPrint
commandbutton
commandbuttonN�� 55��%����UP
H�
�.�������7�T��������&�C�THISFORM.cKeyValueb�C��p�T�������/�CC�THISFORM.cKeyValueb�NYIBF������T�������,�CC�THISFORM.cKeyValueb�DT������T�������&�C�THISFORM.cKeyValueb�L��.�T����a���T���������UTHISVALUETHISFORMTEXT1	CKEYVALUEREADONLYInteractiveChange,��1�Aaa1�1��aA�2�)5PROCEDURE Click

LOCAL lVisChange,lStateChange,oSearchDlog

* Check if SDI Window
IF THISFORM.ShowWindow = 2 
	IF !_VFP.Visible
		_VFP.Visible = .T.
		lVisChange = .T.
	ENDIF
	IF _SCREEN.WindowState = 1
		_SCREEN.WindowState = 0
		lStateChange = .T.
	ENDIF
ENDIF

oSearchDlog = CREATE("searchform")
oSearchDlog.SHOW()
THISFORM.REFRESH()

IF m.lVisChange
	_VFP.Visible = .F.
ENDIF
IF m.lStateChange 
	_SCREEN.WindowState = 1
ENDIF
IF THISFORM.ShowWindow = 2 
	Activate Window (THISFORM.Name)
ENDIF

ENDPROC
�Top = 2
Left = 0
Height = 24
Width = 49
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Find"
Enabled = .T.
StatusBarText = "Search for records"
TabIndex = 5
ToolTipText = ""
Name = "cmdFind"
gridbtns.cmdFind
commandbutton
commandbutton=nworkarea Saves old workarea (set internally).
previewmode Whether the form is in preview mode for use with Preview button on Wizard (set internally).
oldsetfields Saves SET FIELDS (set internally).
oldsetdelete Saves SET DELETED (set internally).
oldmultilocks Saves SET MULTILOCKS (set internally).
oldbuffering Saves table buffering state (set internally).
oldrefresh Saves SET REFRESH (set internally).
oldrec Saves record number (set internally).
oldreprocess Saves SET REPROCESS (set internally).
oldalias Saves alias when editing to restore with 1-Many forms (set internally).
previewinit For use with Preview button on wizard (set internally).
usedataenv Whether the form has a data environment object attached (set internally).
hasgeneral Whether the form has general field oleboundcontrol object (set internally).
oldtalk Saves SET TALK (set internally).
hasmemo Whether the form has memo field editbox object (set internally).
*initvars Saves and sets certain environment variables.
*updaterows Handles add, edit and delete operations of records to tables.
�Width = 296
Height = 26
BackStyle = 0
BorderWidth = 0
Visible = .T.
TabIndex = 1
nworkarea = 0
previewmode = .F.
oldrefresh = 0
oldrec = 0
oldreprocess = 0
previewinit = .T.
usedataenv = .T.
Name = "gridbtns"
s�� ZZ*�%���U�5������!%�C�
THIS.KeyFieldb�C��H�T�������T������T������
T�����
T�����ET��C�gridaddform�
��
��
��
�����	��
�N��"%�C�m.oGridAddFormb�O��b�a��C�UFailed to create the Add Record form class. Check or reinstall the WIZSTYLE.VCX file.�x��T������B��%���
����T���
����T���
��
����
��C����&T���C�
����
���6��T����
���UCFLDKEY	CKEYVALUE
NBTNACTION
NADDACTIONOGRIDADDFORMTHISKEYFIELDKEYVALUECHILDPRIMARYKEYUPDATABLEPARENTKEY
NOSENDUPDATES	ADDOPTIONOPTIONGROUP1VALUETEXT1SHOW
runaddform,��1sA��S"AA1QA�b!21)Z
wnworkarea Saves old workarea (set internally).
editmode Whether the form is in edit mode (set internally).
previewmode Whether the form is in preview mode for use with Preview button on Wizard (set internally).
topfile Whether the record pointer is at top of table (set internally).
endfile Whether the record pointer is at end of table (set internally).
oldsetfields Saves SET FIELDS (set internally).
oldsetdelete Saves SET DELETED (set internally).
oldmultilocks Saves SET MULTILOCKS (set internally).
oldbuffering Saves table buffering state (set internally).
addmode Whether the form is in add mode where a new record is being added (set internally).
oldrefresh Saves SET REFRESH (set internally).
oldrec Saves record number (set internally).
oldreprocess Saves SET REPROCESS (set internally).
oldalias Saves alias when editing to restore with 1-Many forms (set internally).
previewinit For use with Preview button on wizard (set internally).
usedataenv Whether the form has a data environment object attached (set internally).
gridref Object reference to grid object (set internally).
odatarelation Object reference to data environment (set internally).
viewkey Key expression of child table used in grid object (set internally). Expression is obtained from Tag property of form.
gridalias Alias of table used in grid object (set internally).
viewtype Data source type for grid object (set internally).
parentkey Key expression of parent table used in 1-Many form (set internally). Expression is obtained from Comment property of form.
hasgeneral Whether the form has general field oleboundcontrol object (set internally).
oldtalk Saves SET TALK (set internally).
hasmemo Whether the form has memo field editbox object (set internally).
editforecolor Saves EditForeColor property for editbox objects (set internally).
editbackcolor Saves EditBackColor property for editbox objects (set internally).
editdisforecolor Saves DisabledForeColor property for editbox objects (set internally).
editdisbackcolor Saves DisabledBackColor property for editbox objects (set internally).
usercontrolmode This mode will allow user added controls such as comboboxes, listboxes and spinners to take on behavior of EditMode.
*buttonrefresh Enables/disables buttons.
*initvars Saves and sets certain environment variables.
*updaterows Handles add, edit and delete operations of records to tables.
*setcaption Changes caption/picture of buttons when edit mode toggled on/off.
*setallprop Enables/disables editing of data bound objects on form.
*navrefresh Refreshes record navigational buttons.
*getgridref Locates reference to grid object if one exists.
�ColumnCount = 1
AllowHeaderSizing = .F.
AllowRowSizing = .F.
DeleteMark = .F.
HeaderHeight = 0
Height = 178
Highlight = .F.
HighlightRow = .F.
RecordMark = .F.
RowHeight = 300
ScrollBars = 2
SplitBar = .F.
Width = 369
BackColor = 192,192,192
wizbtnstyle = gridbtns
Name = "scrollgrid"
Column1.Width = 500
Column1.Sparse = .F.
Column1.BackColor = 192,192,192
Column1.Name = "Column1"
iewinit = .T.
usedataenv = .T.
view��� ���&%�C	�U���������%�C���6�B�-���T���	����T��
���
���T����
���
H�������
�����T���
��-��T�����-����
�
����T�����-���%��
����T�����-���
H����"�C�THIS.cKeyValueb�C��I�T���	����+�CC�THIS.cKeyValueb�NYIBF������T���	����(�CC�THIS.cKeyValueb�DT������T���	����"�C�THIS.cKeyValueb�L����T���	�a���UCFLDKEY	CKEYVALUE
NBTNACTION
NADDACTIONLCHILDPRIMARYKEYLUPDATABLEPARENTKEYLNOSENDUPDATESTHIS
COMMANDGROUP1VALUELABEL3CAPTIONOPTIONGROUP1OPTION1ENABLEDOPTION3OPTION2TEXT1Init,��1�qA2Q!��BABA�AA�!1�1��!A2n)�bPROCEDURE searchexpr
LOCAL cGetExpr1,cGetExpr2,cJoin,cGetExpr

m.cGetExpr1 = THIS.SearchItem(THIS.cboFields1,THIS.cboOperators1,THIS.txtExpr1)
m.cGetExpr2 = THIS.SearchItem(THIS.cboFields2,THIS.cboOperators2,THIS.txtExpr2)
m.cJoin = IIF(THIS.optGrpAndOr.value = 2," OR "," AND ")

DO CASE
CASE EMPTY(m.cGetExpr1) AND EMPTY(m.cGetExpr2)
	m.cGetExpr = ""
CASE EMPTY(m.cGetExpr2)
	m.cGetExpr = m.cGetExpr1
CASE EMPTY(m.cGetExpr1)
	m.cGetExpr = m.cGetExpr2
OTHERWISE
	m.cGetExpr = m.cGetExpr1+m.cJoin+m.cGetExpr2
ENDCASE

RETURN m.cGetExpr
ENDPROC
PROCEDURE dataexpr
LPARAMETER cDataType,cFldExpr

LOCAL cTmpExpr

DO CASE
CASE INLIST(m.cDataType,"M","G","P","O","U")
	RETURN ""

CASE m.cDataType = "C"
	IF TYPE("'Test'="+m.cFldExpr) # "L"
		IF THIS.REMOTEDELIMETER
			cTmpExpr = '"'+m.cFldExpr+'"'
		ELSE
			cTmpExpr = "["+m.cFldExpr+"]"
		ENDIF
	ELSE
		cTmpExpr = m.cFldExpr
	ENDIF
	
	* Check for case sensitive
	IF THIS.chkCaseSensitive.Value = 0
		m.cTmpExpr= "UPPER("+m.cTmpExpr+")" 
	ENDIF
	RETURN m.cTmpExpr
	
CASE INLIST(m.cDataType,"N","F","I","Y","B")
	* Check for any commas and remove
	RETURN ALLTRIM(STR(VAL(STRTRAN(m.cFldExpr,",")),16,4))

CASE INLIST(m.cDataType,"D","T")
	RETURN "{"+CHRTRAN(m.cFldExpr,"{}","")+"}"

OTHERWISE
	RETURN ""

ENDCASE


ENDPROC
PROCEDURE searchitem
LPARAMETERS oField,oOp,oExpr
LOCAL cExpr,cDataType,cOp,cFldName,cFldExpr,cRetExpr,aExprs,nTotExprs,i

* Check to make sure proper parameters passed
IF TYPE("m.oField")#"O" OR TYPE("m.oOp")#"O" OR TYPE("m.oExpr")#"O"
	RETURN ""
ENDIF

m.cFldName = ALLTRIM(m.oField.Value)
m.cFldExpr = ALLTRIM(m.oExpr.Value)

* If empty expression return empty.
IF EMPTY(m.cFldExpr) AND !INLIST(m.oOp.listitemid,5,6)
	RETURN ""
ENDIF

* Get data type of field
m.cDataType = aWizFList(m.oField.listitemid,2)

IF m.cDataType = "C" AND THIS.chkCaseSensitive.Value = 0
	m.cFldName = "UPPER("+m.cFldName+")" 
ENDIF

* Get the operator language equivalent
DO CASE
CASE m.oOp.listitemid = 1	&& equals
	m.cOp = "="
CASE m.oOp.listitemid = 2	&& not equals
	m.cOp = "<>"
CASE m.oOp.listitemid = 3	&& more than
	m.cOp = ">"
CASE m.oOp.listitemid = 4	&& less than
	m.cOp = "<"
CASE m.oOp.listitemid = 5	&& is blank
	RETURN "EMPTY("+m.cFldName+")"
CASE m.oOp.listitemid = 6	&& is NULL
	RETURN "ISNULL("+m.cFldName+")"
CASE m.cDataType = "L" 		&& don't allow other options for logical type
	m.cOp = "="
CASE m.oOp.listitemid = 7	&& contains
	m.cFldExpr = THIS.DataExpr("C",m.cFldExpr)
	DO CASE
	CASE m.cDataType = "T"
		RETURN "AT("+m.cFldExpr+",TTOC("+m.cFldName+"))>0"
	CASE m.cDataType = "D"
		RETURN "AT("+m.cFldExpr+",DTOC("+m.cFldName+"))>0"
	CASE INLIST(m.cDataType,"N","F","I","Y","B")
		RETURN "AT("+m.cFldExpr+",ALLTRIM(STR("+m.cFldName+")))>0"
	OTHERWISE
		RETURN "AT("+m.cFldExpr+","+m.cFldName+")>0"
	ENDCASE
OTHERWISE
	nTotExprs = OCCURS(",",m.cFldExpr)+1
	DIMENSION aExprs[m.nTotExprs]
	FOR i =  1 TO m.nTotExprs
		DO CASE
		CASE m.i = m.nTotExprs
			aExprs[m.i] = SUBSTR(m.cFldExpr,RAT(",",m.cFldExpr)+1)
		CASE m.i =1
			aExprs[m.i] = LEFT(m.cFldExpr,AT(",",m.cFldExpr)-1)
		OTHERWISE
			aExprs[m.i] = SUBSTR(m.cFldExpr,AT(",",m.cFldExpr,m.i-1)+1,;
				AT(",",m.cFldExpr,m.i)-AT(",",m.cFldExpr,m.i-1)-1)
		ENDCASE
		aExprs[m.i] = THIS.DataExpr(m.cDataType,aExprs[m.i])
	ENDFOR

	DO CASE
	CASE m.oOp.listitemid = 8	&& in
		m.cFldExpr = ""
		FOR i = 1 TO m.nTotExprs
			m.cFldExpr = m.cFldExpr + aExprs[m.i]
			IF	m.i # m.nTotExprs
				m.cFldExpr = m.cFldExpr + ","			
			ENDIF
		ENDFOR
		RETURN "INLIST("+m.cFldName+","+m.cFldExpr+")"
	CASE m.oOp.listitemid = 9	&& between
		IF ALEN(aExprs)=1
			DIMENSION aExprs[2]
			aExprs[2] = aExprs[1]
		ENDIF
		IF ALEN(aExprs)>2
			DIMENSION aExprs[2]
		ENDIF
		RETURN "BETWEEN("+m.cFldName+","+aExprs[1]+","+aExprs[2]+")"
	OTHERWISE
		RETURN ""
	ENDCASE
ENDCASE

DO CASE
CASE INLIST(m.cDataType,"M","G","P","O","U")
	RETURN ""
CASE m.cDataType = "L"
	IF TYPE(m.cFldName+m.cOp+m.cFldExpr) # "L"
		IF (AT(m.cFldExpr,"fFnN")#0 AND m.cOp # "<>") OR (AT(m.cFldExpr,"tTyY")#0 AND m.cOp = "<>")
			m.cFldName = "!"+m.cFldName
		ENDIF
		RETURN m.cFldName
	ENDIF
OTHERWISE
	m.cFldExpr = THIS.DataExpr(m.cDataType,m.cFldExpr)
ENDCASE

IF EMPTY(m.cFldExpr)
	RETURN ""
ELSE
	RETURN m.cFldName+m.cOp+m.cFldExpr
ENDIF


ENDPROC
PROCEDURE Destroy
RELEASE aWizFList

ENDPROC
����������������������2�� �2�2�B%-�1��-�U�%�CW���� �
F������
��C����T������
��T������
��T������
��T������
�C�s
	��
��C��	��U
THIS	NWORKAREA
SETALLPROPCMDFINDENABLEDEDITMODECMDPRINTCMDEXIT	CMDDELETE
SETCAPTIONl#����������
�����
�����T��	����T��
����T������T������T��
�-��T���-��T���-��T���CW��T���C�DELETEDv��G �T���C�	REPROCESSv��GM(����6T���CC�THIS.PreviewModeb�L�-���6��6T���CC�THIS.PreviewInitb�L�a���6��
H�t���,�C�THISFORM.DataEnvironmentb�O����T���a��T��C������b��%T���THISFORM.DataEnvironment��/�C�THISFORMSET.DataEnvironmentb�O����T���a��T��C������b��(T���THISFORMSET.DataEnvironment��'%�C�THISFORMb�O���
	����T���a���2���T���-���%�����5���C�
���1������(��
���\�7%�CC�.C�
���
.BaseClass�f�RELATION��X�"T����
��.C�
����!���������(��
���-�5%�CC�.C�
���
.BaseClass�f�CURSOR��)���C�.C�
����%�8%�C�
SourceType���C�offline��
	��!�2%����OFF�C�?C�SQL�ꉸ�	��@�
��C����*%�C�SendUpdates��
��
�
	������C�8Edits to one or more of the Views may not be permanent. �\To remedy this, ensure the View's Send SQL Updates checkbox is checked in the View Designer.�x��T��a������������3T���CC�
THIS.EditModeb�L�-���6��
%�C�s����HR,�����8The table is Read-Only. You will not be able to edit it.��T���-���T����C�s
��T����C�s
��T�� ��C�s
��%�����#�B��
��C��!��%�����H�B��T��"�C�FIELDSv��G�T��#�C�
MULTILOCKSv��G_ �T��$�C�REFRESHv��GH(����%�CC�
��`�T��%�C�	buffering��T�
��C���y�������(��
���\�+%�C�
sourcetypeC�
������X�%��C�	buffering�C�
���������#)�U&ATABLESUSEDNTABLESUSEDIAMEMSNTOTMEMCWIZFILELSHOWEDMESSCDATAENVREFTHISVIEWKEY	PARENTKEYVIEWTYPE	GRIDALIASTOPFILEENDFILEADDMODE	NWORKAREAOLDSETDELETEOLDREPROCESSPREVIEWMODEPREVIEWINIT
USEDATAENVTHISFORMDATAENVIRONMENTTHISFORMSETVISIBLE
ODATARELATIONALIASEDITMODECMDADDENABLEDCMDEDIT	CMDDELETE
GETGRIDREFOLDSETFIELDS
OLDMULTILOCKS
OLDREFRESHOLDBUFFERING1�������������	�
��
�����
�����T�
�����
T�
��a��T�
��CW��T�
��C���y�������(��
����F�C�
�����T�
�	�CC�Databaseꉡ
��T�
�����
T�
�
�-��
T�
��-��
H�����C�	Buffering���/�.��C����k�T�
��C-a��%��
���g�.��;��
�	
�(C�2C���ꐸ��C�3C���ꐸ�	����T�
��C���+��
����Q�#��
���T�
��CS��%��
�
��*�,T�
���Record in use by another user��Z�!��%��
�
��9���
����(�C.��5�%�CC�
�/b�G��r�.��%�CC�
�/�_CC�
�/���1�
T�
��a��`%�C�IData has been changed by another user. Overwrite changes with your edits?�4�x����
T�
�
�a���-�
T�
��-��Z�!������T�
��C�
����%��
�����T�
��Ca�
�
��%��
�����.��Z����
�	�������T�
��Ca-��%��
��������.�����T��C���z��
H�����������C������I�T�
���Trigger failed.���C����-����(T�
���Field doesn't accept NULL���C����.����"T�
���Field rule violated���C�������
�,T�
���Record in use by another user���C����/��C� T�
���Row rule violated���C����\����%T�
���Unique index violation���C����1��y�%��
�	��u�`%�C�IData has been changed by another user. Overwrite changes with your edits?�4�x���q����T�
��Caa��%��
���7����.��m���*��C�Could not force table updates.�x�����2���%�C�
��
����!T�
���Error: C�������
��Ca��
T�
��-��%�C�
��
���*��C�Failed to update table: �
��x�����F��
���B��
���U
AERRORS
CERRORMESSAGEATABLESUSEDNTABLESUSEDNTOTERRNFLDINOLDAREALSUCCESSLINDBC
LOVERWRITELHADMESSAGE
NMODRECORD�%�����D�T�����\<Save��T�����\<Revert���}�T�����\<Add��T�����\<Edit���UTHISEDITMODECMDADDCAPTIONCMDEDIT���������%�C���5�T�
������N�T�
���
����
H�_���$�C�	Pageframe�
��������T������3�C�
���Optiongroup,Commandgroup������T������2���T������������(��
�����
H����$�C�	Pageframe�
������X���CC�
��
���	�
��=�C�
���Optiongroup,Commandgroup����	�	���� T�
��
��
�����	���G�CC�
��
����Optiongroup,Commandgroup����	�	�����CC�
��
���	�
��Q�C�	ContainerC�
��
������ C�PageC�
��
�����������CC�
��
���	�
��G�CC�
��
����ListBox,ComboBox,Spinner����	�	���� T�
����
�����	���E�CC�
��
���� CheckBox,TextBox,OleBoundControl����Q� T�
����
�����	���,�CC�
��
����EditBox������!T�
����
�����	�
��%��	�
�����C�
��
�����T�	�����T�	�����T�	�����T�	�����T�	��a�����4T�
����
����C�	��	�	���	�6��4T�
����
����C�	��	�	���	�6��)�CC�
��
����Grid������!T�
����
�����	�
�� T�
����
�����	������U
OCONTAINERIOCONTROLPARENT
NCTRLCOUNTTHISFORM	BASECLASS	PAGECOUNTBUTTONCOUNTCONTROLCOUNTTHIS
SETALLPROPPAGESUSERCONTROLMODEBUTTONSENABLEDEDITMODECONTROLSREADONLYHASMEMO
EDITFORECOLOR	FORECOLOREDITDISFORECOLORDISABLEDFORECOLOR
EDITBACKCOLOR	BACKCOLOREDITDISBACKCOLORDISABLEDBACKCOLOR
DELETEMARK������T�
������T���a��%�CW����O�
F������%���
��;�T���C+�����%���
����H�T���C+��
H���������#6��T��	�C�C+���	��%���	
���
H������T��	�C��%���	
���H���%���	��7�#)���"T��
����	
���
	��"T������	
���
	��"T��
����
���
	��"T������
���
	��
H���������C�s����'����C�	BUFFERING�	��#�T����-�������D�T����a���CN��C�C+����T����-��T����-������
����T����a��T����a���%���
�
C���
	����T��C����
H�����C��b�C��5�%T�����=�[�
��]���C��b�L��\�T�������C��b�D����'T�����=�{C�
�*�}���C��b�T����(T�����=�{C�
���}��2��%T�����=CC�
���Z����
F�����
H�$�s��-��/�������_�SET FILTER TO &cFiltExpr
������s��
F������
��C����T����
���U
OLDLOCKSCREENKEYVALUE	CFILTEXPRTHISFORM
LOCKSCREENTHIS	NWORKAREAEDITMODEENDFILETOPFILECMDTOPENABLEDCMDPREVCMDNEXTCMDENDPREVIEWMODECMDEDIT	CMDDELETEVIEWKEY	PARENTKEY	GRIDALIASVIEWTYPEREFRESHn�����T������%�C�THISFORMb�O��g�
�����T��C�����b��
�����c������(��
���_�3%�CC�.C�
���
.BaseClass�f�GRID��[�T���C�
������C�.����S�!T���C�
sourcetype���T������%������O�T��	��
��T���������!�������U
AMEMSNTOTMEMITHISGRIDREFTHISFORMVIEWTYPERECORDSOURCE	GRIDALIASVIEWKEYTAG	PARENTKEYCOMMENT���������
�����%�C�THIS.Parentb�O��K�B��0%�C�THIS.oldTalkb�C�
���ON	����G2 ��%�����c�
�����
H�����,�C�THISFORM.DataEnvironmentb�O���T��C���	�
��b��%T���THISFORM.DataEnvironment��/�C�THISFORMSET.DataEnvironmentb�O����T��C����
��b��(T���THISFORMSET.DataEnvironment��������(��
���_�!��C�
��.C�
����[�^%�C���C�CURSOR�
��	�C�
sourcetype��	�C�	buffering��	��W���Ca�����C�	buffering����������%�����{�B��%����OFF����G��GM(�����G&(�
F�����%�������B��T�
��C���y�������(��
���k�9%�CC�
�����C�.TMPCC�
���&��	��g�(��C�	buffering��C�
��������%����OFF����G_��%����ON����G ��GH(�����UNTABLESUSEDATABLESUSEDI
NDECURSORS
ADECURSORSCDATAENVREFTHISOLDTALK
USEDATAENVTHISFORMDATAENVIRONMENTTHISFORMSETALIAS	BASECLASSPREVIEWMODEOLDSETDELETEOLDREPROCESS	NWORKAREAOLDBUFFERING
OLDMULTILOCKSOLDSETFIELDS
OLDREFRESHV4��������
�����T��C���z��
H�F����C�
��������c�B���
�����{�B�$����C�����	������CC����x��B�$����C����\	������CCEC�
 �x��B��Z��CC�EC�
 �Error: C�ZC�
 CEC�
 �Method: �C�
 �Line: C�Z�x��B(��UNERRORCMETHODNLINEAFOXERRNTOTERRu������%�C�THIS.Parentb�O��6�B��%�C�TALKv�ON��k�G2�T����ON�����T����OFF���,%�C�WIZSTYLE.VCXC�CLASSLIBv����!�T���<��%��\���\�T��C�
��C�\�
��\��F%�C�
��R�\�C�
�>�	�C�
�C�
�>��\�:	��X�T��C�
��C�
�>�\����q�
T������T��C�3��:��\6��(%�C�
��R�\:
�	C�
��
	����T�
���
��
����
H������C�WIZSTYLE.VCX0���T���WIZSTYLE.VCX��!�C�
��WIZSTYLE.VCX0��U�T���
��WIZSTYLE.VCX��-�C�
��WIZARDS\�WIZSTYLE.VCX0����+T���
��WIZARDS\�WIZSTYLE.VCX���CC�Q�WIZSTYLE.VCX0����T��C�Q�WIZSTYLE.VCX��+�CC�Q�WIZARDS\�WIZSTYLE.VCX0��=�)T��C�Q�WIZARDS\�WIZSTYLE.VCX��2���g��C�IThe class library (WIZSTYLE.VCX) needed by this form could not be found. �Please locate.�x��+T��C�VCX�Find: �WIZSTYLE.VCX����$%�C�WIZSTYLE.VCX�
������G~(��
�����B�-����
��C����
��C����
��C��	��T����
��%�C�
��
��n��UCGRIDREFCWIZHOMEPATH	SEPARATORCWIZSTYFILETHISOLDTALKCWIZFILEINITVARS
BUTTONREFRESH
NAVREFRESHGRIDREF�%������	����T���-��T����-��T����-��T����-��T����-��T����-��T��	��-��T��
�CW��
��C����
��C����
��C��
���UTHISPREVIEWMODEPREVIEWINITCMDADDENABLEDCMDEDIT	CMDDELETECMDFINDCMDPRINTCMDEXIT	NWORKAREA
GETGRIDREF
SETALLPROP
NAVREFRESH
buttonrefresh,��initvars8��
updaterowsI
��
setcaption��
setallprop���
navrefresh��
getgridref���Destroy� ��ErrorH%��Init�&��Refresh�+��13�A�qqq��26�������a��da����Q����q�A��A�q!AAA�Q��&�A�A
�AAAAAAA2���ACAAAA�AA�a�a����A��QAAAQ3}������A�B������BA�AA�$A���QAA��AA�����QAAAAAAA�Q�AAQA�Q�QAAAA#������!����Q��R�QA�A�AAA�!AA��!�AB��3�����A3q���A�A1�A��A��s��sR���AAAA�BA4�!�2�A�A���QA���AAAQAB"!!!�qr�AA�!�qQqqqq��RA���C�AB�A�!3������1qqAAAAAAAA3���AAaA����Q���A����AAAAAAraA�a�AAD���AAraAbaA�3���!��AAAA2AAAA�b37�AA�a!�1A��!�b�A��A��qA�����������q�AB��rAB���!C2������A2���d�y ��� �!!�
"�*0

+�3tP�3j6�g�64>��P>�@<�A�H[��H:J�)�20�� ٙ%�~5�U#����������
�����
�����T��	�CW��T��
�C�DELETEDv��G �T���C�	REPROCESSv��GM(����6T���CC�THIS.PreviewModeb�L�-���6��6T��
�CC�THIS.PreviewInitb�L�a���
6��
H�
�S�,�C�THISFORM.DataEnvironmentb�O����T���a��T��C������b��%T���THISFORM.DataEnvironment��/�C�THISFORMSET.DataEnvironmentb�O��=�T���a��T��C������b��(T���THISFORMSET.DataEnvironment��'%�C�THISFORMb�O���
	��9�T���a���2�S�T���-���%�����7���C�
���3������(��
���/�5%�CC�.C�
���
.BaseClass�f�CURSOR��+���C�.C�
����'�"%�C�
SourceType����#�2%���
�OFF�C�?C�SQL�ꉸ�	��B�
��C����*%�C�SendUpdates��
��
�
	������C�8Edits to one or more of the Views may not be permanent. �\To remedy this, ensure the View's Send SQL Updates checkbox is checked in the View Designer.�x��T��a������������
%�C�s����HR,�����8The table is Read-Only. You will not be able to edit it.���T����C�s
��T����C�s
��%�������B��%�������B��T���C�FIELDSv��G�T���C�
MULTILOCKSv��G_ �T���C�REFRESHv��GH(����%�CC�
���T���C�	buffering��T�
��C���y�������(��
�����+%�C�
sourcetypeC�
��������%��C�	buffering�C�
���������#)�UATABLESUSEDNTABLESUSEDIAMEMSNTOTMEMCWIZFILELSHOWEDMESSCDATAENVREFTHIS	NWORKAREAOLDSETDELETEOLDREPROCESSPREVIEWMODEPREVIEWINIT
USEDATAENVTHISFORMDATAENVIRONMENTTHISFORMSETVISIBLEALIASCMDADDENABLED	CMDDELETEOLDSETFIELDS
OLDMULTILOCKS
OLDREFRESHOLDBUFFERING1�������������	�
��
�����
�����T�
�����
T�
��a��T�
��CW��T�
��C���y�������(��
����F�C�
�����T�
�	�CC�Databaseꉡ
��T�
�����
T�
�
�-��
T�
��-��
H�����C�	Buffering���/�.��C����k�T�
��C-a��%��
���g�.��;��
�	
�(C�2C���ꐸ��C�3C���ꐸ�	����T�
��C���+��
����Q�#��
���T�
��CS��%��
�
��*�,T�
���Record in use by another user��Z�!��%��
�
��9���
����(�C.��5�%�CC�
�/b�G��r�.��%�CC�
�/�_CC�
�/���1�
T�
��a��`%�C�IData has been changed by another user. Overwrite changes with your edits?�4�x����
T�
�
�a���-�
T�
��-��Z�!������T�
��C�
����%��
�����T�
��Ca�
�
��%��
�����.��Z����
�	�������T�
��Ca-��%��
��������.�����T��C���z��
H�����������C������I�T�
���Trigger failed.���C����-����(T�
���Field doesn't accept NULL���C����.����"T�
���Field rule violated���C�������
�,T�
���Record in use by another user���C����/��C� T�
���Row rule violated���C����\����%T�
���Unique index violation���C����1��y�%��
�	��u�`%�C�IData has been changed by another user. Overwrite changes with your edits?�4�x���q����T�
��Caa��%��
���7����.��m���*��C�Could not force table updates.�x�����2���%�C�
��
����!T�
���Error: C�������
��Ca��
T�
��-��%�C�
��
���*��C�Failed to update table: �
��x�����F��
���B��
���U
AERRORS
CERRORMESSAGEATABLESUSEDNTABLESUSEDNTOTERRNFLDINOLDAREALSUCCESSLINDBC
LOVERWRITELHADMESSAGE
NMODRECORD���������
�����%�C�THIS.Parentb�O��K�B��0%�C�THIS.oldTalkb�C�
���ON	����G2 ��%�����c�
�����
H�����,�C�THISFORM.DataEnvironmentb�O���T��C���	�
��b��%T���THISFORM.DataEnvironment��/�C�THISFORMSET.DataEnvironmentb�O����T��C����
��b��(T���THISFORMSET.DataEnvironment��������(��
���_�!��C�
��.C�
����[�^%�C���C�CURSOR�
��	�C�
sourcetype��	�C�	buffering��	��W���Ca�����C�	buffering����������%�����{�B��%����OFF����G��GM(�����G&(�
F�����%�������B��T�
��C���y�������(��
���k�9%�CC�
�����C�.TMPCC�
���&��	��g�(��C�	buffering��C�
��������%����OFF����G_��%����ON����G ��GH(�����UNTABLESUSEDATABLESUSEDI
NDECURSORS
ADECURSORSCDATAENVREFTHISOLDTALK
USEDATAENVTHISFORMDATAENVIRONMENTTHISFORMSETALIAS	BASECLASSPREVIEWMODEOLDSETDELETEOLDREPROCESS	NWORKAREAOLDBUFFERING
OLDMULTILOCKSOLDSETFIELDS
OLDREFRESH4��������
�����T��C���z��
H�F����C�
��������c�B���
�����{�B�$����C�����	������CC����x��B��Z��CC�EC�
 �Error: C�ZC�
 CEC�
 �Method: �C�
 �Line: C�Z�x��B(��UNERRORCMETHODNLINEAFOXERRNTOTERR1�����%�C�THIS.Parentb�O��2�B��%�C�TALKv�ON��g�G2�T����ON�����T����OFF���,%�C�WIZSTYLE.VCXC�CLASSLIBv�����T���<��%��\���X�T��C�
��C�\�
��\��F%�C�
��R�\�C�
�>�	�C�
�C�
�>��\�:	��T�T��C�
��C�
�>�\����m�
T������T��C�3��:��\6��(%�C�
��R�\:
�	C�
��
	����T�
���
��
����
H������C�WIZSTYLE.VCX0���T���WIZSTYLE.VCX��!�C�
��WIZSTYLE.VCX0��Q�T���
��WIZSTYLE.VCX��-�C�
��WIZARDS\�WIZSTYLE.VCX0����+T���
��WIZARDS\�WIZSTYLE.VCX���CC�Q�WIZSTYLE.VCX0����T��C�Q�WIZSTYLE.VCX��+�CC�Q�WIZARDS\�WIZSTYLE.VCX0��9�)T��C�Q�WIZARDS\�WIZSTYLE.VCX��2���g��C�IThe class library (WIZSTYLE.VCX) needed by this form could not be found. �Please locate.�x��+T��C�VCX�Find: �WIZSTYLE.VCX����$%�C�WIZSTYLE.VCX�
�����
�G~(��
�����B�-����
��C����UCWIZHOMEPATH	SEPARATORCWIZSTYFILETHISOLDTALKCWIZFILEINITVARS�%������	����T���-��T����-��T����-��T����-��T����-��T����-��T��	�CW���U
THISPREVIEWMODEPREVIEWINITCMDADDENABLED	CMDDELETECMDFINDCMDPRINTCMDEXIT	NWORKAREAinitvars,��
updaterowsk��Destroy%��Error���Init7��Refresh���15����a��da����Q����q�A��A�Q�!%�A�A
�AAAAAAA��ACAAAAA�a�a����A��QAAAQ3}������A�B������BA�AA�$A���QAA��AA�����QAAAAAAA�Q�AAQA�Q�QAAAA#������!����Q��R�QA�A�AAA�!AA��!�AB��3���AAaA����Q���A����AAAAAAraA�a�AAD���AAraAbaA�3���!��AAAA2AA�b3��AA�a!�1A��!�b�A��A��qA�����������q�AB��rAB�3���A2�I��c��M$��i$�&D��&�-_+�-�.�)JEPROCEDURE buttonrefresh
* This is a generic routine which refreshes the buttons
* for appropriate table environments.
IF SELECT()# THIS.nWorkArea
	SELECT (THIS.nWorkArea)
ENDIF

THIS.SetAllProp()
THIS.cmdFind.Enabled = !THIS.EditMode
THIS.cmdPrint.Enabled =  !THIS.EditMode
THIS.cmdExit.Enabled =  !THIS.EditMode
THIS.cmdDelete.Enabled =  !THIS.EditMode AND !ISREADONLY()
THIS.SetCaption()
ENDPROC
PROCEDURE initvars
						
#DEFINE C_NOUPDATEVIEW_LOC	"Edits to one or more of the Views may not be permanent. "+;
							"To remedy this, ensure the View's Send SQL Updates checkbox is checked in the View Designer."
#DEFINE C_READONLY_LOC		"The table is Read-Only. You will not be able to edit it."

LOCAL aTablesUsed,nTablesUsed,i,aMems,nTotMem,cWizFile,lShowedMess,cDataEnvRef
DIMENSION aTablesUsed[1]
DIMENSION aMems[1]

* This routine sets the member variables
THIS.ViewKey = ""
THIS.ParentKey = ""
THIS.ViewType = 3
THIS.GridAlias = ""
THIS.TopFile = .F.
THIS.EndFile = .F.
THIS.AddMode = .F.

THIS.nWorkArea = SELECT()
THIS.oldSetDelete = SET("DELETED")
SET DELETED ON
THIS.oldReprocess = SET("REPROCESS")
SET REPROCESS TO 0

* These properties should not be used. They are reserved for use by
* the Preview button of the Form Wizards.
THIS.PreviewMode = IIF(TYPE("THIS.PreviewMode")#"L",.F.,THIS.PreviewMode)
THIS.PreviewInit = IIF(TYPE("THIS.PreviewInit")#"L",.T.,THIS.PreviewInit)

* Check for data environment
DO CASE
CASE TYPE("THISFORM.DataEnvironment") = "O"
	THIS.UseDataEnv = .T.
	nTotMem = AMEMBERS(aMems,THISFORM.DataEnvironment,2)
	cDataEnvRef = "THISFORM.DataEnvironment"
CASE TYPE("THISFORMSET.DataEnvironment") = "O"
	THIS.UseDataEnv = .T.
	nTotMem = AMEMBERS(aMems,THISFORMSET.DataEnvironment,2)
	cDataEnvRef = "THISFORMSET.DataEnvironment"
	IF TYPE("THISFORM")="O" AND !THISFORM.VISIBLE 
		THISFORM.VISIBLE = .T.
	ENDIF
OTHERWISE
	THIS.UseDataEnv = .F.
ENDCASE

IF THIS.UseDataEnv
	WITH EVAL(m.cDataEnvRef)
		* Check for relation
		FOR i = 1 TO m.nTotMem
			IF UPPER(EVAL("."+aMems[m.i]+".BaseClass")) = "RELATION"
				THIS.oDataRelation = m.cDataEnvRef+"."+aMems[m.i]
				EXIT
			ENDIF
		ENDFOR
		
		* Check for Views
		FOR i = 1 TO m.nTotMem
			IF UPPER(EVAL("."+aMems[m.i]+".BaseClass")) = "CURSOR"
				WITH EVAL("."+aMems[m.i])
					IF CURSORGETPROP("SourceType",.Alias)#3 AND ;
						!CURSORGETPROP("offline",.Alias)
						* Check if we need to requery for deleted records.
						* -- Note: Parameterized views are not requeried so all
						* records will be brought over. To remedy this situation
						* you can place a SET DELETED ON command in the
						* BeforeOpenTables event of the DataEnvironment.
						IF THIS.oldSetDelete = "OFF" AND ATC("?",CURSORGETPROP("SQL",.Alias))=0
							=REQUERY(.Alias)
						ENDIF
						* Check if updates are made
						IF !CURSORGETPROP("SendUpdates",.Alias) AND !m.lShowedMess
							=MESSAGEBOX(C_NOUPDATEVIEW_LOC)
							lShowedMess = .T.
						ENDIF
					ENDIF
				ENDWITH
			ENDIF
		ENDFOR
	ENDWITH
ENDIF

THIS.EditMode = IIF(TYPE("THIS.EditMode")#"L",.F.,THIS.EditMode)

IF ISREADONLY()
	WAIT WINDOW C_READONLY_LOC TIMEOUT 2
	THIS.EditMode = .F.
ENDIF

* Disable appropriate buttons
THIS.cmdAdd.Enabled = !ISREADONLY()
THIS.cmdEdit.Enabled = !ISREADONLY()
THIS.cmdDelete.Enabled = !ISREADONLY()

IF THIS.PreviewMode
	RETURN
ENDIF

THIS.GetGridRef()

IF THIS.UseDataEnv
	RETURN
ENDIF

* The following code is here to support forms not using a DataEnvironment.
THIS.oldSetFields = SET("FIELDS")
SET FIELDS OFF
THIS.oldMultiLocks = SET("MULTILOCKS")
SET MULTILOCKS ON
THIS.oldRefresh = SET("REFRESH")
SET REFRESH TO 5
IF !EMPTY(ALIAS())
	THIS.oldBuffering=CursorGetProp("buffering")
	m.nTablesUsed = AUSED(aTablesUsed)
	FOR i = 1 TO m.nTablesUsed
		IF CursorGetProp('sourcetype',aTablesUsed[m.i,1])#3	&&skip for views
			=CursorSetProp("buffering",5,aTablesUsed[m.i,1])	&&optimistic table buffering
		ENDIF
	ENDFOR
ENDIF
GO TOP

ENDPROC
PROCEDURE updaterows
#DEFINE	E_FAIL_LOC			"Failed to update table: "
#DEFINE	E_TRIGGERFAIL_LOC	"Trigger failed."
#DEFINE	E_FIELDNULL_LOC		"Field doesn't accept NULL"
#DEFINE	E_FIELDRULE_LOC		"Field rule violated"
#DEFINE	E_RECORDLOCK_LOC	"Record in use by another user"
#DEFINE	E_ROWRULE_LOC		"Row rule violated"
#DEFINE	E_UNIQUEINDEX_LOC	"Unique index violation"
#DEFINE	E_DIRTYREC_LOC		"Data has been changed by another user. Overwrite changes with your edits?"
#DEFINE	E_NOFORCE_LOC		"Could not force table updates."
#DEFINE E_PROMPT_LOC	 	"Error: "
#DEFINE MSGBOX_YES			6

LOCAL aErrors,cErrorMessage,aTablesUsed,nTablesUsed,nTotErr 
LOCAL nFld,i,nOldArea,lSuccess,lInDBC,lOverwrite,lHadMessage

DIMENSION aTablesUsed[1]
DIMENSION aErrors[1]
m.cErrorMessage=""
m.lSuccess = .T.
m.nOldArea = SELECT()
m.nTablesUsed = AUSED(aTablesUsed)

* Can wrap everything in transaction if using strictly DBCs

FOR i = 1 TO m.nTablesUsed

	SELECT (aTablesUsed[m.i,1])

	m.lInDBC = !EMPTY(CURSORGETPROP("Database"))
	m.cErrorMessage = ""
	m.lOverwrite = .F.
	m.lHadMessage = .F.

	DO CASE
	CASE CURSORGETPROP("Buffering") = 1
		* Skip if buffering not on
		LOOP
	CASE GetFldState(0) = 2			&&deleted record
		* Only delete current record and force it
		m.lSuccess = TableUpdate(.F.,.T.)
		IF m.lSuccess				&&successful update
			LOOP
		ENDIF
	CASE !m.lInDBC AND (ATC("2",GetFldState(-1))#0 OR;
		 ATC("3",GetFldState(-1))#0)	
		* Field was edited - in Free Table
		* Since free tables are not supported by transactions,
		* we must process record by record
		m.nModRecord = GetNextMod(0)
		DO WHILE m.nModRecord # 0	&&loop locks all records
			GO m.nModRecord
			m.lSuccess = RLOCK()	&&try to lock record
			IF !m.lSuccess			&&failed to lock record
				m.cErrorMessage = E_RECORDLOCK_LOC
				UNLOCK ALL
				EXIT
			ENDIF
			IF !m.lHadMessage	&&so we don't repeat alert
				* See if record(s) modified by another user
				FOR m.nFld = 1 TO FCOUNT()
					IF TYPE(FIELD(m.nFld)) = "G"	&&skip for General fields
						LOOP					
					ENDIF
					IF OLDVAL(FIELD(m.nFld)) # CURVAL(FIELD(m.nFld))
						m.lHadMessage = .T.
						IF MESSAGEBOX(E_DIRTYREC_LOC,4+48) = MSGBOX_YES
							m.lOverwrite = .T.
						ELSE
							m.lSuccess = .F.
							UNLOCK ALL
							EXIT
						ENDIF
					ENDIF
				ENDFOR
			ENDIF
			m.nModRecord = GetNextMod(m.nModRecord)
		ENDDO
		IF m.lSuccess 	&&was able to lock all records
			m.lSuccess = TableUpdate(.T.,m.lOverwrite)
			IF m.lSuccess &&was able to update all records
				LOOP
			ENDIF	
			UNLOCK ALL
		ENDIF
	CASE m.lInDBC
		BEGIN TRANSACTION
		* Try to update all records in selected table
		m.lSuccess = TableUpdate(.T.,.F.)	&&successful update
		IF m.lSuccess
			END TRANSACTION
			LOOP
		ENDIF
		ROLLBACK
	ENDCASE

	* Handle errors
	nTotErr =AERROR(aErrors)
	DO CASE
	CASE nTotErr = 0
		
	CASE aErrors[1,1] = 1539				&& Trigger failed
		m.cErrorMessage = E_TRIGGERFAIL_LOC
	CASE aErrors[1,1] = 1581				&& Field doesn't accept NULL
		m.cErrorMessage = E_FIELDNULL_LOC
	CASE aErrors[1,1] = 1582				&& Field rule violated
		m.cErrorMessage = E_FIELDRULE_LOC
	CASE aErrors[1,1] = 1700				&& Record in use by another user
		m.cErrorMessage = E_RECORDLOCK_LOC
	CASE aErrors[1,1] = 1583				&& Row rule violated
		m.cErrorMessage = E_ROWRULE_LOC
	CASE aErrors[1,1] = 1884				&& Unique index violation
		m.cErrorMessage = E_UNIQUEINDEX_LOC
	CASE aErrors[1,1] = 1585				&& Record changed by another user

		IF m.lInDBC		&&handle free tables above
			* Display conflict alert
			IF MESSAGEBOX(E_DIRTYREC_LOC,4+48) = MSGBOX_YES
				*Try to force update
				BEGIN TRANSACTION				
				m.lSuccess = TABLEUPDATE(.T.,.T.)
				IF m.lSuccess
					END TRANSACTION
					LOOP
				ELSE
					ROLLBACK
					=MESSAGEBOX(E_NOFORCE_LOC)
				ENDIF			
			ENDIF
		ENDIF

	OTHERWISE
		IF !EMPTY(m.cErrorMessage)	&&for free table handling above
			m.cErrorMessage = E_PROMPT_LOC+aErrors[1,2]
		ENDIF
	ENDCASE

	* Had an error we couldn't handle
	=TABLEREVERT(.T.)  &&revert all records
	m.lSuccess = .F.
	IF !EMPTY(m.cErrorMessage)
		=MESSAGEBOX(E_FAIL_LOC+m.cErrorMessage)
	ENDIF

ENDFOR

SELECT (m.nOldArea)
RETURN m.lSuccess

ENDPROC
PROCEDURE setcaption
#DEFINE ADD_CAPTION_LOC		"\<Add"
#DEFINE EDIT_CAPTION_LOC	"\<Edit"
#DEFINE REV_CAPTION_LOC		"\<Revert"
#DEFINE SAVE_CAPTION_LOC	"\<Save"

IF THIS.EditMode
	THIS.cmdAdd.Caption = SAVE_CAPTION_LOC
	THIS.cmdEdit.Caption = REV_CAPTION_LOC
ELSE
	THIS.cmdAdd.Caption = ADD_CAPTION_LOC
	THIS.cmdEdit.Caption = EDIT_CAPTION_LOC
ENDIF

ENDPROC
PROCEDURE setallprop
LPARAMETER oContainer

* Checks for General fields
LOCAL i,oControlParent,nCtrlCount

IF PARAMETERS() = 0
	m.oControlParent = THISFORM
ELSE
	m.oControlParent = m.oContainer
ENDIF

DO CASE 
CASE ATC("Pageframe",m.oControlParent.BaseClass)#0
	nCtrlCount = oControlParent.PageCount
CASE ATC(m.oControlParent.BaseClass,"Optiongroup,Commandgroup")#0
	nCtrlCount = oControlParent.ButtonCount
OTHERWISE
	nCtrlCount = oControlParent.ControlCount
ENDCASE

FOR i = 1 TO m.nCtrlCount 
	DO CASE
	CASE ATC("Pageframe",m.oControlParent.BaseClass)#0
		THIS.SetAllProp(m.oControlParent.Pages[m.i])
		
	CASE ATC(m.oControlParent.BaseClass,"Optiongroup,Commandgroup")#0 AND ;
		THIS.UserControlMode
		m.oControlParent.Buttons[m.i].Enabled = THIS.EditMode

	CASE ATC(m.oControlParent.Controls[m.i].BaseClass,"Optiongroup,Commandgroup")#0 ;
		AND THIS.UserControlMode
		THIS.SetAllProp(m.oControlParent.Controls[m.i])

	CASE ATC("Container",m.oControlParent.Controls[m.i].BaseClass) # 0 OR; 
		ATC("Page",m.oControlParent.Controls[m.i].BaseClass) # 0
		THIS.SetAllProp(m.oControlParent.Controls[m.i])

	CASE ATC(m.oControlParent.Controls[m.i].BaseClass,"ListBox,ComboBox,Spinner") # 0 AND;
		THIS.UserControlMode
		m.oControlParent.Controls[m.i].Enabled = THIS.EditMode

	CASE ATC(m.oControlParent.Controls[m.i].BaseClass,"CheckBox,TextBox,OleBoundControl") # 0
		m.oControlParent.Controls[m.i].Enabled = THIS.EditMode

	CASE ATC(m.oControlParent.Controls[m.i].BaseClass,"EditBox") # 0
		m.oControlParent.Controls[m.i].ReadOnly = !THIS.EditMode
		IF !THIS.HasMemo
			WITH m.oControlParent.Controls[m.i]
				THIS.EditForeColor = .ForeColor
				THIS.EditDisForeColor =  .DisabledForeColor
				THIS.EditBackColor = .BackColor
				THIS.EditDisBackColor =  .DisabledBackColor
				THIS.HasMemo = .T.
			ENDWITH
		ENDIF
		m.oControlParent.Controls[m.i].ForeColor = IIF(THIS.EditMode,THIS.EditForeColor,THIS.EditDisForeColor)
		m.oControlParent.Controls[m.i].BackColor = IIF(THIS.EditMode,THIS.EditBackColor,THIS.EditDisBackColor)

	CASE ATC(m.oControlParent.Controls[m.i].BaseClass,"Grid") # 0
		m.oControlParent.Controls[m.i].ReadOnly = !THIS.EditMode
		m.oControlParent.Controls[m.i].DeleteMark = THIS.EditMode
		
	ENDCASE
ENDFOR


ENDPROC
PROCEDURE navrefresh
**** Navigational Button Handling ****
LOCAL OldLockScreen,KeyValue,cFiltExpr
m.OldLockScreen = THISFORM.LockScreen
THISFORM.LockScreen = .T.

IF SELECT()#THIS.nWorkArea
	SELECT (THIS.nWorkArea)
ENDIF

IF !THIS.EditMode

	* Check for bottom of file
	THIS.EndFile = EOF() OR THIS.EndFile

	* Test to see we are on last record
	IF !THIS.EndFile
		SKIP
		THIS.EndFile = EOF()
		SKIP -1
	ELSE
		GO BOTTOM
	ENDIF

	* Check for top of file
	THIS.TopFile = BOF() OR EOF() OR THIS.TopFile

	* Test to see if we are on first record
	IF !THIS.TopFile
		SKIP -1
		THIS.TopFile = BOF()
		IF !THIS.TopFile
			SKIP
		ENDIF	
	ENDIF

	IF THIS.TopFile
		GO TOP
	ENDIF

ENDIF

THIS.cmdTop.Enabled = !THIS.TopFile AND !THIS.EditMode
THIS.cmdPrev.Enabled = !THIS.TopFile AND !THIS.EditMode
THIS.cmdNext.Enabled = !THIS.EndFile AND !THIS.EditMode
THIS.cmdEnd.Enabled = !THIS.EndFile AND !THIS.EditMode

* Check if no records in query set
DO CASE
CASE THIS.PreviewMode OR ISREADONLY()
	* Nothing
CASE THIS.EditMode AND CURSORGETPROP("BUFFERING")=1
	THIS.cmdEdit.Enabled = .F.
CASE THIS.EditMode
	THIS.cmdEdit.Enabled = .T.
CASE RECCOUNT()=0 OR BOF() OR EOF()
	THIS.cmdEdit.Enabled = .F.
	THIS.cmdDelete.Enabled = .F.
CASE !THIS.cmdEdit.Enabled
	THIS.cmdEdit.Enabled = .T.
	THIS.cmdDelete.Enabled = .T.
ENDCASE


* Update Grid for Views
IF !THIS.EditMode AND !EMPTY(THIS.ViewKey)
	KeyValue = EVAL(THIS.ParentKey)
	DO CASE
	CASE TYPE(THIS.ParentKey) = "C"
		cFiltExpr = THIS.ViewKey + "=" + "["+m.KeyValue+"]"
	CASE TYPE(THIS.ParentKey) = "L"
		cFiltExpr = THIS.ViewKey
	CASE TYPE(THIS.ParentKey) = "D"
		cFiltExpr = THIS.ViewKey + "=" + "{"+DTOC(m.KeyValue)+"}"	
	CASE TYPE(THIS.ParentKey) = "T"
		cFiltExpr = THIS.ViewKey + "=" + "{"+TTOC(m.KeyValue)+"}"	
	OTHERWISE	
		* Numeric
		cFiltExpr = THIS.ViewKey + "=" + ALLTRIM(STR(m.KeyValue,20,18))
	ENDCASE
		
	SELECT (THIS.GridAlias)
	DO CASE
	CASE .F. &&parameterized query
		* set parameter here
		* =requery()
	CASE THIS.ViewType = 1	&&local views
		SET FILTER TO &cFiltExpr
	CASE THIS.ViewType = 2	&&remote views
	
	ENDCASE
	SELECT (THIS.nWorkArea)
ENDIF

THISFORM.Refresh()
THISFORM.LockScreen = m.OldLockScreen

ENDPROC
PROCEDURE getgridref
* Check if we have a grid
LOCAL aMems,nTotMem,i
THIS.GridRef = ""
IF TYPE("THISFORM") = "O"
	DIMENSION aMems[1]
	nTotMem = AMEMBERS(aMems,THISFORM,2)
	WITH THISFORM
		FOR i = 1 TO m.nTotMem 
			IF UPPER(EVAL("."+aMems[m.i]+".BaseClass")) = "GRID"
				THIS.GridRef = aMems[m.i]
				WITH EVAL("."+THIS.GridRef)
					* Check if we have a view and get Tag property
					THIS.ViewType = CURSORGETPROP('sourcetype',.RecordSource)
					THIS.GridAlias = .RecordSource
					IF THIS.ViewType # 3
						THIS.ViewKey = .Tag
						THIS.ParentKey = .Comment
					ENDIF
				ENDWITH				
				EXIT
			ENDIF
		ENDFOR
	ENDWITH
ENDIF

ENDPROC
PROCEDURE Destroy
* Restore various settings
LOCAL nTablesUsed,aTablesUsed,i,nDECursors,aDECursors,cDataEnvRef 
DIMENSION aTablesUsed[1]

IF TYPE('THIS.Parent') # "O"
	RETURN
ENDIF

IF TYPE("THIS.oldTalk") = "C" AND THIS.oldTalk="ON"
	SET TALK ON
ENDIF

* OLE Servers can still send data back to General fields 
* even though they are not in Edit Mode. We need to reset 
* buffering to 1 so the buffer is not updated by the OLE Server.
* Also, folks might exit out while editing.
IF THIS.UseDataEnv
	DIMENSION aDECursors[1]
	DO CASE
	CASE TYPE("THISFORM.DataEnvironment") = "O"
		nDECursors = AMEMBERS(aDECursors,THISFORM.DataEnvironment,2)
		cDataEnvRef = "THISFORM.DataEnvironment"
	CASE TYPE("THISFORMSET.DataEnvironment") = "O"
		nDECursors = AMEMBERS(aDECursors,THISFORMSET.DataEnvironment,2)
		cDataEnvRef = "THISFORMSET.DataEnvironment"
	ENDCASE
	FOR i = 1 TO m.nDECursors
		WITH EVAL(m.cDataEnvRef + "." + aDECursors[m.i])
			IF USED(.ALIAS) AND ATC("CURSOR",.BaseClass)#0 AND ;
			  CursorGetProp("sourcetype",.ALIAS)=3 AND ;
			  CursorGetProp("buffering",.ALIAS)>1
				=TableRevert(.T.,.ALIAS)
				=CursorSetProp("buffering",1,.ALIAS)	&&optimistic table buffering
			ENDIF
		ENDWITH
	ENDFOR
ENDIF

* Skip if using preview mode
IF THIS.PreviewMode
	RETURN
ENDIF

IF THIS.oldSetDelete = "OFF"
	SET DELETED OFF
ENDIF
SET REPROCESS TO THIS.oldReprocess
SET MESSAGE TO
SELECT (THIS.nWorkArea)

IF THIS.UseDataEnv
	RETURN
ENDIF

* The following code is here to support
* forms not using a DataEnvironment.
m.nTablesUsed = AUSED(aTablesUsed)
FOR i = 1 TO m.nTablesUsed
	IF USED(aTablesUsed[m.i,1]) AND ATC(".TMP",DBF(aTablesUsed[m.i,1]))=0	&&skip for views
		=CursorSetProp("buffering",THIS.oldBuffering,aTablesUsed[m.i,1])	&&optimistic table buffering
	ENDIF
ENDFOR

IF THIS.oldMultiLocks = "OFF"
	SET MULTILOCKS OFF
ENDIF

IF THIS.oldSetFields = "ON"
	SET FIELDS ON
ENDIF

SET REFRESH TO THIS.oldRefresh

ENDPROC
PROCEDURE Error
Parameters nError, cMethod, nLine
LOCAL aFoxErr,nTotErr
DIMENSION aFoxErr[1]
nTotErr = AERROR(aFoxErr)

DO CASE
CASE INLIST(m.nError,1733,1734)  &&property not found -- traps SETALL()
	RETURN
CASE m.nError=1938  &&no parent
	RETURN
CASE nToterr>0 AND aFoxErr[1,1] = 1420
	* Corrupt Ole object in General field.
	=MESSAGEBOX(aFoxErr[1,2])
	RETURN
CASE nToterr>0 AND aFoxErr[1,1] = 1884
	* Uniqueness ID error
	=MESSAGEBOX(MESSAGE()+CHR(13))
	RETURN
ENDCASE

**** Error Dialog ******
=MESSAGEBOX(MESSAGE(1)+CHR(13)+;
"Error: "+STR(nError)+CHR(13)+;
MESSAGE()+CHR(13)+;
"Method: "+cMethod+CHR(13)+;
"Line: "+STR(nLine))

RETURN TO MASTER

ENDPROC
PROCEDURE Init
#DEFINE C_WIZSTYLE			"WIZSTYLE.VCX"
#DEFINE C_WIZDIR 			"WIZARDS\"
#DEFINE C_PROMPT1_LOC		"Find: "
#DEFINE E_NOSTYLE_LOC		"The class library (WIZSTYLE.VCX) needed by this form could not be found. "+;
							"Please locate."

LOCAL cGridRef,cWizHomePath,separator,cWizStyFile


IF TYPE('THIS.Parent') # "O"
	RETURN
ENDIF

IF SET("TALK") = "ON"
	SET TALK OFF
	THIS.oldTalk = "ON"
ELSE
	THIS.oldTalk = "OFF"
ENDIF


IF ATC(C_WIZSTYLE,SET("CLASSLIB")) = 0
	
	* Returns just the pathname
	cWizHomePath = _WIZARD
	IF '\' $ cWizHomePath
	   cWizHomePath = SUBSTR(m.cWizHomePath,1,RAT('\',m.cWizHomePath))
	   IF RIGHT(m.cWizHomePath,1) = '\' AND LEN(m.cWizHomePath) > 1 ;
	            AND SUBSTR(m.cWizHomePath,LEN(m.cWizHomePath)-1,1) <> ':'
	         cWizHomePath = SUBSTR(m.cWizHomePath,1,LEN(m.cWizHomePath)-1)
	   ENDIF
	ELSE
	   cWizHomePath = ''
	ENDIF

	* Add a backslash unless there is one already there.
	separator = IIF(_MAC,":","\")
	IF !(RIGHT(m.cWizHomePath,1) $ '\:') AND !EMPTY(m.cWizHomePath)
	   m.cWizHomePath= m.cWizHomePath+ m.separator
	ENDIF

	DO CASE
	CASE FILE(C_WIZSTYLE)
		cWizFile = C_WIZSTYLE
	CASE FILE(m.cWizHomePath+C_WIZSTYLE)
		cWizFile = m.cWizHomePath+C_WIZSTYLE
	CASE FILE(m.cWizHomePath+C_WIZDIR+C_WIZSTYLE)
		cWizFile = m.cWizHomePath+C_WIZDIR+C_WIZSTYLE	
	CASE FILE(HOME()+C_WIZSTYLE)
		cWizFile = HOME()+C_WIZSTYLE
	CASE FILE(HOME()+C_WIZDIR+C_WIZSTYLE)
		cWizFile = HOME()+C_WIZDIR+C_WIZSTYLE
	OTHERWISE
		=MESSAGEBOX(E_NOSTYLE_LOC)
		cWizFile = GETFILE("VCX",C_PROMPT1_LOC+C_WIZSTYLE)
	ENDCASE
	
	IF ATC(C_WIZSTYLE,m.cWizFile)#0
		SET CLASS TO (m.cWizFile) ADDITIVE
	ELSE
		* Failed to get WIZSTYLE.VCX file
		RETURN .F.
	ENDIF
	
ENDIF

THIS.InitVars()
THIS.ButtonRefresh()
THIS.NavRefresh()
cGridRef=THIS.GridRef
IF !EMPTY(m.cGridRef)
	* Change this if you desire to have the grid initially selected.
	* THISFORM.&cGridRef..SetFocus()
ENDIF
ENDPROC
PROCEDURE Refresh
**** Special Preview Mode Handling ****
IF THIS.PreviewMode AND THIS.PreviewInit
	THIS.PreviewInit = .F.
	THIS.cmdAdd.Enabled = .F.
	THIS.cmdEdit.Enabled = .F.
	THIS.cmdDelete.Enabled = .F.
	THIS.cmdFind.Enabled = .F.
	THIS.cmdPrint.Enabled = .F.
	THIS.cmdExit.Enabled = .F.
	THIS.nWorkArea = SELECT()
	THIS.GetGridRef()
	THIS.SetAllProp()
	THIS.NavRefresh()
ENDIF

ENDPROC
.�PROCEDURE initvars
#DEFINE C_NOUPDATEVIEW_LOC	"Edits to one or more of the Views may not be permanent. "+;
	"To remedy this, ensure the View's Send SQL Updates checkbox is checked in the View Designer."
#DEFINE C_READONLY_LOC		"The table is Read-Only. You will not be able to edit it."

LOCAL aTablesUsed,nTablesUsed,i,aMems,nTotMem,cWizFile,lShowedMess,cDataEnvRef
DIMENSION aTablesUsed[1]
DIMENSION aMems[1]

THIS.nWorkArea = SELECT()
THIS.oldSetDelete = SET("DELETED")
SET DELETED ON
THIS.oldReprocess = SET("REPROCESS")
SET REPROCESS TO 0

* These properties should not be used. They are reserved for use by
* the Preview button of the Form Wizards.
THIS.PreviewMode = IIF(TYPE("THIS.PreviewMode")#"L",.F.,THIS.PreviewMode)
THIS.PreviewInit = IIF(TYPE("THIS.PreviewInit")#"L",.T.,THIS.PreviewInit)

* Check for data environment
DO CASE
CASE TYPE("THISFORM.DataEnvironment") = "O"
	THIS.UseDataEnv = .T.
	nTotMem = AMEMBERS(aMems,THISFORM.DataEnvironment,2)
	cDataEnvRef = "THISFORM.DataEnvironment"
CASE TYPE("THISFORMSET.DataEnvironment") = "O"
	THIS.UseDataEnv = .T.
	nTotMem = AMEMBERS(aMems,THISFORMSET.DataEnvironment,2)
	cDataEnvRef = "THISFORMSET.DataEnvironment"
	IF TYPE("THISFORM")="O" AND !THISFORM.VISIBLE 
		THISFORM.VISIBLE = .T.
	ENDIF
OTHERWISE
	THIS.UseDataEnv = .F.
ENDCASE

IF THIS.UseDataEnv
	WITH EVAL(m.cDataEnvRef)
		* Check for Views
		FOR i = 1 TO m.nTotMem
			IF UPPER(EVAL("."+aMems[m.i]+".BaseClass")) = "CURSOR"
				WITH EVAL("."+aMems[m.i])
					IF CURSORGETPROP("SourceType",.Alias)#3
						* Check if we need to requery for deleted records.
						* -- Note: Parameterized views are not requeried so all records will be brought over.
						* To remedy this situation you can place a SET DELETED ON command in the
						* BeforeOpenTables event of the DataEnvironment.
						IF THIS.oldSetDelete = "OFF" AND ATC("?",CURSORGETPROP("SQL",.Alias))=0
							=REQUERY(.Alias)
						ENDIF
						* Check if updates are made
						IF !CURSORGETPROP("SendUpdates",.Alias) AND !m.lShowedMess
							=MESSAGEBOX(C_NOUPDATEVIEW_LOC)
							lShowedMess = .T.
						ENDIF
					ENDIF
				ENDWITH
			ENDIF
		ENDFOR
	ENDWITH
ENDIF

IF ISREADONLY()
	WAIT WINDOW C_READONLY_LOC TIMEOUT 2
ENDIF

* Disable appropriate buttons
THIS.cmdAdd.Enabled = !ISREADONLY()
THIS.cmdDelete.Enabled = !ISREADONLY()

IF THIS.PreviewMode
	RETURN
ENDIF

IF THIS.UseDataEnv
	RETURN
ENDIF

* The following code is here to support forms not using a DataEnvironment.
THIS.oldSetFields = SET("FIELDS")
SET FIELDS OFF
THIS.oldMultiLocks = SET("MULTILOCKS")
SET MULTILOCKS ON
THIS.oldRefresh = SET("REFRESH")
SET REFRESH TO 5
IF !EMPTY(ALIAS())
	THIS.oldBuffering=CursorGetProp("buffering")
	m.nTablesUsed = AUSED(aTablesUsed)
	FOR i = 1 TO m.nTablesUsed
		IF CursorGetProp('sourcetype',aTablesUsed[m.i,1])#3	&&skip for views
			=CursorSetProp("buffering",5,aTablesUsed[m.i,1])	&&optimistic table buffering
		ENDIF
	ENDFOR
ENDIF
GO TOP

ENDPROC
PROCEDURE updaterows
#DEFINE	E_FAIL_LOC			"Failed to update table: "
#DEFINE	E_TRIGGERFAIL_LOC	"Trigger failed."
#DEFINE	E_FIELDNULL_LOC		"Field doesn't accept NULL"
#DEFINE	E_FIELDRULE_LOC		"Field rule violated"
#DEFINE	E_RECORDLOCK_LOC	"Record in use by another user"
#DEFINE	E_ROWRULE_LOC		"Row rule violated"
#DEFINE	E_UNIQUEINDEX_LOC	"Unique index violation"
#DEFINE	E_DIRTYREC_LOC		"Data has been changed by another user. Overwrite changes with your edits?"
#DEFINE	E_NOFORCE_LOC		"Could not force table updates."
#DEFINE E_PROMPT_LOC	 	"Error: "
#DEFINE MSGBOX_YES			6

LOCAL aErrors,cErrorMessage,aTablesUsed,nTablesUsed,nTotErr 
LOCAL nFld,i,nOldArea,lSuccess,lInDBC,lOverwrite,lHadMessage

DIMENSION aTablesUsed[1]
DIMENSION aErrors[1]
m.cErrorMessage=""
m.lSuccess = .T.
m.nOldArea = SELECT()
m.nTablesUsed = AUSED(aTablesUsed)

* Can wrap everything in transaction if using strictly DBCs

FOR i = 1 TO m.nTablesUsed

	SELECT (aTablesUsed[m.i,1])

	m.lInDBC = !EMPTY(CURSORGETPROP("Database"))
	m.cErrorMessage = ""
	m.lOverwrite = .F.
	m.lHadMessage = .F.

	DO CASE
	CASE CURSORGETPROP("Buffering") = 1
		* Skip if buffering not on
		LOOP
	CASE GetFldState(0) = 2			&&deleted record
		* Only delete current record and force it
		m.lSuccess = TableUpdate(.F.,.T.)
		IF m.lSuccess				&&successful update
			LOOP
		ENDIF
	CASE !m.lInDBC AND (ATC("2",GetFldState(-1))#0 OR;
		 ATC("3",GetFldState(-1))#0)	
		* Field was edited - in Free Table
		* Since free tables are not supported by transactions,
		* we must process record by record
		m.nModRecord = GetNextMod(0)
		DO WHILE m.nModRecord # 0	&&loop locks all records
			GO m.nModRecord
			m.lSuccess = RLOCK()	&&try to lock record
			IF !m.lSuccess			&&failed to lock record
				m.cErrorMessage = E_RECORDLOCK_LOC
				UNLOCK ALL
				EXIT
			ENDIF
			IF !m.lHadMessage	&&so we don't repeat alert
				* See if record(s) modified by another user
				FOR m.nFld = 1 TO FCOUNT()
					IF TYPE(FIELD(m.nFld)) = "G"	&&skip for General fields
						LOOP					
					ENDIF
					IF OLDVAL(FIELD(m.nFld)) # CURVAL(FIELD(m.nFld))
						m.lHadMessage = .T.
						IF MESSAGEBOX(E_DIRTYREC_LOC,4+48) = MSGBOX_YES
							m.lOverwrite = .T.
						ELSE
							m.lSuccess = .F.
							UNLOCK ALL
							EXIT
						ENDIF
					ENDIF
				ENDFOR
			ENDIF
			m.nModRecord = GetNextMod(m.nModRecord)
		ENDDO
		IF m.lSuccess 	&&was able to lock all records
			m.lSuccess = TableUpdate(.T.,m.lOverwrite)
			IF m.lSuccess &&was able to update all records
				LOOP
			ENDIF	
			UNLOCK ALL
		ENDIF
	CASE m.lInDBC
		BEGIN TRANSACTION
		* Try to update all records in selected table
		m.lSuccess = TableUpdate(.T.,.F.)	&&successful update
		IF m.lSuccess
			END TRANSACTION
			LOOP
		ENDIF
		ROLLBACK
	ENDCASE

	* Handle errors
	nTotErr =AERROR(aErrors)
	DO CASE
	CASE nTotErr = 0
		
	CASE aErrors[1,1] = 1539				&& Trigger failed
		m.cErrorMessage = E_TRIGGERFAIL_LOC
	CASE aErrors[1,1] = 1581				&& Field doesn't accept NULL
		m.cErrorMessage = E_FIELDNULL_LOC
	CASE aErrors[1,1] = 1582				&& Field rule violated
		m.cErrorMessage = E_FIELDRULE_LOC
	CASE aErrors[1,1] = 1700				&& Record in use by another user
		m.cErrorMessage = E_RECORDLOCK_LOC
	CASE aErrors[1,1] = 1583				&& Row rule violated
		m.cErrorMessage = E_ROWRULE_LOC
	CASE aErrors[1,1] = 1884				&& Unique index violation
		m.cErrorMessage = E_UNIQUEINDEX_LOC
	CASE aErrors[1,1] = 1585				&& Record changed by another user

		IF m.lInDBC		&&handle free tables above
			* Display conflict alert
			IF MESSAGEBOX(E_DIRTYREC_LOC,4+48) = MSGBOX_YES
				*Try to force update
				BEGIN TRANSACTION				
				m.lSuccess = TABLEUPDATE(.T.,.T.)
				IF m.lSuccess
					END TRANSACTION
					LOOP
				ELSE
					ROLLBACK
					=MESSAGEBOX(E_NOFORCE_LOC)
				ENDIF			
			ENDIF
		ENDIF

	OTHERWISE
		IF !EMPTY(m.cErrorMessage)	&&for free table handling above
			m.cErrorMessage = E_PROMPT_LOC+aErrors[1,2]
		ENDIF
	ENDCASE

	* Had an error we couldn't handle
	=TABLEREVERT(.T.)  &&revert all records
	m.lSuccess = .F.
	IF !EMPTY(m.cErrorMessage)
		=MESSAGEBOX(E_FAIL_LOC+m.cErrorMessage)
	ENDIF

ENDFOR

SELECT (m.nOldArea)
RETURN m.lSuccess

ENDPROC
PROCEDURE Destroy
* Restore various settings
LOCAL nTablesUsed,aTablesUsed,i,nDECursors,aDECursors,cDataEnvRef 
DIMENSION aTablesUsed[1]

IF TYPE('THIS.Parent') # "O"
	RETURN
ENDIF

IF TYPE("THIS.oldTalk") = "C" AND THIS.oldTalk="ON"
	SET TALK ON
ENDIF

* OLE Servers can still send data back to General fields 
* even though they are not in Edit Mode. We need to reset 
* buffering to 1 so the buffer is not updated by the OLE Server.
* Also, folks might exit out while editing.
IF THIS.UseDataEnv
	DIMENSION aDECursors[1]
	DO CASE
	CASE TYPE("THISFORM.DataEnvironment") = "O"
		nDECursors = AMEMBERS(aDECursors,THISFORM.DataEnvironment,2)
		cDataEnvRef = "THISFORM.DataEnvironment"
	CASE TYPE("THISFORMSET.DataEnvironment") = "O"
		nDECursors = AMEMBERS(aDECursors,THISFORMSET.DataEnvironment,2)
		cDataEnvRef = "THISFORMSET.DataEnvironment"
	ENDCASE
	FOR i = 1 TO m.nDECursors
		WITH EVAL(m.cDataEnvRef + "." + aDECursors[m.i])
			IF USED(.ALIAS) AND ATC("CURSOR",.BaseClass)#0 AND ;
			  CursorGetProp("sourcetype",.ALIAS)=3 AND ;
			  CursorGetProp("buffering",.ALIAS)>1
				=TableRevert(.T.,.ALIAS)
				=CursorSetProp("buffering",1,.ALIAS)	&&optimistic table buffering
			ENDIF
		ENDWITH
	ENDFOR
ENDIF

* Skip if using preview mode
IF THIS.PreviewMode
	RETURN
ENDIF

IF THIS.oldSetDelete = "OFF"
	SET DELETED OFF
ENDIF
SET REPROCESS TO THIS.oldReprocess
SET MESSAGE TO
SELECT (THIS.nWorkArea)

IF THIS.UseDataEnv
	RETURN
ENDIF

* The following code is here to support
* forms not using a DataEnvironment.
m.nTablesUsed = AUSED(aTablesUsed)
FOR i = 1 TO m.nTablesUsed
	IF USED(aTablesUsed[m.i,1]) AND ATC(".TMP",DBF(aTablesUsed[m.i,1]))=0	&&skip for views
		=CursorSetProp("buffering",THIS.oldBuffering,aTablesUsed[m.i,1])	&&optimistic table buffering
	ENDIF
ENDFOR

IF THIS.oldMultiLocks = "OFF"
	SET MULTILOCKS OFF
ENDIF

IF THIS.oldSetFields = "ON"
	SET FIELDS ON
ENDIF

SET REFRESH TO THIS.oldRefresh

ENDPROC
PROCEDURE Error
Parameters nError, cMethod, nLine
LOCAL aFoxErr,nTotErr
DIMENSION aFoxErr[1]
nTotErr = AERROR(aFoxErr)

DO CASE
CASE INLIST(m.nError,1733,1734)  &&property not found -- traps SETALL()
	RETURN
CASE m.nError=1938  &&no parent
	RETURN
CASE nToterr>0 AND aFoxErr[1,1] = 1420
	* Corrupt Ole object in General field.
	=MESSAGEBOX(aFoxErr[1,2])
	RETURN
ENDCASE

**** Error Dialog ******
=MESSAGEBOX(MESSAGE(1)+CHR(13)+;
"Error: "+STR(nError)+CHR(13)+;
MESSAGE()+CHR(13)+;
"Method: "+cMethod+CHR(13)+;
"Line: "+STR(nLine))

RETURN TO MASTER

ENDPROC
PROCEDURE Init
#DEFINE C_WIZSTYLE			"WIZSTYLE.VCX"
#DEFINE C_WIZDIR 			"WIZARDS\"
#DEFINE C_PROMPT1_LOC		"Find: "
#DEFINE E_NOSTYLE_LOC		"The class library (WIZSTYLE.VCX) needed by this form could not be found. "+;
							"Please locate."

LOCAL cWizHomePath,separator,cWizStyFile


IF TYPE('THIS.Parent') # "O"
	RETURN
ENDIF

IF SET("TALK") = "ON"
	SET TALK OFF
	THIS.oldTalk = "ON"
ELSE
	THIS.oldTalk = "OFF"
ENDIF


IF ATC(C_WIZSTYLE,SET("CLASSLIB")) = 0
	* Returns just the pathname
	cWizHomePath = _WIZARD
	IF '\' $ cWizHomePath
	   cWizHomePath = SUBSTR(m.cWizHomePath,1,RAT('\',m.cWizHomePath))
	   IF RIGHT(m.cWizHomePath,1) = '\' AND LEN(m.cWizHomePath) > 1 ;
	            AND SUBSTR(m.cWizHomePath,LEN(m.cWizHomePath)-1,1) <> ':'
	         cWizHomePath = SUBSTR(m.cWizHomePath,1,LEN(m.cWizHomePath)-1)
	   ENDIF
	ELSE
	   cWizHomePath = ''
	ENDIF

	* Add a backslash unless there is one already there.
	separator = IIF(_MAC,":","\")
	IF !(RIGHT(m.cWizHomePath,1) $ '\:') AND !EMPTY(m.cWizHomePath)
	   m.cWizHomePath= m.cWizHomePath+ m.separator
	ENDIF

	DO CASE
	CASE FILE(C_WIZSTYLE)
		cWizFile = C_WIZSTYLE
	CASE FILE(m.cWizHomePath+C_WIZSTYLE)
		cWizFile = m.cWizHomePath+C_WIZSTYLE
	CASE FILE(m.cWizHomePath+C_WIZDIR+C_WIZSTYLE)
		cWizFile = m.cWizHomePath+C_WIZDIR+C_WIZSTYLE	
	CASE FILE(HOME()+C_WIZSTYLE)
		cWizFile = HOME()+C_WIZSTYLE
	CASE FILE(HOME()+C_WIZDIR+C_WIZSTYLE)
		cWizFile = HOME()+C_WIZDIR+C_WIZSTYLE
	OTHERWISE
		=MESSAGEBOX(E_NOSTYLE_LOC)
		cWizFile = GETFILE("VCX",C_PROMPT1_LOC+C_WIZSTYLE)
	ENDCASE
	
	IF ATC(C_WIZSTYLE,m.cWizFile)#0
		SET CLASS TO (m.cWizFile) ADDITIVE
	ELSE
		* Failed to get WIZSTYLE.VCX file
		RETURN .F.
	ENDIF
	
ENDIF

THIS.InitVars()

ENDPROC
PROCEDURE Refresh
**** Special Preview Mode Handling ****
IF THIS.PreviewMode AND THIS.PreviewInit
	THIS.PreviewInit = .F.
	THIS.cmdAdd.Enabled = .F.
	THIS.cmdDelete.Enabled = .F.
	THIS.cmdFind.Enabled = .F.
	THIS.cmdPrint.Enabled = .F.
	THIS.cmdExit.Enabled = .F.
	THIS.nWorkArea = SELECT()
ENDIF

ENDPROC
	container	containersearchclass�Width = 452
Height = 160
BackStyle = 0
TabIndex = 1
BackColor = 192,192,192
remotedelimeter = (.F.)
Name = "searchclass"
bPROCEDURE searchexpr
LOCAL cGetExpr1,cGetExpr2,cJoin,cGetExpr

m.cGetExpr1 = THIS.SearchItem(THIS.cboFields1,THIS.cboOperators1,THIS.txtExpr1)
m.cGetExpr2 = THIS.SearchItem(THIS.cboFields2,THIS.cboOperators2,THIS.txtExpr2)
m.cJoin = IIF(THIS.optGrpAndOr.value = 2," OR "," AND ")

DO CASE
CASE EMPTY(m.cGetExpr1) AND EMPTY(m.cGetExpr2)
	m.cGetExpr = ""
CASE EMPTY(m.cGetExpr2)
	m.cGetExpr = m.cGetExpr1
CASE EMPTY(m.cGetExpr1)
	m.cGetExpr = m.cGetExpr2
OTHERWISE
	m.cGetExpr = m.cGetExpr1+m.cJoin+m.cGetExpr2
ENDCASE

RETURN m.cGetExpr
ENDPROC
PROCEDURE dataexpr
LPARAMETER cDataType,cFldExpr

LOCAL cTmpExpr

DO CASE
CASE INLIST(m.cDataType,"M","G","P","O","U")
	RETURN ""

CASE m.cDataType = "C"
	IF TYPE("'Test'="+m.cFldExpr) # "L"
		IF THIS.REMOTEDELIMETER
			cTmpExpr = '"'+m.cFldExpr+'"'
		ELSE
			cTmpExpr = "["+m.cFldExpr+"]"
		ENDIF
	ELSE
		cTmpExpr = m.cFldExpr
	ENDIF
	
	* Check for case sensitive
	IF THIS.chkCaseSensitive.Value = 0
		m.cTmpExpr= "UPPER("+m.cTmpExpr+")" 
	ENDIF
	RETURN m.cTmpExpr
	
CASE INLIST(m.cDataType,"N","F","I","Y","B")
	* Check for any commas and remove
	RETURN ALLTRIM(STR(VAL(STRTRAN(m.cFldExpr,",")),16,4))

CASE INLIST(m.cDataType,"D","T")
	RETURN "{"+CHRTRAN(m.cFldExpr,"{}","")+"}"

OTHERWISE
	RETURN ""

ENDCASE


ENDPROC
PROCEDURE searchitem
LPARAMETERS oField,oOp,oExpr
LOCAL cExpr,cDataType,cOp,cFldName,cFldExpr,cRetExpr,aExprs,nTotExprs,i

* Check to make sure proper parameters passed
IF TYPE("m.oField")#"O" OR TYPE("m.oOp")#"O" OR TYPE("m.oExpr")#"O"
	RETURN ""
ENDIF

m.cFldName = ALLTRIM(m.oField.Value)
m.cFldExpr = ALLTRIM(m.oExpr.Value)

* If empty expression return empty.
IF EMPTY(m.cFldExpr) AND !INLIST(m.oOp.listitemid,5,6)
	RETURN ""
ENDIF

* Get data type of field
m.cDataType = aWizFList(m.oField.listitemid,2)

IF m.cDataType = "C" AND THIS.chkCaseSensitive.Value = 0
	m.cFldName = "UPPER("+m.cFldName+")" 
ENDIF

* Get the operator language equivalent
DO CASE
CASE m.oOp.listitemid = 1	&& equals
	m.cOp = "="
CASE m.oOp.listitemid = 2	&& not equals
	m.cOp = "<>"
CASE m.oOp.listitemid = 3	&& more than
	m.cOp = ">"
CASE m.oOp.listitemid = 4	&& less than
	m.cOp = "<"
CASE m.oOp.listitemid = 5	&& is blank
	RETURN "EMPTY("+m.cFldName+")"
CASE m.oOp.listitemid = 6	&& is NULL
	RETURN "ISNULL("+m.cFldName+")"
CASE m.cDataType = "L" 		&& don't allow other options for logical type
	m.cOp = "="
CASE m.oOp.listitemid = 7	&& contains
	m.cFldExpr = THIS.DataExpr("C",m.cFldExpr)
	DO CASE
	CASE m.cDataType = "T"
		RETURN "AT("+m.cFldExpr+",TTOC("+m.cFldName+"))>0"
	CASE m.cDataType = "D"
		RETURN "AT("+m.cFldExpr+",DTOC("+m.cFldName+"))>0"
	CASE INLIST(m.cDataType,"N","F","I","Y","B")
		RETURN "AT("+m.cFldExpr+",ALLTRIM(STR("+m.cFldName+")))>0"
	OTHERWISE
		RETURN "AT("+m.cFldExpr+","+m.cFldName+")>0"
	ENDCASE
OTHERWISE
	nTotExprs = OCCURS(",",m.cFldExpr)+1
	DIMENSION aExprs[m.nTotExprs]
	FOR i =  1 TO m.nTotExprs
		DO CASE
		CASE m.i = m.nTotExprs
			aExprs[m.i] = SUBSTR(m.cFldExpr,RAT(",",m.cFldExpr)+1)
		CASE m.i =1
			aExprs[m.i] = LEFT(m.cFldExpr,AT(",",m.cFldExpr)-1)
		OTHERWISE
			aExprs[m.i] = SUBSTR(m.cFldExpr,AT(",",m.cFldExpr,m.i-1)+1,;
				AT(",",m.cFldExpr,m.i)-AT(",",m.cFldExpr,m.i-1)-1)
		ENDCASE
		aExprs[m.i] = THIS.DataExpr(m.cDataType,aExprs[m.i])
	ENDFOR

	DO CASE
	CASE m.oOp.listitemid = 8	&& in
		m.cFldExpr = ""
		FOR i = 1 TO m.nTotExprs
			m.cFldExpr = m.cFldExpr + aExprs[m.i]
			IF	m.i # m.nTotExprs
				m.cFldExpr = m.cFldExpr + ","			
			ENDIF
		ENDFOR
		RETURN "INLIST("+m.cFldName+","+m.cFldExpr+")"
	CASE m.oOp.listitemid = 9	&& between
		IF ALEN(aExprs)=1
			DIMENSION aExprs[2]
			aExprs[2] = aExprs[1]
		ENDIF
		IF ALEN(aExprs)>2
			DIMENSION aExprs[2]
		ENDIF
		RETURN "BETWEEN("+m.cFldName+","+aExprs[1]+","+aExprs[2]+")"
	OTHERWISE
		RETURN ""
	ENDCASE
ENDCASE

DO CASE
CASE INLIST(m.cDataType,"M","G","P","O","U")
	RETURN ""
CASE m.cDataType = "L"
	IF TYPE(m.cFldName+m.cOp+m.cFldExpr) # "L"
		IF (AT(m.cFldExpr,"fFnN")#0 AND m.cOp # "<>") OR (AT(m.cFldExpr,"tTyY")#0 AND m.cOp = "<>")
			m.cFldName = "!"+m.cFldName
		ENDIF
		RETURN m.cFldName
	ENDIF
OTHERWISE
	m.cFldExpr = THIS.DataExpr(m.cDataType,m.cFldExpr)
ENDCASE

IF EMPTY(m.cFldExpr)
	RETURN ""
ELSE
	RETURN m.cFldName+m.cOp+m.cFldExpr
ENDIF


ENDPROC
PROCEDURE Destroy
RELEASE aWizFList

ENDPROC
�� ����%�8�
�U@������%T�
��C����������%T�
��C��	��
������0T�
��C���
��
� OR �� AND 6��
H���.��C�
���C�
��	����T�
������C�
������T�
���
����C�
����	�T�
���
���2�.�T�
���
��
��
����B��
���U	CGETEXPR1	CGETEXPR2CJOINCGETEXPRTHIS
SEARCHITEM
CBOFIELDS1
CBOOPERATORS1TXTEXPR1
CBOFIELDS2
CBOOPERATORS2TXTEXPR2OPTGRPANDORVALUE��������
H����%�C�
��M�G�P�O�U���M�	B������
��C��1�!%�C�'Test'=�
�b�L����%�������T���"�
��"�����T���[�
��]������T���
����%�������"� T�
���UPPER(�
��)���B��
���%�C�
��N�F�I�Y�B���s�B�CCCC�
��,�g��Z����C�
��D�T�����B��{C�
��{}���}��2���	B�����U	CDATATYPECFLDEXPRCTMPEXPRTHISREMOTEDELIMETERCHKCASESENSITIVEVALUE������'��������	�
��D%�C�m.oFieldb�O�C�m.oOpb�O�C�m.oExprb�O����	B�����T�
��C�
�����T�
��C�
�����&%�C�
���C�
��
���
	����	B�����T�
��C�
��
����%%��
��C�����	��F� T�
���UPPER(�
��)���
H�W�����
��
���}�T�
���=����
��
�����T�
���<>����
��
�����T�
���>����
��
�����T�
���<����
��
��� �B��EMPTY(�
��)����
��
���Q�B��ISNULL(�
��)����
��L��u�T�
���=����
��
�����T�
��C�C�
�����
H�������
��T����*B��AT(�
��,TTOC(�
��))>0����
��D��1�*B��AT(�
��,DTOC(�
��))>0��%�C�
��N�F�I�Y�B�����2B��AT(�
��
,ALLTRIM(STR(�
��)))>0��2���$B��AT(�
��,�
��)>0���2���T�
�C�,�
������	��
�
�������(��
�
���
H������
��
�
��K�(T�	��
���C�
�C�,�
���\����
������(T�	��
���C�
�C�,�
��=��2���ZT�	��
���C�
�C�,�
��
���C�,�
��
�C�,�
��
���\���)T�	��
���C�
�C�
��	������
H�&�����
��
�����T�
����������(��
�
����T�
���
�C�
��	��%��
��
�
����T�
���
��,�����&B��INLIST(�
��,�
��)����
��
�	����%�C�	���'�
�	����T�	����C��	���%�C�	���L�
�	�����6B��BETWEEN(�
��,C��	�,C��	�)��2���	B������
H�����%�C�
��M�G�P�O�U�����	B������
��L����"%�C�
��
��
�b�L����R%�C�
��fFnN���
��<>	�#C�
��tTyY���
��<>	��x�T�
���!�
����B��
����2���T�
��C�
��
������%�C�
������	B�������B��
��
��
����UOFIELDOOPOEXPRCEXPR	CDATATYPECOPCFLDNAMECFLDEXPRCRETEXPRAEXPRS	NTOTEXPRSIVALUE
LISTITEMID	AWIZFLISTTHISCHKCASESENSITIVEDATAEXPR
<��U	AWIZFLIST
searchexpr,��dataexpr��
searchitem��Destroy���11RQ�����A�2�r�Q�B���A��AsA�R�����B4�qC�Abac�A�RA�aaaaa�a�Aa��A�A�Q!�AA�����Q�1���A�A�a���QaAAaaA�qAA�Aa��AA�Q�A!!aA�A��A��qA4q2)H$,E&=�DW�)�9remotedelimeter
*searchexpr 
*dataexpr 
*searchitem 
comboboxcombobox
cboFields1searchclass.�FontName = "MS Sans Serif"
FontSize = 8
ControlSource = ""
Height = 23
Left = 11
Style = 2
TabIndex = 1
Top = 25
Width = 141
Name = "cboFields1"
{PROCEDURE Init
LOCAL i
PUBLIC aWizFList
DIMENSION aWizFList[1]
=AFIELDS(aWizFList)
FOR m.i = FCOUNT() TO 1 STEP -1
	IF INLIST(aWizFList[m.i,2],"G","M","U")	&&Memo field
		=ADEL(aWizFList,m.i)
		DIMENSION aWizFList[MAX(1,ALEN(aWizFList,1)-1), ALEN(aWizFList, 2)]
	ENDIF
ENDFOR
THIS.RowSourceType = 5
THIS.RowSource = "aWizFList"
THIS.VALUE = THIS.LIST[1]

ENDPROC
�� ���%]�k�U����7��
�������C�������
��C.�(�����������%%�CC�
����G�M�U�������C��
����(��C�C���D��C�������T������T����	aWizFList��T���C�����UI	AWIZFLISTTHIS
ROWSOURCETYPE	ROWSOURCEVALUELISTInit,��1qq���Q!�AA�q2p)�comboboxcombobox
cboOperators1searchclass.�FontName = "MS Sans Serif"
FontSize = 8
Alignment = 0
Height = 23
Left = 158
Style = 2
TabIndex = 2
Top = 25
Width = 96
Name = "cboOperators1"
qPROCEDURE Init
#DEFINE C_OPERATORS_LOC	"equals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between"
THIS.ADDITEM(C_OPERATORS_LOC)
THIS.VALUE = THIS.LIST[1]

ENDPROC
PROCEDURE InteractiveChange
IF INLIST(THIS.ListItemId,5,6)
	THIS.Parent.TxtExpr1.Value = ""
ENDIF
THIS.Parent.TxtExpr1.ENABLED = !INLIST(THIS.ListItemId,5,6)

ENDPROC
�� ��=K%W�	��U|b��C�Requals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between����T���C�����UTHISADDITEMVALUELISTW%�C�������.�T���������"T�����C�����
��UTHIS
LISTITEMIDPARENTTXTEXPR1VALUEENABLEDInit,��InteractiveChange���1"q3�aA!2��f)�textboxtextboxtxtExpr1searchclass.{FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Left = 260
TabIndex = 3
Top = 25
Width = 176
Name = "txtExpr1"
comboboxcombobox
cboFields2searchclass.�FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Left = 11
Style = 2
TabIndex = 4
Top = 117
Width = 141
Name = "cboFields2"
lPROCEDURE Init
THIS.RowSourceType = 5
THIS.RowSource = "aWizFList"
THIS.VALUE = THIS.LIST[1]

ENDPROC
�� �]%����UCT������T����	aWizFList��T���C�����UTHIS
ROWSOURCETYPE	ROWSOURCEVALUELISTInit,��1�q2a)comboboxcombobox
cboOperators2searchclass.�FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Left = 160
Style = 2
TabIndex = 5
Top = 117
Width = 96
Name = "cboOperators2"
qPROCEDURE Init
#DEFINE C_OPERATORS_LOC	"equals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between"
THIS.ADDITEM(C_OPERATORS_LOC)
THIS.VALUE = THIS.LIST[1]

ENDPROC
PROCEDURE InteractiveChange
IF INLIST(THIS.ListItemId,5,6)
	THIS.Parent.TxtExpr2.Value = ""
ENDIF
THIS.Parent.TxtExpr2.ENABLED = !INLIST(THIS.ListItemId,5,6)

ENDPROC
�� ��=K%W�	��U|b��C�Requals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between����T���C�����UTHISADDITEMVALUELISTW%�C�������.�T���������"T�����C�����
��UTHIS
LISTITEMIDPARENTTXTEXPR2VALUEENABLEDInit,��InteractiveChange���1"q3�aA!2��f)�textboxtextboxtxtExpr2searchclass.|FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Left = 260
TabIndex = 6
Top = 118
Width = 176
Name = "txtExpr2"
optiongroupoptiongroupoptgrpAndOrsearchclass.WAutoSize = .T.
ButtonCount = 2
BackStyle = 0
Value = 1
Height = 46
Left = 50
Top = 55
Width = 58
TabIndex = 7
Name = "optgrpAndOr"
Option1.FontName = "MS Sans Serif"
Option1.FontSize = 8
Option1.BackStyle = 0
Option1.Caption = "\<And"
Option1.Value = 1
Option1.Height = 18
Option1.Left = 5
Option1.Top = 5
Option1.Width = 48
Option1.Name = "Option1"
Option2.FontName = "MS Sans Serif"
Option2.FontSize = 8
Option2.BackStyle = 0
Option2.Caption = "\<Or"
Option2.Value = 0
Option2.Height = 18
Option2.Left = 5
Option2.Top = 23
Option2.Width = 39
Option2.Name = "Option2"
(PROCEDURE Init
THIS.VALUE =1
ENDPROC
�� ��f�%Pd^�UT������UTHISVALUEInit,��11)�labellabellabel1searchclass.�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Field:"
Height = 16
Left = 12
Top = 7
Width = 102
Name = "label1"
labellabellabel2searchclass.�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Operator:"
Height = 16
Left = 158
Top = 7
Width = 93
Name = "label2"
labellabellabel3searchclass.�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Value:"
Height = 16
Left = 262
Top = 7
Width = 165
Name = "label3"
labellabellabel4searchclass.�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Field:"
Height = 16
Left = 12
Top = 99
Width = 102
Name = "label4"
labellabellabel5searchclass.�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Operator:"
Height = 16
Left = 161
Top = 99
Width = 93
Name = "label5"
labellabellabel6searchclass.�FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Value:"
Height = 16
Left = 262
Top = 99
Width = 165
Name = "label6"
checkboxcheckboxchkCaseSensitivesearchclass.�Top = 69
Left = 290
Height = 15
Width = 88
FontName = "MS Sans Serif"
FontSize = 8
AutoSize = .T.
BackStyle = 0
Caption = "Case Sensiti\<ve"
TabIndex = 8
Name = "chkCaseSensitive"
searchclass	container15Classstylebmp\searchcl.bmpstylebmp\searchcl.bmpPixelssearchclass)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0