Content Supported by Sourcelens Consulting

+@VERSION =  0.029cmdColor����M�����������<&P��������u��Vi�����
commandbutton}����M��__�������M�U�貁��j�p�%P
commandbutton�uj�E�P������������2ҁ��Top = 4
Left = 255
Height = 23
Width = 25
FontBold = .T.
FontItalic = .T.
FontName = "Courier New"
FontSize = 9
Caption = "I"
ToolTipText = "Italic"
Name = "cmdItalic"
����rtfcontrols.��t@��t��������뚍M��q����$�l�%P��	cmdItalic������������td�� ����t3������j��|����
commandbutton���������%?���@PjA�R���Dž�����Mȉ
commandbuttonU��σ��j�p�%P�M��l�%P��������M��ޙ����Top = 4
Left = 227
Height = 23
Width = 25
FontBold = .T.
FontName = "Courier New"
Caption = "B"
ToolTipText = "Bold"
Name = "cmdBold"
�1�����詂�����]�}��E��p�%P�Krtfcontrols.@PjA裫���p�%P���������,����[��McmdBoldt{�M��b����to�M�U��������U��0R��<&P�=p�%
commandbuttonP������������2ҁ����у���
commandbutton��U���SV��W�ڃ��=p�%P���p,Left = 172
Top = 4
Name = "Cbofontsize1"
M��}����rtfcontrols.W���D�����t@��t��������렍M��i����$Cbofontsize1����������������������t^�#����t-��combobox�U�蒆���U����������%?���@PjA�K���Dž����<��� ##h(%����U_(T���STATUS ���� MODE��#%�C�����stopped��X�
������UCCMDTHISPARENTMCIALIASDOMCI	PLAYSOUNDTimer,��1�1�A1�)#A���(�����8�4���qbf.����������������������������������������������������QMS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
Courier New, 1, 11, 9, 17, 12, 10, 5, 0
��SV3��c�����3�k�����{������tj3�j
moverlists�����
���T���
�������
���PixelsT�
��C���
�����%��
�C�
����moverbox.bmp�	������
���T���
�	������
moverbox.bmp���
�	������
���T���
�	���mover list boxes������
�	�����T���
�	Class�ZC�
��Z��T�
��C���
����%��
�74�
��
��
��
��
��
��5�
��
��!	container�������H�L����UċM�����������������n�������
moverlists���U������������F;���o
��������|����� ��F:%x���U&G(�#)�T���-��
����UTHISENABLEDTHISFORMREFRESHClick,��1cQ��1s)�soundplayerbg�����
-כ%��i0K��&�I��[�kQ���h�^��Z|6�kgetmcierror^
Ն(�FfU)-s�?<����͚�X����C�k��{�ѿh��rPixels�ʈ��y�E�l}d�E�}�W�����<�Ml�`�*v��I1�P��B��PROCEDURE Click
THISFORM.LockScreen = .T.
FOR i = 1 to THIS.Parent.lstSelected.ListCount
	THIS.Parent.lstSource.AddItem(THIS.Parent.lstSelected.List(i))
ENDFOR
THIS.Parent.lstSelected.Clear
THISFORM.LockScreen = .F.
ENDPROC
U�Q�M��5��{�ap�Top = 102
Left = 186
Height = 25
Width = 37
FontBold = .T.
FontName = "Courier New"
FontSize = 11
Caption = "<<"
TabIndex = 6
ToolTipText = "Remove All Items"
Name = "cmdRemoveAll"
���C����ȋ�U��[��W����GD��W�׋��"S�M��R����E�H�
moverlists.�'��h��M����臜���M��P����cmdRemoveAll���hM빹������U�I���tV�M�Wj�i�
commandbutton�׋M��n�����l�����P�M��&�����l�����]���
commandbutton��u��u��^����������]��S���M�������3����
moverlists.�3�_^[��]ÍU�M���M���E���t:�������M��^=�	cmdRemove%������_^[��]�U3�����S�M�V�E�W�E��E�
commandbutton�M���JT��z���M���������ZT��'�M�����"Arial, 0, 10, 6, 16, 13, 14, 3, 0
NDPROC
 8
*	ELSE
*	cbofontsize
cmdExecuteQBF�������������������������������������������qbf.����������������������������������������������������timer	stopwatchdatacheckercombobox, 10, 6, 16, 13, 14, 3, 0
�n%�day, date, and time controly , cSecDisplay)
This.lblMinPixelsGFontBold = .F.
Height = 25
Style = 2
Width = 217
Name = "fontbox"
1��2_)cbofontname�UJ��C�All text������C�C���� ii�6%� 
�Uw%�C����
��&�F�����������T���-��T�����a��T�����-��
����UTHISPARENT	QBF_TABLEENABLED
CMDEXECUTEQBFCMDCLEARFILTERTHISFORMREFRESHClick,��1gARR�BA�1�)icontrol�E�;���M�j��q�M�U�Q�΋x@�ׅ���9
commandbuttonQ������������P������H�����k���8��
moverlists.xR{t#��
xR{�
8�{�����
8�{��$��葹��3ҋ�checker.bmpchecker.bmpmanages conflictsClass1gPROCEDURE Init
DIMENSION x[1]
=afont(x)
FOR i = 1 TO ALEN(x)
	THIS.AddItem(x[i])
ENDFOR
ENDPROC
Image"

nPos = O��� 66�\%����UW��C�����%�����*.*��P�T���������
������UTHISFORMOLECOMMDLOGSHOWSAVEFILENAMETXTFILENAMEVALUESETFOCUSClick,��1���A1�)6qbf�����������������������������������������������������	container�����������������������������������������������timertimer	cmdAddAll��\�9���P������%����^�A�V3ҋ�
8�{�comboboxvcx��T������UTHISADDITEM	LIST1ombobox1��2_)Classntsunt
			WITH THISFORM.Controls[m.i].pages[m."Arial, 1, 10, 6, 16, 13, 15, 3, 0
clockPixels!F:\VFP\SAMPLES\CONTROLS\clock.bmp!F:\VFP\SAMPLES\CONTROLS\clock.bmp���� ����%Pe_�U

����UTHISFORMRELEASEClick,��1�1!)�~PROCEDURE Click

*!* Clear the filter that was set
SET FILTER TO
GO TOP
THIS.enabled = .F.

THISFORM.Refresh
ENDPROC
�����������������������������������������������������������Width = 201
Height = 133
mcierror = 0
mcierrorstring = 
videofile = 
autoopen = .T.
mcialias = 
autoplay = .T.
autorepeat = .T.
controlsource = 
Name = "videoframe"
�E��7
commandbutton�����2ۡX�{��J�M������V���t�F	��j3ҋ�
commandbutton�QA���}>���X�{��J�����
X�{��B���
moverlists.��.������}���������y}���������m}���&���Class4RTop = 0
Left = 66
Height = 25
Width = 25
Interval = 1000
Name = "tmrSWatch"
���� ���e%Ynh�U
�����UTHISPARENT	INCREMENTTimer,��1�1&)�Pixelsting"
7displays the font sizes available for a particular font
Classbox= "Editing"
Height = 32
Left = 0
Top = 0
Widtimer	containerX��� ??jC%����U1&%�C�_SCREEN.ActiveFormb�O��5�T���9����A�B��
H�R�*���������T�����������������-��C�
FontUnderline���TEXTBOX����-��C�
FontUnderline���EDITBOX�����������*�#��C�
FontUnderline�������U	OFORM
ACTIVEFORMTHISPARENT
NAPPLIESTO
ACTIVECONTROL
FONTUNDERLINEVALUESETALLInteractiveChange,��1a��AA�qar��r1A2)?��� ��%����UQ
�������C���(�������(�C�����J���CC��������UXITHISADDITEMInit,��1���QA1\)�tmrCheckModeNUHAAAAA��w��������������&��
videoframe.��Solution�0�
��d�
videoframea	LOADfACTIVATEfGOTFOCUSfDBcmdAdd���$������}����P�{_^�VW�_������������
commandbuttonH�B����H������H�������N�����1ontbox��P���Y��	��h�t�	���%���7comboboxSource.FontUnderline
ENDCASE
ENDPROCcbofontsize1���QA1\comboboxE Destroy
This.Visible = .F.

ENDPROC
PROCED<��� ##h(%����U_(T���STATUS ���� MODE��#%�C�����stopped��X�
������UCCMDTHISPARENTMCIALIASDOMCI	PLAYVIDEOTimer,��1�1�A1�)#Class�֋��F�E�H���D�����׋�L$��DQ���2���E�͋p�x �����ȅ��VK���Ù�����ƃ��t$<��2�Fcontrol^��Ã�(���D$SVWU����ڋE�H�T$(�,/soundplayer�t������T��맃���T$V�p �H��2��H蕛�DTop = 0
Left = 36
Height = 23
Width = 23
Name = "tmrCheckMode"
Ӌ��C�9XDˍT$�����p��T$����ű�FTop = 96
Left = 120
Height = 23
Width = 23
Name = "tmrCheckMode"
�	tastrcontrolfKEYPRESSfINITfSOLUTIONVLADDKcustomdatachecker/Height = 15
Width = 23
Name = "datachecker"
customPixelsting.gh all the controls on the page
				FOR m.k cbofontname
Left = 125
ToolTipText = "FontName"
Top ="Arial, 0, 10, 6, 16, 13, 14, 3, 0
						CASE cTask = 'INJArial, 0, 9, 5, 15, 12, 13, 3, 0
MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
����Textbox Editbox��g�T��	�
print_report#�������o�&%�C�_SCREEN.ActivPixels�UT���-��UTHISVISIBLCProvides a form that allows users to choose the output of a report.�e%RClassUse Paste to put them in �Top = 71
Left = 186
Height = 25
Width = 37
FontBold = .T.
FontName = "Courier New"
FontSize = 11
Caption = "<"
TabIndex = 5
ToolTipText = "Remove Selected Items"
Name = "cmdRemove"
�!���M���J���������M�����U܍�8����`����}�u�M	stopwatch CASE
	CASE lcType $ "CM"
		lcValue = CHR(34)nsec
nmin
nhour
ield, lcValue
LOCAL lcType
lcType =TPROCEDURE Click
THISFORM.LockScreen = .T.
nCnt = 1
DO WHILE nCnt <= THIS.Parent.lstSelected.ListCount
	IF THIS.Parent.lstSelected.Selected(nCnt)
		THIS.Parent.lstSource.AddItem(THIS.Parent.lstSelected.List(nCnt))
		THIS.Parent.lstSelected.RemoveItem(nCnt)
	ELSE
		nCnt = nCnt + 1
	ENDIF
ENDDO
THISFORM.LockScreen = .F.
ENDPROC
3ҋM������E���$��t��O�������� ���%^vp�UT���C�����UTHIS
TIMEFORMATDblClick,��1�2@)�4�������������������������������������������������������2ITfINTERACTIVECHANGEfSOLUTIONVLMSELKDClassMNWIDTHSfINTERACTIVECHANGEfSOLUTIONVLMULCO�PROCEDURE Click
THISFORM.LockScreen = .T.
FOR i = 1 to THIS.Parent.lstSource.ListCount
	THIS.Parent.lstSelected.AddItem(THIS.Parent.lstSource.List(i))
ENDFOR
THIS.Parent.lstSource.Clear
THISFORM.LockScreen = .F.
ENDPROC
������u
���Hd����Top = 33
Left = 186
Height = 25
Width = 37
FontBold = .T.
FontName = "Courier New"
FontSize = 11
Caption = ">>"
TabIndex = 4
ToolTipText = "Add All Items"
Name = "cmdAddAll"
tպ�
8�{��=�����!����U���VW������p����M��M�Q���� oo�_%&�UwT���a�� �����(�������R�$��CC�����	�������������
�T���-��UTHISFORM
LOCKSCREENITHISPARENTLSTSELECTED	LISTCOUNT	LSTSOURCEADDITEMLISTCLEARClick,��1�AA�1�)oPixelsINITfCLICKfSOLUTIONVLSORTK%�PROCEDURE Click
THISFORM.LockScreen = .T.
* The ListCount value changes whenever the RemoveItem method is called
nCnt = 1
DO WHILE nCnt <= THIS.Parent.lstSource.ListCount
	IF THIS.Parent.lstSource.Selected(nCnt)
		THIS.Parent.lstSelected.AddItem(THIS.Parent.lstSource.List(nCnt))
		THIS.Parent.lstSource.RemoveItem(nCnt)
	ELSE
		nCnt = nCnt + 1
	ENDIF
ENDDO
THISFORM.LockScreen = .F.
ENDPROC
������j������j�M�j����U��Top = 2
Left = 186
Height = 25
Width = 37
FontBold = .T.
FontName = "Courier New"
FontSize = 11
Caption = ">"
TabIndex = 3
ToolTipText = "Add Selected Items"
Name = "cmdAdd"
�	��\��t���t3���Ày�u�D$�P��p��A���D
commandbutton��X��t
�'������X��H�4�������
moverlists.E��P�{;E�~떋׋M����7������},����DlstSelected��t:��t5��8t0�@���?�����t�׋��(���M��0listbox�=���uҋ���}3���E��=P�{~t�M��0�{�listbox��=����6=`�������u
�U�M������
moverlists.ame specified or control source specified!")
9 selected items to the Clipformem to the Clipboard.VCopieprint_reportselected items and cop,OLEObject = C:\WINDOWS\SYSTEM\COMDLG32.OCX
<ReGTop = 88
Left = 278
Height = 100
Width = 100
Name = "oleCommDlog"
criptionWindows Explorprint_report.n040904E4LCompaoleCommDlog�?�Str
olecontrolse44VS_VERSION_INFO
olecontrolwn...�print_report.�&Find������PROCEDURE Timer

cCmd = ("STATUS " + THIS.PARENT.MCIalias + " MODE")
IF THIS.PARENT.doMCI(cCmd) = "stopped" THEN
	THIS.PARENT.playVideo
ENDIF
ENDPROC
KUHAAAAANUHAAAAA��getmcierror^
CRESIZEK9CLICKfINTERACsoundplayer.HD9H@���xH��������T$�H ���
videoframeTIONVOBJECTSKQREFRESHTEXTftmrCheckMode�@�t	3ҋ��"��΋�����@�t�O9�	lstSource THIS.videoFile
	IF EMPTY(cFileName) THEN
		Mlistbox = THIS.controlSource
IF EMPTY(cControlSource) T	stopwatch.�AutoSize = .F.
Top = 71
Left = 4
Height = 23
Width = 72
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Clear Filter"
Enabled = .F.
TabIndex = 25
Name = "cmdClearFilter"
����������������������������������������������Class���������������������������������������������������Pixels��������������������������������������������������	cmdSaveAs&Options...��&To
commandbutton��e�&RefresclockNTop = 3
Left = 8
Height = 12
Width = 14
Interval = 1000
Name = "Timer1"
clock.�*handlerecord compares the current value, old value, and original value of each field, displaying a messagebox if a change or conflict is detected.
*string returns type 'c' equivalent of passed value
*verifychanges Prompts a user to save all changes made to a table or record.
*verifyeachchange Prompts a user to confirm each change he or she made.
*checkconflicts Notifies a user if someone else has changed the data in the table after he or she began editing a record.
PixelsM.cmdExecute.Enabled = .T.

ENDPROC
PROCEDURE v	watch.bmpSQL.Value = lcSQL

THISFORM.cmdClear.Enabled 	watch.bmpSQL = "SELECT * FROM " + lcAlias + " " + lcWHER.stop watch with start, stop, and reset methodsbase tableClass1 + " " + lcRelation1 + " ";
  + lcValue1 + " " + 7 the first part of the WHERE condition
lcWHERE = "WHER	container + ;
		lcRelation2 + " " + lcValue2
ENDIF

	stopwatchd2.Value,lcValue2)	
	lcWHERE = lcOperand + " "�AutoSize = .T.
FontBold = .T.
FontName = "Arial"
FontSize = 13
BackStyle = 0
Caption = "00"
Height = 22
Left = 68
Top = 5
Width = 20
Name = "lblSeconds"
 = THISFORM.Validate	stopwatch.put the proper delimiters around comparison va
lblSeconds�label COMMENT RESERVED            label(:I�AutoSize = .T.
FontBold = .T.
FontName = "Arial"
FontSize = 13
BackStyle = 0
Caption = "00"
Height = 22
Left = 37
Top = 5
Width = 20
Name = "lblMinutes"
 _RAA0N09Z2 54796852	stopwatch. _RAA0MM0SN 547968029�����
lblMinuteslistboxideo

*!* Get needed properties into variables
RTop = 0
Left = 66
Height = 25
Width = 25
Interval = 1000
Name = "tmrSWatch"
	tmrSWatchlabel WINDOWS _RAA0MM0S8 547968029label�������AutoSize = .T.
FontBold = .T.
FontName = "Arial"
FontSize = 13
BackStyle = 0
Caption = "00"
Height = 22
Left = 6
Top = 5
Width = 20
Name = "lblhours"
 WINDOWS _R9818X	stopwatch. WINDOWS _R9818X1QY 547968029-
=
W
llblhours_o~	Q	label WINDOWS _QU00R9JY0 547labelVU 5479680291ET���FontBold = .T.
FontName = "Arial"
FontSize = 13
Alignment = 0
BackStyle = 0
Caption = ":"
Height = 19
Left = 58
Top = 4
Width = 11
Name = "lblSeparator2"
 WIN	stopwatch. WINDOWS _QU00R9JSB 547968526�
lblSeparator2/F\	container	container�PROCEDURE Timer
THIS.Parent.nSec = THIS.Parent.nSec + 1

IF THIS.Parent.nSec = 60
	THIS.Parent.nSec = 0
	THIS.Parent.nMin = THIS.Parent.nMin + 1
ENDIF

IF THIS.Parent.nMin = 60
	THIS.Parent.nMin = 0
	THIS.Parent.nHour = THIS.Parent.nHour + 1
ENDIF
THIS.Parent.UpdateDisplay
THIS.Parent.ElapsedSeconds = (THIS.Parent.nHour * 3600) + ;
                               (THIS.Parent.nMin * 60) + ;
                                (This.Parent.nSec)

ENDPROC
	tmrSWatchsamples.vcx��1������l��������}��E��p�%P���Mcbofontsize��$��p�%P��j�U�R�E��
p�%P���DHeight = 25
Left = 4
Top = 4
Width = 157
Name = "Cbofontname1"
�؃������&P�U�P��PjA�����j�E�P�
 W���_��rtfcontrols.���_^[��]ù�t�����Ƀ����a������Cbofontname1M�Q�U�j3��E�jARP�A�w��2ɋE���@r�@combobox���M�趄��PV��<&P���t���u^�p�%P���PROCEDURE Timer
#DEFINE LONGDATE_LOC CDOW(DATE())+" "+CMONTH(DATE())+" "+ ;
			ALLTRIM(STR(DAY(DATE())))+", "+ALLTRIM(STR(YEAR(DATE())))

IF This.Parent.TimeFormat = 0
	This.Parent.txtTime.Value = IIF(VAL(SUBSTR(TIME(),1,2))>12, ;
		ALLTRIM(STR((VAL(SUBSTR(TIME(),1,2))-12)))+SUBSTR(TIME(),3,6),TIME())
ELSE
	This.Parent.txtTime.Value = TIME()
ENDIF

THIS.Parent.txtDate.Value = LONGDATE_LOC

ENDPROC
Timer1timertimer.FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
ColumnCount = 0
ColumnWidths = ""
RowSourceType = 0
RowSource = ""
ControlSource = ""
DragIcon = grid\
DragMode = 0
Height = 132
Left = 0
MultiSelect = .T.
NumberOfElements = 0
TabIndex = 1
Top = 0
Width = 169
Name = "lstSource"
ATUS " + ctimerTAlignment = 2
BackStyle = 0
BorderStyle = 0
Value = (IIF(THIS.PARENT.TimeFormat = 0, IIF(VAL(SUBSTR(time(),1,2))>12, 	ALLT(STR((VAL(SUBSTR(time(),1,2))-12)))+SUBSTR(time(),3,6), 		time()),time()))
Enabled = .F.
Height = 21
Left = 184
Top = 5
Width = 57
DisabledForeColor = 0,0,0
DisabledBackColor = 255,255,255
Name = "txtTime"
clock.txtTimetextboxtextboxclock.	stopwatch.5Alignment = 2
BackColor = 255,255,0
BackStyle = 0
BorderStyle = 0
Value = (CDOW(date())+" "+CMONTH(date())+" "+  ALLT(STR(DAY(date())))+", "+ALLT(STR(YEAR(date()))))
Enabled = .F.
Height = 21
Left = 3
Top = 5
Width = 179
DisabledForeColor = 0,0,0
DisabledBackColor = 255,255,255
Name = "txtDate"
txtDatetextboxtextboxtimeformat
label WINDOWS _RlabelENT Screen              	stopwatch.
lblSeparator1USERMiKPROCEDURE DblClick
THIS.TimeFormat = ABS(THIS.TimeFormat - 1)

ENDPROC
ZWidth = 251
Height = 28
BackStyle = 0
BorderWidth = 0
timeformat = 0
Name = "clock"
	container�PROCEDURE Click

* Display file dialog
thisform.oleCommDlog.ShowSave()

IF thisform.oleCommDlog.FileName <> "*.*"
	THISFORM.txtFileName.Value = thisform.oleCommDlog.FileName
	THISFORM.txtFileName.SetFocus
ENDIF
ENDPROC
�(Em�Top = 83
Left = 228
Height = 19
Width = 19
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Caption = "..."
Enabled = .F.
Name = "cmdSaveAs"
���&Go to...
commandbutton�&Toolbarc�Sta,PROCEDURE Click
THISFORM.Release
ENDPROC
LTERSHOWSAprint_report.�GL%/�Width = 409
Height = 132
BackStyle = 0
BorderWidth = 0
mousex = 0
mousey = 0
candropicon = DRAGMOVE.CUR
nodropicon = NODROP01.CUR
dragthreshold = 8
Name = "moverlists"
��7	container�E�;���M�j��q�M�U�Q�΋x@�ׅ���9	cmdCancelFORM.txtFileName.SetFocus
ENDIF
ENDPROC
����	container	container	stopwatch`Width = 94
Height = 25
nsec = 0
nmin = 0
nhour = 0
elapsedseconds = 0
Name = "stopwatch"
�PROCEDURE start
This.tmrSWatch.enabled = .t.
ENDPROC
PROCEDURE stop
This.tmrSWatch.enabled = .f.
ENDPROC
PROCEDURE Reset
This.nSec = 0
This.nMin = 0
This.nHour = 0
This.UpdateDisplay
ENDPROC
PROCEDURE updatedisplay
cSecDisplay = ALLTRIM(STR(This.nSec))
cMinDisplay = ALLTRIM(STR(This.nMin))
cHourDisplay = ALLTRIM(STR(This.nHour))

This.lblSeconds.Caption = IIF(This.nSec < 10, "0" + cSecDisplay , cSecDisplay)
This.lblMinutes.Caption = IIF(This.nMin < 10, "0" + cMinDisplay , cMinDisplay)
This.lblHours.Caption = IIF(This.nHour < 10, "0" + cHourDisplay , cHourDisplay)

ENDPROC
PROCEDURE Init
nMin = 0
nSec = 0
nHour = 0

ENDPROC
timer�nsec
nmin
nhour
elapsedseconds The time displayed in the stopwatch in elapsed seconds.
*start 
*stop 
*Reset ,Property Description will appear here.
*updatedisplay 
`Width = 94
Height = 25
nsec = 0
nmin = 0
nhour = 0
elapsedseconds = 0
Name = "stopwatch"
�PROCEDURE selectall
LPARAMETERS oList
LOCAL lnCnt
FOR lnCnt = 1 to oList.ListCount
	oList.Selected(lnCnt) = .T.
ENDFOR
ENDPROC
PROCEDURE Init
This.lstSource.DragIcon = This.CanDropIcon
This.lstSelected.DragIcon = This.CanDropIcon

ENDPROC
 is returned.
cRetString = space(80)
nRetValue = mciSendStr
commandbuttonORM.txtFileName.Value = thisform.oleCommDlo�nsec
nmin
nhour
elapsedseconds The time displayed in the stopwatch in elapsed seconds.
*start 
*stop 
*Reset ,Property Description will appear here.
*updatedisplay 
�nsmallestfont for scalable fonts, smallest allowable fontsize
nlargestfont for scalable fonts, specifies the largest allowable fontsize
*filllist 
�������UXITHIS�FontBold = .F.
Height = 25
Style = 2
ToolTipText = "FontSize"
Width = 44
nsmallestfont = 6
nlargestfont = 24
Name = "cbofontsize"
orm.ControlCount
			IF oForm.Controls(i).Base
commandbutton.ShowSave()

IF thisform.oleCommDlog.File�PROCEDURE Timer
THIS.Parent.nSec = THIS.Parent.nSec + 1

IF THIS.Parent.nSec = 60
	THIS.Parent.nSec = 0
	THIS.Parent.nMin = THIS.Parent.nMin + 1
ENDIF

IF THIS.Parent.nMin = 60
	THIS.Parent.nMin = 0
	THIS.Parent.nHour = THIS.Parent.nHour + 1
ENDIF
THIS.Parent.UpdateDisplay
THIS.Parent.ElapsedSeconds = (THIS.Parent.nHour * 3600) + ;
                               (THIS.Parent.nMin * 60) + ;
                                (This.Parent.nSec)

ENDPROC
�PROCEDURE start
This.tmrSWatch.enabled = .t.
ENDPROC
PROCEDURE stop
This.tmrSWatch.enabled = .f.
ENDPROC
PROCEDURE Reset
This.nSec = 0
This.nMin = 0
This.nHour = 0
This.UpdateDisplay
ENDPROC
PROCEDURE updatedisplay
cSecDisplay = ALLTRIM(STR(This.nSec))
cMinDisplay = ALLTRIM(STR(This.nMin))
cHourDisplay = ALLTRIM(STR(This.nHour))

This.lblSeconds.Caption = IIF(This.nSec < 10, "0" + cSecDisplay , cSecDisplay)
This.lblMinutes.Caption = IIF(This.nMin < 10, "0" + cMinDisplay , cMinDisplay)
This.lblHours.Caption = IIF(This.nHour < 10, "0" + cHourDisplay , cHourDisplay)

ENDPROC
PROCEDURE Init
nMin = 0
nSec = 0
nHour = 0

ENDPROC
�PROCEDURE Click

*!* In order to clear out all the controls with a controlSource,
*!* we need to start a transaction and append a record (then when
*!* we are done we'll rollback the transaction so the new record
*!* doesn't get added to the table

IF !EMPTY(THIS.Parent.QBF_table) THEN
	SELECT (THIS.Parent.QBF_table)
ENDIF

BEGIN TRANSACTION

APPEND BLANK

THIS.Enabled = .F.

THIS.Parent.cmdExecuteQBF.Enabled = .T.
THIS.Parent.cmdClearFilter.enabled = .F.

THISFORM.Refresh
ENDPROC
������������������������������������������������������������
commandbutton�������������������������������������������timer��BD�;��T$L�L$������|$\�L$<��W�_��G�Qsamples.vcx������������������cbofontname�u�G�|���U�	���H�S�V�p�%PW��y��,�<
��ࡱ�>��	������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Root Entry����������y��^��OleObjectData����eAccessObjSiteData&������������\ChangedProps������������M���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<�����+/I�OO*.txtText (*.txt)|*.t\$828C4C820-401A-101B-A3C9-08002B2F49FB�	FileNameH*.txtFilterHText xtA(*.txt)|*.txt��ays the properties of thqbf�����������������������������������������������������)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
���������������1																																																							combobox																																																�PROCEDURE filllist
LPARAMETERS cFontName

THIS.Clear

DIMENSION aSizes[1]
=AFONT(aSizes, cFontname)
IF aSizes[1] = -1  && The font is scalable
	lScalable = .T.
	nLen = THIS.nLargestFont
	nStart = THIS.nSmallestFont
ELSE
	nLen = ALEN(aSizes)
	nStart = 1
	lScalable = .F.
ENDIF

IF lScalable
	FOR i = nStart TO nLen
		THIS.AddItem(ALLTRIM(STR(i)))
	ENDFOR
ELSE
	FOR i = nStart TO nLen
		THIS.AddItem(ALLTRIM(STR(aSizes[i])))
	ENDFOR
ENDIF

ENDPROC
ize
		THIS.chkBold.Value = oS�Top = 42
Left = 261
Height = 23
Width = 72
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Cancel = .T.
Caption = "Cancel"
Name = "cmdCancel"
����
������Top = 14
Left = 261
Height = 23
Width = 72
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Caption = "OK"
Default = .T.
Name = "cmdOK"
PGREPORTOUTPUTVALUERELEASE���� ���3%�~8�U�&%�C�_SCREEN.ActiveFormb�O��E�T���9���T�������Q�B��
H�b�t�������z�B���������
T��C���%���������
H�����������N�&%�C�oControl.ForeColorb�N���T��	�����J�*%�C�oControl.ItemForeColorb�N��F�T��
��������������'��C�	ForeColor��TEXTBOX����'��C�	ForeColor��EDITBOX��������������C�	ForeColor�������������t�
T��C���%�������p�
H�)�l���������1%�C�oForm.ActiveControl.BackColorb�N����T���
�������5%�C�!oForm.ActiveControl.ItemBackColorb�N����T���������������;�'��C�	BackColor��TEXTBOX����'��C�	BackColor��EDITBOX����������l���C�	BackColor��������T������UOFORM
ACTIVEFORMOCONTROL
ACTIVECONTROLTHISVALUE
NFORECOLORTHISFORM
NAPPLIESTO	FORECOLOR
ITEMFORECOLORSETALL
NBACKCOLOR	BACKCOLOR
ITEMBACKCOLORi��C�Colors���� ��C�Set ForeColor...���� ��C�Set BackColor...����T������UTHISADDITEM	LISTINDEXInteractiveChange,��Init^��1a��AA�AAA�!�Aa��AAAqqB�AAB�!�A1�Q1AAAqqB�AAA4a2�3�9)����� oo�_%&�UwT���a�� �����(�������R�$��CC�����	�������������
�T���-��UTHISFORM
LOCKSCREENITHISPARENT	LSTSOURCE	LISTCOUNTLSTSELECTEDADDITEMLISTCLEARClick,��1�AA�1�)oprint_report.���?����(!9��������cmdOK���������
����?�����9���
commandbuttone specified in the cReport property of this
commandbutton�Ui
H�
�b��C�����k�L�AutoSize = .T.
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "File Name:"
Height = 15
Left = 37
Top = 85
Width = 52
Name = "Label2"
��AutoSize = .T.
FontBold = .T.
FontName = "Arial"
FontSize = 13
BackStyle = 0
Caption = ":"
Height = 22
Left = 26
Top = 4
Width = 8
Name = "lblSeparator1"
L��� 33��%����U(&%�C�_SCREEN.ActiveFormb�O��5�T���9����A�B��
H�R�!���������T�����������������*��C�
FontItalic���TEXTBOX����*��C�
FontItalic���EDITBOX�����������!� ��C�
FontItalic�������U	OFORM
ACTIVEFORMTHISPARENT
NAPPLIESTO
ACTIVECONTROL
FONTITALICVALUESETALLInteractiveChange,��1a��AA�qar��rB2)3D��� ++g$%����U"&%�C�_SCREEN.ActiveFormb�O��5�T���9����A�B��
H�R����������T�����������������(��C�FontBold���TEXTBOX����(��C�FontBold���EDITBOX��������������C�FontBold�������U	OFORM
ACTIVEFORMTHISPARENT
NAPPLIESTO
ACTIVECONTROLFONTBOLDVALUESETALLInteractiveChange,��1a��AA�qar��r�A2�)+distinct_values_combo																																			FPROCEDURE Click
#DEFINE NO_REPORT_LOC "The report to print must either be specified in the cReport property of the form or passed in as a parameter."
#DEFINE NO_FILENAME_LOC "You must enter a file name."

DO CASE
	CASE EMPTY(THISFORM.cReport) 
		=MESSAGEBOX(NO_REPORT_LOC)
		
	CASE THISFORM.opgReportOutput.value = 1
		THISFORM.Release
		REPORT FORM (THISFORM.cReport) PREVIEW NOCONSOLE
		
	CASE THISFORM.opgReportOutput.value = 2
		THISFORM.Release
		REPORT FORM (THISFORM.cReport) TO PRINTER NOCONSOLE
		
	CASE THISFORM.opgReportOutput.value = 3
		IF EMPTY(THISFORM.txtFileName.value) THEN
			=MESSAGEBOX(NO_FILENAME_LOC)
			THISFORM.txtFileName.SetFocus
		ELSE
			THISFORM.Release
			REPORT FORM (THISFORM.cReport) ;
				TO FILE (THISFORM.txtFileName.value) ;
				ASCII NOCONSOLE
		ENDIF
	
ENDCASE
ENDPROC
��1�1!)�print_report.elease
			REPORT FORM (THISFORM.cReport) ;Label2_FILENAME_LOC)
			THISFORM.txtFileName.SetFocus
label3
		IF EMPTY(THISFORM.txtFileName.value) THEN
			labelO PRINTER NOCONSOLE
		
	CASE THISFORM.opgReportOutimer��D$�P������^��Å�t��@ �V�Ã�H�T$control&�V˒�n�;���鮔kFq�H����=iV��
�hC�]�ia�0Width = 311
Height = 32
Name = "rtfcontrols"
럿�FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Enabled = .F.
Height = 23
Left = 95
Top = 81
Width = 128
Name = "txtFileName"

		THISFORM.Release
		REPORT FORM (THISFOprint_report.		=MESSAGEBOX(NO_REPORT_LOC)
		
	CASE THItxtFileNamet enter a file name."

DO CASE
	CASE EMPTY
tbrediting�������(�C�������=%�C�thisfPixels��%��!�labelRESERVED7MalabelRESERVED5MY1PROCEDURE Timer
THIS.Parent.Increment
ENDPROC
RTop = 2
Left = 52
Height = 25
Width = 25
Interval = 1000
Name = "tmrSWatch"
OBJNAMEM)��� ���%����
�U���T��C�PX��T��C��C�>����T��C�����%�����c�	B�����B�CC�C� ��`��UCMCICMD
CRETSTRING	NRETVALUE
MCISENDSTRINGCERRTHISGETMCIERROR��������
T�����%�C�cErrorb�C��n�%�C��=�*ERROR*��j�T��CC��\g����%�C�cErrorb�N����
T������T��C�X����C��C�>���T������T������B�CC�C� ��`��UCERROR
LCERRORSTRINGNERRORCERRORSTRINGMCIGETERRORSTRINGTHISMCIERRORMCIERRORSTRING!��CC��Z�: ���x��UTHISMCIERRORMCIERRORSTRINGg4��T������(%�C�f�START�
C�f�END��S�T���to ������T��C�g��%�C����}�B����,T��CC�STATUS �� length��g��%���
����B����T���to C�Z�����#T���STATUS �� READY��%�C����true��`�T���SEEK �� �����C������U		CPOSITIONCALIASTHISMCIALIASCPOSCMD	NPOSITIONNMEDIALENGTHDOMCICCMDb%�C�����m�T������%�C����i�4��C�(No filename or control source specified!�x��B�����'cFileName = ALLTRIM(&controlSource)
%�C������B���T������%�C������T������T�������T�9�����#T���STATUS �� READY��%�C���	�true��{�!T���CLOSE �� WAIT����C���	���1T���OPEN "��" alias �� WAIT����C���	��%���
�������C���x��T�9�����B��5��C�SET �� time format milliseconds��	��%���a��L�
���
��T�9�����UTHIS
CONTROLSOURCE	CFILENAME	SOUNDFILECALIASMCIALIASNAMEMOUSEPOINTERCCMDDOMCIMCIERRORMCIERRORSTRINGAUTOPLAY	PLAYSOUND�T������3%�C�STATUS �� mode���playing������C�PAUSE �����%������{�
�����%���a����T���������U	CALIASTHISMCIALIASDOMCIMCIERRORSHOWMCIERROR
AUTOREPEATTMRCHECKMODEINTERVALT������,T��CC�STATUS �� length��g��.T��CC�STATUS ��	 position��g��%�������+��C�SEEK �� to start WAIT�������C�PLAY �����%��������
�����%���a���T��	�
��,���UCALIASTHISMCIALIASNMEDIALENGTHDOMCINMEDIAPOSITIONMCIERRORSHOWMCIERROR
AUTOREPEATTMRCHECKMODEINTERVAL�&T���STATUS ��� READY��%�C����true����$T���CLOSE ��� WAIT����C�����%��������
�����%���a����T���������U	CCMDTHISMCIALIASDOMCIMCIERRORSHOWMCIERROR
AUTOREPEATTMRCHECKMODEINTERVAL

����UTHIS
CLOSESOUND�*|��
mciSendString�	WinMM.DLL�����,|��mciGetErrorString�	WINMM.DLL����+|��SetWindowPos�User32��������U
MCISENDSTRINGWINMMDLLMCIGETERRORSTRINGSETWINDOWPOSUSER32#%���a���
�����UTHISAUTOOPEN	OPENSOUND�����������
H�+���%������	opensound	��|�,��C� Invalid controlSource specified.�x��2���
������UNERRORCMETHODNLINEdomci,��getmcierror���showmcierrorW��setposition���	opensoundY��
pausesoundL��	playsoundZ��
closesound�	��Destroy��Init3��Refresh���ErrorA��1q��R�AR3q����AAA��AqR3�3q�A���A��A�aAAA3��A2#�AAA�q�AAA�A�3�AC��AAS"�A�33�A�A!1AA2���A�A�A"AA2c�BA�A!1AA3�2���3"�A3���Q���A2�
m��1�x54�SX9�
�c�
[�q|��}�0��5l�����)�Class																																																			textboxhe cReport property of this form."
#DEFINE NO_FItextboxRE Click
#DEFINE NO_REPORT_LOC "A report must be�AutoSize = .T.
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 1
Caption = " Report Output "
Height = 15
Left = 20
Top = 7
Width = 75
Name = "lblReportOutput"
ult = .T.
Name = "cmdOK"
��������������������������������print_report.�������������������������������������������lblReportOutput�����������������������������������������labelndbutton�������������������������������������������label37
Top = 85
Width = 52
Name = "Label2"
��������ClassINDOW (thisform.name)
ENDPROC
D���+	stopwatch.TIMESTAMPN
	tmrSWatchPLATFORMCtimer���������������������������������������������������timer����������������������������������������������������nsec
nmin
nhour
elapsedseconds The time displayed in the stopwatch in elapsed seconds.
*start 
*stop 
*reset ,Property Description will appear here.
*updatedisplay 
*increment increment the stopwatch display
�������������������������������	containerF�-thHtY�F��~�u�~u
�0<�lt����F�"Arial, 1, 10, 6, 16, 13, 14, 3, 0

frmnotitlePixelsClass1form
frmnotitle�Top = 0
Left = 0
Height = 150
Width = 300
DoCreate = .T.
BorderStyle = 1
Caption = ""
Closable = .F.
ControlBox = .F.
MaxButton = .F.
MinButton = .F.
Movable = .F.
AlwaysOnTop = .T.
ZoomBox = .F.
Name = "frmnotitle"
form	resizableminitialresize
initialformheight
initialformwidth
addtoarray
setsize
loopthroughcontrols
acontrolstats
PixelsClass1custom	resizable$initialresize Is this the first time the controls are being adjusted?
initialformheight
initialformwidth
*adjustcontrols call from resize event of a form to adjust the placement and size of contained objects.
*addtoarray 
*setsize 
*loopthroughcontrols 
*reset 
^acontrolstats[1,5] 
oHeight = 19
Width = 27
initialresize = .T.
initialformheight = 0
initialformwidth = 0
Name = "resizable"
���������custom������������������������������������������������������ {{=�%�"$��U*&%�C�_SCREEN.ActiveFormb�O��5�T���9����A�B��
H�R�#����������T����C��g�����������*��C�FontSizeC��g�TEXTBOX����*��C�FontSizeC��g�EDITBOX�����������#� ��C�FontSizeC��g�����U	OFORM
ACTIVEFORMTHISPARENT
NAPPLIESTO
ACTIVECONTROLFONTSIZEVALUESETALL������
H�������Y����BR,������2The control doesn't support the selected fontsize.��8%�C�$Application.ActiveForm.ActiveControlb�O������C���������2���fT�	��Error Number: CC�Z�C�
 C�
 �Error Message: CEC�
 C�
 �Procedure: C�t��T�
�C�	�2�x��
H�T�����
���i����
���~�X�2���B���UNERRORCMETHODNLINETHISPARENTREFRESHAPPLICATION
ACTIVEFORM
ACTIVECONTROLLCMSGLNANSWERInteractiveChange,��Error���1a��AA�q�r��rB3��!!��A�fA�AA�AAA2
)){dFontName = "MS Sans Serif"
FontSize = 8
Height = 23
Width = 106
Name = "distinct_values_combo"
File Name:"
Height �PROCEDURE Timer

cCmd = ("STATUS " + THIS.PARENT.MCIalias + " MODE")
IF THIS.PARENT.doMCI(cCmd) = "stopped" THEN
	THIS.PARENT.playSound
ENDIF
ENDPROC
�^�U���SVW���tn��A�10ENDCASE

ACTIVATE WINDOW (thisform.oWindows[m.nGetWitoolbar
	thisform.oWindows[m.nGetWin].backcolor = RGB(25UFontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
ColumnCount = 0
ColumnWidths = ""
RowSourceType = 0
RowSource = ""
ControlSource = ""
DragIcon = grid\
DragMode = 0
FirstElement = 1
Height = 132
Left = 240
MoverBars = .T.
MultiSelect = .T.
NumberOfElements = 0
TabIndex = 2
Top = 0
Width = 169
Name = "lstSelected"
�׋M��W&������j3�j�����蚉�����rtfcontrols.�������0��H�1�Ӆ�uҍ�x��������4���%?��	container���@�
��������t~���t}���t||Top = 4
Left = 283
Height = 23
Width = 25
Caption = "C"
ToolTipText = "Color"
ForeColor = 255,0,0
Name = "cmdColor"
���8���됍M��
����$�l�%P���p�%P������M�裖�������rtfcontrols�M��u�u�u�)����_^[��]���&P�V�N�PROCEDURE Refresh
LPARAMETERS oSource

DO CASE
	CASE THIS.nAppliesTo = 2 && text and edit boxes
		IF TYPE("_SCREEN.ActiveForm") = 'O'
			oForm = _SCREEN.ActiveForm
		ELSE
			RETURN
		ENDIF
		FOR i = 1 to oForm.ControlCount
			IF oForm.Controls(i).BaseClass$"Textbox Editbox"
				THIS.cboFonts.Value = oForm.Controls(i).FontName
				THIS.cboSizes.FillList(THIS.cboFonts.Value)
				THIS.cboSizes.Value = STR(oForm.Controls(i).FontSize)
				THIS.chkBold.Value = oForm.Controls(i).FontBold
				THIS.chkItalic.Value = oForm.Controls(i).FontItalic
				THIS.chkUnderline.Value = oForm.Controls(i).FontUnderline
				EXIT
			ENDIF
		ENDFOR
	OTHERWISE
		IF TYPE("oSource") != 'O'
			RETURN
		ENDIF
		THIS.cboFonts.Value = oSource.FontName
		THIS.cboSizes.FillList(THIS.cboFonts.Value)
		THIS.cboSizes.Value = STR(oSource.FontSize)
		THIS.chkBold.Value = oSource.FontBold
		THIS.chkItalic.Value = oSource.FontItalic
		THIS.chkUnderline.Value = oSource.FontUnderline
ENDCASE
ENDPROC
PROCEDURE Destroy
This.Visible = .F.

ENDPROC
�����\�|����������.T�������� ��t�%A�\�U�����T%�C�_SCREEN.ActiveFormb�O�+C� _SCREEN.ActiveForm.ActiveControlb�O	��~�T���9���T���������B��
H���a����������T��������������,�(��C�FontName���TEXTBOX��	��(��C�FontName���EDITBOX��	���������a���C�FontName����	�����C�����
�����C������U
OFORMOCONTROL
ACTIVEFORM
ACTIVECONTROLTHISPARENT
NAPPLIESTOFONTNAMEVALUESETALLCBOSIZESFILLLISTREFRESHInteractiveChange,��1�A��AA�q1r���q�B�A3-)�*��� M�%R�"t�U*���
H��#�������o�&%�C�_SCREEN.ActiveFormb�O��]�T���9����i�B�������(�����k�+%�C�����Textbox Editbox��g�T��	�
�C��������C��	�
���
�� T���
�CC����Z��T���
�C������T���
�C������T���
�C������!����2�#�%�C�oSourceb�O����B��T��	�
�������C��	�
���
��T���
�C��Z��T���
�����T���
�����T���
������UOSOURCETHIS
NAPPLIESTOOFORM
ACTIVEFORMICONTROLCOUNTCONTROLS	BASECLASSCBOFONTSVALUEFONTNAMECBOSIZESFILLLISTFONTSIZECHKBOLDFONTBOLD	CHKITALIC
FONTITALICCHKUNDERLINE
FONTUNDERLINET���-��UTHISVISIBLERefresh,��Destroy.��1q�Aa��AA�������AAA��AAa��aaaA2�2� �")comboboxILENAME_LOC)
			THISFORM.txtFileName.SetFocus
!�PROCEDURE handlerecord
*---------------------------------------------------------------*
*  This method is called from the CheckConflicts method and the 
*  VerifyEachChange method.  It loops through each field in the
*  current record and compares the current value with the value
*  stored in the table. If a value of 1 is passed to this method,
*  the method also compares the current value with the value in
*  the field before user made any edits.
*
*  RETURNS NUMERIC VALUES:
*    0 -- No Change Made to the Current Value
*    1 -- Successfully Made User-Specified Change
*	 2 -- Unable to Make User-Specifed Change
*---------------------------------------------------------------*

LPARAMETERS lnScope

*--Valid values for lnScope:
* 	0 - Only manage conflicts   && default
*   1 - Also prompt for changed values

* Verify parameter
IF TYPE("m.lnScope") != "N"
	m.lnScope = 0 
ENDIF
IF !BETWEEN(m.lnScope, 0, 1)
	#define WINDMSG_LOC "Invalid value passed to conflictmanager.handlerecord"
	WAIT WINDOW WINDMSG_LOC
ENDIF

* Declare constants & variables
#define CR_LOC CHR(13)
#define SAVE_LOC "Do you want to overwrite the current value with your change?" + CR_LOC + "(Choose 'Cancel' to restore the original value.)"
#define CONFLICT_LOC "Data Conflict"
#define VERIFY_LOC "Verify Changes"
#define ORG_LOC "Original Value: "
#define CUR_LOC "Current Value: " 
#define CHG_LOC "Your change: "
#define MEMO_LOC " is a Memo field."
#define FIELD_LOC "Field: "
#define RECORD_LOC "Record Number: "
#define VALCHG1_LOC "A value has been changed by another user."
#define VALCHG2_LOC "A value has been changed."

LOCAL lnChoice, lnField, lcField, luOldVal, luCurVal, luField, llMadeChange, llSuccess
m.llMadeChange = .F.
m.llSuccess = .T.

* refresh current record in views before checking for conflicts
IF CURSORGETPROP('SourceType') != 3 && not a local table
	=REFRESH()
ENDIF

* Check each field in the record for conflict or value change
FOR m.lnField = 1 to FCOUNT()
	m.lnChoice = 0
	
	m.lcField = FIELD(m.lnField)
	IF TYPE(m.lcField) = "G"
		LOOP && Can't check general fields
	ENDIF
	m.luOldVal = OLDVAL(m.lcField)
	m.luCurVal = CURVAL(m.lcField)
	
	DO CASE
		* -----< check for conflicts only >--------
		CASE m.lnScope = 0
			IF m.luOldVal != m.luCurVal
				m.llMadeChange = .T.  
				m.lnChoice = MESSAGEBOX(VALCHG1_LOC + CR_LOC + FIELD_LOC + lcField + CR_LOC + ;
				RECORD_LOC + ALLTRIM(STR(RECNO())) + ;
					IIF(TYPE("m.lcField") != "M", CR_LOC + CR_LOC + ORG_LOC + THIS.String(m.luOldVal) + ;
					CR_LOC + CUR_LOC + THIS.String(m.luCurVal) + ;
					CR_LOC + CHG_LOC + THIS.String(EVAL(m.lcField)), CR_LOC + CR_LOC + m.lcField + MEMO_LOC) + ;
					CR_LOC + CR_LOC + SAVE_LOC, + 3+48+0, CONFLICT_LOC)					
			ENDIF
		* -----< check for conflicts and verify all changes >--------
		CASE m.lnScope = 1 && Verify all changes
			m.luField = EVAL(m.lcField)
			IF m.luOldVal != m.luField OR m.luCurVal != m.luField
				m.llMadeChange = .T.  
				m.lnChoice = MESSAGEBOX(VALCHG2_LOC + CR_LOC + FIELD_LOC + m.lcField + CR_LOC + ;
				RECORD_LOC + ALLTRIM(STR(RECNO())) + ;
					IIF(TYPE("m.lcField") != "M", CR_LOC + CR_LOC + ORG_LOC + THIS.String(m.luOldVal) + ;
					CR_LOC + CUR_LOC + THIS.String(m.luCurVal) + ;
					CR_LOC + CHG_LOC + THIS.String(EVAL(m.lcField)), CR_LOC  + CR_LOC + m.lcField + MEMO_LOC) + ;
				CR_LOC + CR_LOC + SAVE_LOC, + 3+48+0, VERIFY_LOC)
			ENDIF
	ENDCASE
	DO CASE
	CASE m.lnChoice = 7 && No, don't save changes
		REPLACE (m.lcField) WITH m.luCurVal
	CASE m.lnChoice = 2 && Cancel, restore original value
		REPLACE (m.lcField) WITH m.luOldVal
	ENDCASE
ENDFOR
IF m.llMadeChange
	m.llSuccess = TABLEUPDATE(.F., .T.)
	RETURN IIF(m.llSuccess, 1, 2)
ELSE
	RETURN 0 
ENDIF

ENDPROC
PROCEDURE string
*---------------------------------------------------------------*
*  This method is called from the HandleRecord method.  It 
*  returns the character equivalent of the value passed in as a
*  parameter.  If a memo field is passed in, a notice to this
*  effect is returned rather than the value in the memo field so
*  that potentially large amounts of text aren't displayed in the 
*  messagebox.
*---------------------------------------------------------------*

LPARAMETERS luValue

m.uType = TYPE('m.luValue')
DO CASE
	CASE m.uType = 'C'
		RETURN ALLTRIM(m.luValue)
	CASE INLIST(m.uType, 'N', 'Y')
		RETURN ALLTRIM(STR(m.luValue))
	CASE m.uType = 'D'
		RETURN DTOC(m.luValue)
	CASE m.uType = 'T'
		RETURN TTOC('m.luValue')
	CASE m.uType = 'L'
		RETURN IIF(m.luValue, '.T.', '.F.')
	CASE uType = 'M'
		RETURN 'Memo field'
ENDCASE
ENDPROC
PROCEDURE verifychanges
*---------------------------------------------------------------*
*  If any changes have been made to the table or record, prompt the
*  user to save the changes.  If the user says 'yes,' all changes
*  are saved.  Any changes made to the data by other users after
*  this user made the change and before the change was committed
*  will be lost.
*
*  RETURNS NUMERIC VALUES:
*    0 -- No Changes Made to the Current Values
*    1 -- Successfully Made All User Changes
*	 2 -- Unable to Write One or More User-Specifed Changes to Table
*---------------------------------------------------------------*

* Declare constants & variables
#define SAVECHG_LOC 'Do you want to save your changes?'
#define SAVECHG2_LOC 'Save Changes'
#define NOBUFF_LOC2 'Data buffering is not enabled.'

LOCAL lnChoice, llMadeChange, lnSuccess
m.llMadeChange = .F.
m.lnSuccess = 0

* If the user has changed anything, prompt to save or discard changes
DO CASE
	CASE INLIST(CURSORGETPROP('Buffering'), 2,3) && Row Buffering
		IF '2' $ GETFLDSTATE(-1)
			m.llMadeChange = .T.
		ENDIF
	CASE INLIST(CURSORGETPROP('Buffering'), 4,5) && Table Buffering
		IF GETNEXTMODIFIED(0) > 0
			m.llMadeChange = .T.
		ENDIF
	OTHERWISE
		WAIT WINDOW NOBUFF_LOC NOWAIT
ENDCASE

IF m.llMadeChange
	m.lnChoice = MESSAGEBOX(SAVECHG_LOC, 4+32, SAVECHG2_LOC)
	IF m.lnChoice = 6 && Yes
		m.lnSuccess = IIF(TABLEUPDATE(.T.,.T.), 1, 2)
	ELSE
		=TABLEREVERT(.T.)
	ENDIF
ENDIF	
RETURN m.lnSuccess
ENDPROC
PROCEDURE verifyeachchange
*--------------------------------------------------------------------
*  If any changes have been made to the table or record, for each
*  change, display the old value and the new value, prompting the
*  user to save or discard the change.  Conflict management is also
*  included in the HandleRecord method.
*
*  RETURNS NUMERIC VALUES:
*    0 -- No Changes Made to the Current Values
*    1 -- Successfully Made User-Specified Changes
*	 2 -- Unable to Write One or More User-Specifed Changes to Table
*---------------------------------------------------------------*

#define NOBUFF_LOC3 'Data buffering is not enabled.'
LOCAL lnSuccess, lnRec
m.lnSuccess = 0

DO CASE
	CASE INLIST(CURSORGETPROP('Buffering'), 2,3) && Row Buffering
		IF '2' $ GETFLDSTATE(-1)				 && Data has changed
			m.lnSuccess = THIS.HandleRecord(1)
		ENDIF	
	CASE INLIST(CURSORGETPROP('Buffering'), 4,5) && Table Buffering
		m.lnRec = GETNEXTMODIFIED(0)
		DO WHILE m.lnRec > 0
			GO m.lnRec
			m.lnSuccess = IIF(m.lnSuccess != 2, THIS.HandleRecord(1), 2)
			m.lnRec = GETNEXTMODIFIED(m.lnRec)	
		ENDDO
	OTHERWISE									 && No Buffering
		WAIT WINDOW NOBUFF_LOC NOWAIT
ENDCASE
RETURN m.lnSuccess
ENDPROC
PROCEDURE checkconflicts
*---------------------------------------------------------------*
*  Checks to see whether another user has changed the value 
*  stored in a table.  If so, calls HandleRecord to display
*  the new value and allow the user to decide what to do.
*
*  RETURNS NUMERIC VALUES:
*    0 -- No Changes Made to the Current Values
*    1 -- Successfully Made User-Specified Changes
*	 2 -- Unable to Make Write One or More User-Specifed Changes to Table
*---------------------------------------------------------------*

#define NOBUFF1_LOC 'Data buffering is not enabled.'
LOCAL lnSuccess, llnRec
m.lnSuccess = 0  

DO CASE
	CASE INLIST(CURSORGETPROP('Buffering'), 2,3) && Row Buffering
		IF '2' $ GETFLDSTATE(-1)				 && Data has changed
			m.lnSuccess = THIS.HandleRecord(0)
		ENDIF	
	CASE INLIST(CURSORGETPROP('Buffering'), 4,5) && Table Buffering
		m.llnRec = GETNEXTMODIFIED(0)
		DO WHILE m.llnRec > 0
			GO m.llnRec
			m.lnSuccess = IIF(m.lnSuccess != 2, THIS.HandleRecord(0), 2)
			m.llnRec = GETNEXTMODIFIED(m.llnRec)	
		ENDDO
	OTHERWISE									 && no buffering
		WAIT WINDOW NOBUFF_LOC NOWAIT
ENDCASE
RETURN m.lnSuccess
ENDPROC
�Width = 92
Height = 27
BackStyle = 0
BorderWidth = 0
nsec = 0
nmin = 0
nhour = 0
elapsedseconds = 0
Name = "stopwatch"
�u���u��t��N��
�u���N�~�믋�*䊇B�F��B�t��
tbreditingPV��������V��������V������E�����nArial, 0, 9, 5, 15, 12, 13, 3, 0
Courier New, 1, 9, 7, 16, 12, 8, 4, 0
Courier New, 3, 9, 7, 16, 12, 10, 4, 0
�\���E�j�Width = 33
Height = 36
BorderWidth = 0
mcierror = 0
mcierrorstring = 
autoopen = .T.
mcialias = 
autoplay = .T.
autorepeat = .T.
controlsource = 
Name = "soundplayer"
��d�J%�MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
MS Sans Serif, 1, 8, 6, 13, 11, 12, 2, 0
MS Sans Serif, 2, 8, 5, 13, 11, 11, 2, 0
MS Sans Serif, 4, 8, 5, 13, 11, 11, 2, 0
rm�N��T����
��FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Value = 0
Height = 22
Left = 266
Style = 2
ToolTipText = "ForeColor and BackColor"
Top = 6
Width = 69
Name = "cboColor"
�u�E��E� ���E�E��0�u�A�����t �u�uj�u�u�u���
tbrediting.ine\macros.rtfgc:\vssfiles\vfpdocs\buildh	��� ��m�%(�
s�U%T����-��T����-��UTHISFORMTXTFILENAMEENABLED	CMDSAVEAS%T����-��T����-��UTHISFORMTXTFILENAMEENABLED	CMDSAVEAS%T����a��T����a��UTHISFORMTXTFILENAMEENABLED	CMDSAVEASoptPreview.Click,��optPrinter.Click���
optFile.Click���1221`���3	)�Pixels���(!9����������%�C����cboColorocs\buildhlp\online\macros.rtffc:\vssfiles\vcomboboxvssfiles\vfpdocs\buildhlp\online\macros.rtfecomboboxy.rtfcc:\vssfiles\vfpdocs\buildhlp\online\lc
tbrediting.es\vfpdocs\buildhlp\online\lckevent.rtf`crtfcontrols�u�u�������:���U���4S�U�V�M�W3��u�	containerP3���3��U���DSVW����������&P�U�P��6�j�E�P��W��������u3�_^[��]���`��jA�]��$Class�t"j��S��W������؅�u3�������C� �%P��c(tFPixels7�Ct�jA�U���_���j�E�P��W���l�����t��H��3PROCEDURE adjustcontrols
IF THIS.InitialResize
	THIS.LoopThroughControls("INITIALIZE_AND_ADJUST")
	THIS.InitialResize = .F.
ELSE
	THIS.LoopThroughControls("ADJUST")
ENDIF
ENDPROC
PROCEDURE addtoarray
LPARAMETERS oControl
nLen = ALEN(THIS.aControlStats,1)
THIS.aControlStats[nLen,1] = oControl.Top / THIS.InitialFormHeight
THIS.aControlStats[nLen,2] = oControl.Left / THIS.InitialFormWidth
THIS.aControlStats[nLen,3] = oControl.Height / THIS.InitialFormHeight
THIS.aControlStats[nLen,4] = oControl.Width / THIS.InitialFormWidth
THIS.aControlStats[nLen,5] = IIF(TYPE("oControl.FontSize") = 'U', 0, oControl.FontSize)
DIMENSION THIS.aControlStats[nLen+1, 5]

ENDPROC
PROCEDURE setsize
LPARAMETERS oControl, nPos
oControl.Top = THISFORM.Height * THIS.aControlStats[nPos,1]
oControl.Left = THISFORM.Width * THIS.aControlStats[nPos,2]
oControl.Width = THISFORM.Width * THIS.aControlStats[nPos,4]
IF !oControl.Baseclass $ "Textbox Spinner"
	oControl.Height = THISFORM.Height * THIS.aControlStats[nPos,3]
ENDIF

*IF oControl.Baseclass = "Commandbutton"
*	IF TXTWIDTH(oControl.caption) > oControl.width 
*		oControl.FontSize = 8
*	ELSE
*		oControl.FontSize = 10
*	ENDIF
*ENDIF

ENDPROC
PROCEDURE loopthroughcontrols
LPARAMETERS cTask
* Valid parameters for cTask are 'Initialize_And_Adjust' and 'Adjust'
cTask = UPPER(cTask)

nOldDecimal = SET("DECIMAL")
SET DECIMAL TO 4

#define BASE_CLASS "Commandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner"

nPos = 0
THISFORM.LockScreen = .T.
FOR m.i = 1 TO THISFORM.ControlCount
	oControl = THISFORM.Controls[m.i]
	IF oControl.Baseclass$BASE_CLASS
		nPos = nPos + 1
		DO CASE
			CASE cTask = 'INITIALIZE_AND_ADJUST'
				THIS.AddToArray(oControl)
				THIS.SetSize(oControl, nPos)
			CASE cTask = 'ADJUST'
				THIS.SetSize(oControl, nPos)
		ENDCASE
	ENDIF
	*A pageframe can contain only pages
	IF THISFORM.Controls[m.i].Baseclass$"Pageframe"
		*Loop through each page of the pageframe
		FOR m.j = 1 TO THISFORM.Controls[m.i].PageCount
			WITH THISFORM.Controls[m.i].pages[m.j]
				*loop through all the controls on the page
				FOR m.k = 1 TO .ControlCount
					IF .Controls[m.k].Baseclass$BASE_CLASS
						nPos = nPos + 1
						DO CASE
							CASE cTask = 'INITIALIZE_AND_ADJUST'
								THIS.AddToArray(.Controls[m.k])
								THIS.SetSize(.Controls[m.k], nPos)
							CASE cTask = 'ADJUST'
								THIS.SetSize(.Controls[m.k], nPos)
						ENDCASE
					ENDIF
				ENDFOR
			ENDWITH
		ENDFOR
	ENDIF			
ENDFOR

THISFORM.LockScreen = .F.
SET DECIMAL TO nOldDecimal
ENDPROC
PROCEDURE Init
THIS.InitialFormHeight = THISFORM.Height
THIS.InitialFormWidth = THISFORM.Width
ENDPROC
PROCEDURE reset
THIS.InitialResize = .T.
DIMENSION THIS.aControlStats[1,5]
ENDPROC
�Q��(�����M�Q�M�輶��h�mcierror Specifies the result of the last MCI command executed.
mcierrorstring Stores the error string from the last MCI command executed.
autoopen Specifies whether the video file specified should be automatically opened when the class is created.
mcialias Specifies the alias for the video file when calling MCI commands.  If empty, the name of the file is used.
autoplay Specifies whether the video file should automatically play after opening.
autorepeat If .T., video will continuously play
soundfile Specifies the sound file associated with the Sound Player.
controlsource Specifies the source of data to which an object is bound.
*domci Executes a MCI command.
*getmcierror Stores the last MCI error into properties of the class.
*showmcierror Displays the result of the last MCI command in a messagebox.
*setposition Allows the user to set the position of the media file; Valid values are Start, End, or a number representing milliseconds.
*opensound Opens the sound file.
*pausesound Pauses the currently playing sound.
*playsound Plays the loaded sound file.
*closesound Closes the loaded sound file and releases it's resources.
�
�y4�����@
uB������:�D$jP3ҋ���BTop = 6
Left = 266
Height = 22
Width = 0
Name = "Separator2"
ildhlp\online\lckkey.rtfbc:\vssfiles\vfpdocs\build
Separator2^c:\vssfiles\vfpdocs\buildhlp\online\lck_i-gmousex stores x coordinate of mouse pointer position
mousey stores y coordinate of mouse pointer position
candropicon Cursor when dropping is okay
nodropicon
dragthreshold number of pixels a user has to move the mouse with the left mouse button down for the drag method to be called.
*selectall selects all items in the listbox passed in as a parameter
""))

ENDPROC
��� ����%u���U����
T����������(������9%�C�%THISFORM.Controls(nCnt).controlSourceb�U���F%�CC�����
�(C�THISFORM.Controls(nCnt).valueb�U	���0T��CC����
C�������	��%�C��
���T���� AND ����������T���-��T�����a��%�C��
��b�T��CC��굛���SET FILTER TO &cFilter
T���
��a��#)�
����UCFILTERNCNTTHISFORMCONTROLCOUNTCONTROLS
CONTROLSOURCE
CCONDITIONTHISPARENTPARSECONDITIONVALUEENABLED
CMDQBFMODECMDCLEARFILTERREFRESHClick,��1q���b�AAAAC�AQA�BR�1)����� ����%H �U�
H�
����C�������y��C�mThe report to print must either be specified in the cReport property of the form or passed in as a parameter.�x�����������
����?�����9����������
����?����(!9����������%�C������[�'��C�You must enter a file name.�x��
��������
����?�����(�����9���UTHISFORMCREPORTOPGREPORTOUTPUTVALUERELEASETXTFILENAMESETFOCUSClick,��1�!�r�r�rQq����AB1;)��PROCEDURE InteractiveChange
IF TYPE("_SCREEN.ActiveForm") = 'O'
	oForm = _SCREEN.ActiveForm
	oControl = oForm.ActiveControl
ELSE
	RETURN
ENDIF
DO CASE 
	CASE This.Value = 1
		RETURN
	CASE This.Value = 2 && Get ForeColor
		nForeColor = GETCOLOR()
		IF nForeColor > -1
		DO CASE
			CASE THISFORM.nAppliesTo = 1 && current control
				IF TYPE("oControl.ForeColor") = "N"
					oControl.ForeColor = nForeColor
				ELSE
					IF TYPE("oControl.ItemForeColor") = "N"
						oControl.ItemForeColor = nForeColor
					ENDIF
				ENDIF
			CASE THISFORM.nAppliesTo = 2 && text and edit boxes
				oForm.SetAll('ForeColor', nForeColor, 'TEXTBOX')
				oForm.SetAll('ForeColor', nForeColor, 'EDITBOX')
			
			CASE THISFORM.nAppliesTo = 3 && All controls
				oForm.SetAll('ForeColor', nForeColor)
		ENDCASE
		ENDIF

	CASE This.Value = 3 && Get BackColor
		nBackColor = GETCOLOR()
		IF nBackColor > -1
		DO CASE
			CASE THISFORM.nAppliesTo = 1 && current control
				IF TYPE("oForm.ActiveControl.BackColor") = "N"
					oForm.ActiveControl.BackColor = nBackColor
				ELSE
					IF TYPE("oForm.ActiveControl.ItemBackColor") = "N"
						oForm.ActiveControl.ItemBackColor = nBackColor
					ENDIF
				ENDIF
			CASE THISFORM.nAppliesTo = 2 && text and edit boxes
				oForm.SetAll('BackColor', nBackColor, 'TEXTBOX')
				oForm.SetAll('BackColor', nBackColor, 'EDITBOX')
			
			CASE THISFORM.nAppliesTo = 3 && All controls
				oForm.SetAll('BackColor', nBackColor)
		ENDCASE
		ENDIF		
ENDCASE
THIS.Value = 1


ENDPROC
PROCEDURE Init
THIS.AddItem("Colors")
THIS.AddItem("Set ForeColor...")
THIS.AddItem("Set BackColor...")
THIS.ListIndex = 1

ENDPROC
uWV����]����V����jWV�7�����	separator\lck_i-z.rtf]c:\vssfiles\vfpdocs\buildhlp\o	separatorldhlp\online\lck_i-z.rtf\c:\vssfiles\vfpdoc��� ���3%]�u�U���������%�C�
cConditionb�C��C�T��C�����T��C�C�.������%�C��
����%�C�
cConditionb�CM���m%��<��
�==���LIKE��
�<>��
�!=��	�#��	�=��	�>����T��������%�C������
H�7����C�b�CM��p�$T���� = C�" �C�" ���C�b�DT���� T���� = {C�*�}��2���T���� = C�Z�������
T������	B����U
CCONDITIONCCONTROLSOURCELCRETCONDITIONLCFIELDNAMEparsecondition,��1����A���AA��QAQ��AA��A�1�)����� ��(�%/rN�U>T���c����%�C����7�USE IN &cCursor
�UCCURSORTHISNAME\%�C���
��U�%��.��
����j��C�^The table alias must be specified in the controlSource property, in the format 'alias.column'.�x���Q�$T��C��C�.�������*T��C��C���C�.������T������HT���SELECT DISTINCT �� FROM �� INTO CURSOR c����T��������UTHIS
CONTROLSOURCECALIASCCOLUMN
ROWSOURCETYPECSQLNAME	ROWSOURCEDestroy,��Init���1Q�1A23a��A��AA2\w�)�~��� ee�t%��U����%�C�cRepNameb�C��3�T�������%�C�������y��C�mThe report to print must either be specified in the cReport property of the form or passed in as a parameter.�x��B�-���%�C��0
�������C�The report file '���' does not exist.C�
 C�
 �nYou must specify a valid report file to print in the cReport property of the form or passed in as a parameter.�x��B�-���UCREPNAMETHISFORMCREPORTInit,��1w�A"�qA2qqA5u)e���� ���%`�
o�U�T���a��
T�����+����������%�C���������$��CC�����
����	����C����������T��������T���-��UTHISFORM
LOCKSCREENNCNTTHISPARENTLSTSELECTED	LISTCOUNTSELECTED	LSTSOURCEADDITEMLIST
REMOVEITEMClick,��1����Aq�AA�1I)����� ��>�%�3
�UC�����������(�����<�T������a����UOLISTLNCNT	LISTCOUNTSELECTED/T��������T��������UTHIS	LSTSOURCEDRAGICONCANDROPICONLSTSELECTED	selectall,��Init���1qq�AA2aa2{��)�PROCEDURE InteractiveChange
IF TYPE("_SCREEN.ActiveForm") = 'O'
	oForm = _SCREEN.ActiveForm
ELSE
	RETURN
ENDIF

DO CASE
	CASE THIS.Parent.nAppliesTo = 1	&& Current Control
		oForm.ActiveControl.FontUnderline = THIS.Value
		
	CASE THIS.Parent.nAppliesTo = 2	&& All textboxes and editboxes
		oForm.SetAll('FontUnderline', THIS.Value, 'TEXTBOX')		
		oForm.SetAll('FontUnderline', THIS.Value, 'EDITBOX')		
	
	CASE THIS.Parent.nAppliesTo = 3	&& All Controls
		oForm.SetAll('FontUnderline', THIS.Value)
ENDCASE

ENDPROC
les\vfpdocs\buildhlp\online\lck_i-
tbrediting.cs\buildhlp\online\lck_i-z.rtfSc:\vssfilechkUnderlinefiles\vfpdocs\buildhlp\online\lck_i-z.rtfRPROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode = 63 AND nShiftAltCtrl = 1
	THIS.Parent.SelectAll(THIS)
ENDIF
ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF nButton = 1 && Left Mouse
	IF ABS(nXCoord - THIS.Parent.MouseX) > THIS.Parent.DragThreshold OR ;
			ABS(nYCoord - THIS.Parent.MouseY) > THIS.Parent.DragThreshold
		THIS.Drag
	ENDIF
ENDIF

ENDPROC
PROCEDURE MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
THIS.Parent.MouseX = nXCoord
THIS.Parent.MouseY = nYCoord

ENDPROC
PROCEDURE DragDrop
LPARAMETERS oSource, nXCoord, nYCoord
IF oSource.Name != THIS.Name
	THIS.Parent.cmdAdd.Click
ENDIF

ENDPROC
PROCEDURE DblClick
THIS.Parent.lstSource.AddItem(This.List(This.ListIndex))
This.RemoveItem(This.ListIndex)

ENDPROC
PROCEDURE DragOver
LPARAMETERS oSource, nXCoord, nYCoord, nState
DO CASE
	CASE nState = 0 && Enter
		oSource.DragIcon = THIS.Parent.CanDropIcon
	CASE nState = 1 && Leave
		oSource.DragIcon = THIS.Parent.NoDropIcon
ENDCASE

ENDPROC
�{t3�����������;t���� ���%`�
o�U�T���a��
T�����+����������%�C���������$��CC�����
����	����C����������T��������T���-��UTHISFORM
LOCKSCREENNCNTTHISPARENT	LSTSOURCE	LISTCOUNTSELECTEDLSTSELECTEDADDITEMLIST
REMOVEITEMClick,��1����Aq�AA�1�)����� ��.%)H8�U�%�������d�MT�����CCCC^��\g��#CCCCC^��\g�Z�CC^��\�C^6�����T�����C^���>T�����CC$� CC$!� CCCC$%Z��, CCCC$iZ���UTHISPARENT
TIMEFORMATTXTTIMEVALUETXTDATETimer,��1t��QA�2�)�)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
															%PROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode = 63 AND nShiftAltCtrl = 1
	THIS.Parent.SelectAll(THIS)
ENDIF
ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF nButton = 1 && Left Mouse
	IF ABS(nXCoord - THIS.Parent.MouseX) > THIS.Parent.DragThreshold OR ;
			ABS(nYCoord - THIS.Parent.MouseY) > THIS.Parent.DragThreshold
		THIS.Drag
	ENDIF
ENDIF

ENDPROC
PROCEDURE MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
THIS.Parent.MouseX = nXCoord
THIS.Parent.MouseY = nYCoord

ENDPROC
PROCEDURE DragDrop
LPARAMETERS oSource, nXCoord, nYCoord
IF oSource.Name != THIS.Name
	THIS.Parent.cmdRemove.Click
ENDIF

ENDPROC
PROCEDURE DblClick
THIS.Parent.lstSelected.AddItem(This.List(This.ListIndex))
This.RemoveItem(This.ListIndex)

ENDPROC
PROCEDURE DragOver
LPARAMETERS oSource, nXCoord, nYCoord, nState
DO CASE
	CASE nState = 0 && Enter
		oSource.DragIcon = THIS.Parent.CanDropIcon
	CASE nState = 1 && Leave
		oSource.DragIcon = THIS.Parent.NoDropIcon
ENDCASE


ENDPROC
)

	*!* Once we h�Top = 31
Left = 4
Height = 23
Width = 72
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Query"
Enabled = .F.
TabIndex = 24
Name = "cmdExecuteQBF"
������PROCEDURE Click
LOCAL cFilter
cFilter = ""

*!* First, we need to walk all the controls on the form and find
*!* all controls with a controlSource and has a value in the value property.

FOR nCnt = 1 to THISFORM.ControlCount
	IF TYPE('THISFORM.Controls(nCnt).controlSource') <> "U" THEN
		IF !EMPTY(THISFORM.Controls(nCnt).ControlSource) AND ;
		  TYPE('THISFORM.Controls(nCnt).value') <> "U" THEN
		  
		    *!* Now we need to parse the value property into a proper
		    *!* condition using the parseCondition method of the form
			cCondition = THIS.Parent.parseCondition(THISFORM.Controls(nCnt).value,THISFORM.Controls(nCnt).controlSource)
			
			*!* If there is a condition, add it to are overall filter
			IF !EMPTY(cCondition) THEN
				cFilter = cFilter + " AND " + cCondition
			ENDIF
		ENDIF
	ENDIF
ENDFOR

*!* We need to rollback the transaction to discard the APPEND'ed record
ROLLBACK

THIS.Enabled = .F.
THIS.Parent.cmdQBFMode.Enabled = .T.

*!* This removes the " AND " keyword that is not needed for the 
*!* first condition added to cFilter
IF !EMPTY(cFilter) THEN
	cFilter = ALLTRIM(SUBSTRC(cFilter,5))
ENDIF

*!* Now we are ready to apply the filter
SET FILTER TO &cFilter

THIS.Parent.cmdClearFilter.enabled = .T.

GO TOP
THISFORM.Refresh
ENDPROC
���������������������������
commandbutton�������������������������������������������cmdClearFilter�������������������������������������������mcierror Specifies the result of the last MCI command executed.
mcierrorstring Stores the error string from the last MCI command executed.
videofile Specifies the video file associated with the Video Frame.
autoopen Specifies whether the video file specified should be automatically opened when the class is created.
mcialias Specifies the alias for the video file when calling MCI commands.  If empty, the name of the file is used.
autoplay Specifies whether the video file should automatically play after opening.
autorepeat If .T., video will continuously play
controlsource Specifies the source of data to which an object is bound.
*domci Executes a MCI command.
*getmcierror Stores the last MCI error into properties of the class.
*openvideo Opens the video file and shows it.
*playvideo Plays the currently loaded video.
*pausevideo Pauses a currently playing video.
*showmcierror Displays the result of the last MCI command in a messagebox.
*closevideo Closes the video file and releases all resources.
*setposition Allows the user to set the position of the media file; Valid values are Start, End, or a number representing milliseconds.
Solutiondd��&������ ��UE%�o*�U�T��a��
H�����C�������g��C�KA lookup table must be specified in the 'lookup_table' property (combo box ���).�0�x��T��-���C�����$�k��C�OA display column must be specified in the 'display_column' property (combo box ���).�0�x��T��-���C�������i��C�MA return column must be specified in the 'return_column' property (combo box ���).�0�x��T��-���
%������%�C���
��3�eT���SELECT ���,��� FROM ���
 ORDER BY ���
 INTO CURSOR �������PT���SELECT ���,��� FROM ���
 INTO CURSOR �����T������T��	����T��
�����
����ULOKTHISLOOKUP_TABLENAMEDISPLAY_COLUMN
RETURN_COLUMNORDER_COLUMNNSQL
ROWSOURCETYPE	ROWSOURCEBOUNDCOLUMNREFRESH������
H��������������C�An invalid display column or return column has been specified in the 'display_column' or 'return_column' properties (combo box ���).�0�x�������F�k��C�OAn invalid column has been specified in the 'order_column' property (combo box ���).�0�x�����
����~��C�bAn invalid table has been specified in the 'display_column' or 'lookup_table' property (combo box ���).�0�x��2�����CCE�0�x���UNERRORCMETHODNLINETHISNAME8T������%�C����1�USE IN &cAlias
�UCALIASTHISNAMEInit,��Error���Destroy���1��!q�!��!��A�1Q�AA�2��!�	!�!���A2�!A1s�e%��3)����� ���
%�: ��UT����a��UTHIS	TMRSWATCHENABLEDT����-��UTHIS	TMRSWATCHENABLED=T������T������T������
����UTHISNSECNMINNHOUR
UPDATEDISPLAY�T��CC��Z���T��CC��Z���T��CC��Z���-T����C���

��0���6��-T��	��C���

��0���6��-T��
��C���

��0���6��UCSECDISPLAYTHISNSECCMINDISPLAYNMINCHOURDISPLAYNHOUR
LBLSECONDSCAPTION
LBLMINUTESLBLHOURS�T��������%����<��R�T������T���������%����<����T������T���������
����-T���������<����UTHISNSECNMINNHOUR
UPDATEDISPLAYELAPSEDSECONDS+T�����:��T�����:��UTHIS
LBLSEPARATOR1CAPTION
LBLSEPARATOR2start,��stop^��reset���
updatedisplay���	increment/��Init:��122�2AAA���3qBqABqA��3BA1-Hd��
�N
n��L))���� ��%�m!+�UB����%���?���	��;���C�������UNKEYCODE
NSHIFTALTCTRLTHISPARENT	SELECTALLy������%�����r�@%�C��������C���������n�
���	���U
NBUTTONNSHIFTNXCOORDNYCOORDTHISPARENTMOUSEX
DRAGTHRESHOLDMOUSEYDRAG<������T�������T�������UNBUTTONNSHIFTNXCOORDNYCOORDTHISPARENTMOUSEXMOUSEY=�����%�������6��������UOSOURCENXCOORDNYCOORDNAMETHISPARENTCMDADDCLICK6 ��CC������������C������UTHISPARENT	LSTSOURCEADDITEMLIST	LISTINDEX
REMOVEITEMu������
H� �n������G�T�������������n�T���������U	OSOURCENXCOORDNYCOORDNSTATEDRAGICONTHISPARENTCANDROPICON
NODROPICONKeyPress,��	MouseMove���	MouseDownw��DragDrop���DblClickw��DragOver���1��AA21�AA31113�qA3131�aaA2���
�"A��"A#)lookup_combo											�																														Pixels																																																		Class																																																			1																																																							combobox																																																*PROCEDURE domci
LPARAMETERS cMCIcmd

*!* This method takes a MCI command string and executes it using
*!* the Windows API function mciSendString

*!* If the function executes successfully, the result is returned.
*!* Otherwise, the error string is returned.
cRetString = space(80)
nRetValue = mciSendString(cMCIcmd,@cRetString,len(cRetString),0)

cErr = THIS.getMCIerror(nRetValue)
IF nRetValue > 0
	RETURN CeRR
ENDIF
   
RETURN TRIM(STRTRAN(cRetString,chr(0),""))

ENDPROC
PROCEDURE getmcierror
LPARAMETERS cError
LOCAL lcErrorString,nError

*!* This method is called from the doMCI to retrieve the last
*!* MCI error string.
*!* This function also saves the last error number and string
*!* into properties associated with the form.

nError=0
IF TYPE("cError")="C"
   IF LEFT(cError,7)="*ERROR*"
      nError=val(substr(cError,8))
   ENDIF
ENDIF   

IF TYPE("cError")="N"
  nError=cError
ENDIF

cErrorString=SPACE(256)  
=mciGetErrorString(nError,@cErrorString,len(cErrorString))

THIS.MCIerror = nError
THIS.MCIerrorString = cErrorString

RETURN TRIM(CHRTRAN(cErrorString,CHR(0),""))

ENDPROC
PROCEDURE openvideo

*!* Get needed properties into variables
cControlSource = THIS.controlSource
IF EMPTY(cControlSource) THEN
	cFileName = THIS.videoFile
	IF EMPTY(cFileName) THEN
		MESSAGEBOX("No filename specified or control source specified!")
		RETURN
	ENDIF
ELSE
	cFileName = ALLTRIM(&cControlSource)
	IF EMPTY(cFileName) THEN
		RETURN
	ENDIF
ENDIF

	
cAlias = THIS.MCIalias
IF EMPTY(cAlias) THEN
	cAlias = THIS.name
	THIS.MCIalias = cAlias
ENDIF

_SCREEN.MousePointer = 11

*!* If video is already loaded, then close it
cCmd = ("STATUS " + cAlias + " READY")
IF THIS.doMCI(cCmd) = "true" THEN
	*!* If one is, close it
	cCMD = ("CLOSE " + cAlias + " WAIT")
	THIS.doMCI(cCmd)
ENDIF

*!* Need to use window handle functions in FoxTools
SET LIBRARY TO HOME() + ".\FOXTOOLS.FLL"
EXTERNAL PROCEDURE MainHWND
EXTERNAL PROCEDURE _WhToHwnd
EXTERNAL PROCEDURE _WOnTop

* Returns Handle of Main VFP Window
Main_hWnd = MainHWND()	

* Get Handle of the form with FOXTOOLS.FLL
cur_window = _WhToHwnd(_WOnTop())

NullPointer = 0

*!* Set up open MCI command into string variable
cCmd = ('OPEN "' + cFileName + '" alias ' + cAlias + ;
  ' style child parent ' + ALLTRIM(STR(cur_window)) + ' WAIT')

THIS.doMCI(cCmd)

*!* Check to see if MCI command succeeded
IF THIS.MCIerror > 0 THEN
	messagebox(THIS.MCIerrorString)
	_SCREEN.MousePointer = 0
	RETURN
ELSE
	*!* It does have visual media, so we need to set up the window
	*!* it will play in.
	
	*!* Get the window handle of the window playing the video
	cCmd = "status " + cAlias + " window handle wait"
	hWin = INT(VAL(THIS.doMCI(cCmd)))

	*!* Once we have the window handle, we need to position
	*!* the video window to be the same position and size
	*!* as our player rectangle on the form
	x1Pos = THIS.LEFT
	y1Pos = THIS.TOP
	x2Pos = x1Pos + THIS.WIDTH
	y2Pos = y1Pos + THIS.HEIGHT

	*!* Use the SetWindowPos Windows function to set position and size
	setWindowPos(hWin,0,x1Pos,y1Pos,x2Pos,y2Pos,0)

	*!* Everything's done, let's show the video
	cCmd = ("WINDOW " + cAlias + " state show")
	THIS.doMCI(cCmd)

ENDIF

*!* Set the device to use milliseconds when setting/getting position
THIS.doMCI("SET " + cAlias + " time format milliseconds")

IF THIS.autoPlay = .T. THEN
	THIS.playVideo
ENDIF

_SCREEN.MousePointer = 0

ENDPROC
PROCEDURE playvideo

cAlias = THIS.MCIalias

*!* First need to see if the media is at the end 
*!* by comparing the total length with the current position
nMediaLength = VAL(THIS.doMCI("STATUS " + cAlias + " length"))
nMediaPosition = VAL(THIS.doMCI("STATUS " + cAlias + " position"))

IF nMediaPosition >= nMediaLength THEN
	*!* The media is at the end, so we need to seek back to the start
	*!* of the clip before playing
	THIS.doMCI("SEEK " + cAlias + " to start WAIT")
ENDIF

*!* Now we can play the media
THIS.doMCI("PLAY " + cAlias)
IF THIS.MCIerror > 0 THEN
	THIS.showMCIerror
ENDIF

IF THIS.autoRepeat = .T. THEN
	THIS.tmrCheckMode.INTERVAL = 100
ENDIF
ENDPROC
PROCEDURE pausevideo

cAlias = THIS.MCIalias

*!* Check to see if there is media acutally playing
IF THIS.doMCI("STATUS " + cAlias + " mode") = "playing" THEN
	*!* Yes there is, so execute the PAUSE MCI command
	THIS.doMCI("PAUSE " + cAlias)
	IF THIS.MCIerror > 0 THEN
		THIS.showMCIerror
	ENDIF
	IF THIS.autoRepeat = .T. THEN
		THIS.tmrCheckMode.INTERVAL = 0
	ENDIF
ENDIF
ENDPROC
PROCEDURE showmcierror
MESSAGEBOX(STR(THIS.MCIerror) + ": " + THIS.MCIerrorString)

ENDPROC
PROCEDURE closevideo

*!* If video is not already closed, then close it
cCmd = ("STATUS " + THIS.MCIalias + " READY")
IF THIS.doMCI(cCmd) = "true" THEN
	*!* If one is, close it
	cCMD = ("CLOSE " + THIS.MCIalias + " WAIT")
	THIS.doMCI(cCmd)
	IF THIS.MCIerror > 0 THEN
		THIS.showMCIerror
	ENDIF
	IF THIS.autoRepeat = .T. THEN
		THIS.tmrCheckMode.INTERVAL = 0
	ENDIF
ENDIF

ENDPROC
PROCEDURE setposition
PARAMETERS cPosition

cAlias = THIS.MCIalias

IF UPPER(cPosition) = "START" or UPPER(cPosition) = "END" THEN
	cPosCmd = "to " + cPosition
ELSE
	nPosition = VAL(cPosition)
	IF EMPTY(nPosition) THEN
		RETURN
	ELSE
		*!* Check to make sure position is not greater than the length
		
		nMediaLength = VAL(THIS.doMCI("STATUS " + cAlias + " length"))
		IF nMediaLength < nPosition THEN
			RETURN
		ELSE
			cPosCmd = "to " + STR(nPosition)
		ENDIF
	ENDIF
ENDIF

*!* Make sure video is loaded
cCmd = ("STATUS " + cAlias + " READY")
IF THIS.doMCI(cCmd) = "true" THEN
	cCmd = "SEEK " + cAlias + " " + cPosCmd
	THIS.doMCI(cCmd)
ENDIF
ENDPROC
PROCEDURE Destroy
THIS.closeVideo
ENDPROC
PROCEDURE Init

*!* This is the primary Windows API function that is used to 
*!* send MCI commands
DECLARE INTEGER mciSendString ;
   IN WinMM.DLL ;
   STRING cMCIString,;
   STRING @cRetString,;
   INTEGER nRetLength,;
   INTEGER hInstance

*!* This function allows us to retrieve the last MCI error that occured
DECLARE INTEGER mciGetErrorString ;
   IN WINMM.DLL ;
   INTEGER nErrorno, ;
   STRING @cBuffer, ;
   INTEGER nBufSize
   
*!* When MCI plays a video, it creates its own Window.  By using
*!* this Windows API function we can position this Window to be
*!* in the same position as our Player rectangle on the form
DECLARE integer SetWindowPos ;
	IN User32 ;
	integer, integer, integer, integer, integer, integer, integer

ENDPROC
PROCEDURE Refresh

IF THIS.autoOpen = .T. THEN
	THIS.openVideo
ENDIF

ENDPROC
PROCEDURE Error
#DEFINE INVALID_CONTROLSOURCE_LOC "Invalid controlSource specified."

LPARAMETERS nError, cMethod, nLine

DO CASE
	CASE nError = 12 and cMethod = "openvideo"
		messageBox(INVALID_CONTROLSOURCE_LOC)
	OTHERWISE
		ERROR (nError)
ENDCASE

ENDPROC
��}k��$�h����� ����%��
�UO���%�C�	m.lnScopeb�N��3�T�
������%�C�
����
����>R,��4Invalid value passed to conflictmanager.handlerecord���#����������
T�
��-��
T�
��a��%�C�
SourceType������	��C������
����(�C.����T�
�����T�
��C�
�/��%�C�
�b�G��M�.��T�
��C�
��_��T�
��C�
����
H�������
������%��
��
�����
T�
��a���T�
��C�)A value has been changed by another user.C�
 �Field: �C�
 �Record Number: CCCOZ�CC�	m.lcFieldb�M�}C�
 C�
 �Original Value: C�
��	�
C�
 �Current Value: C�
��	�
C�
 �
Your change: CC�
���	�
�&C�
 C�
 �
�� is a Memo field.6C�
 C�
 �<Do you want to overwrite the current value with your change?C�
 �0(Choose 'Cancel' to restore the original value.)�3�
Data Conflict�x�����
������T�
��C�
����$%��
��
���
��
�����
T�
��a���T�
��C�A value has been changed.C�
 �Field: �
�C�
 �Record Number: CCCOZ�CC�	m.lcFieldb�M�}C�
 C�
 �Original Value: C�
��	�
C�
 �Current Value: C�
��	�
C�
 �
Your change: CC�
���	�
�&C�
 C�
 �
�� is a Memo field.6C�
 C�
 �<Do you want to overwrite the current value with your change?C�
 �0(Choose 'Cancel' to restore the original value.)�3�Verify Changes�x����
H�������
������>��
�����
�����
������>��
�����
������%��
���7�T�
��C-a���B�C�
�����6���H�	B�����ULNSCOPELNCHOICELNFIELDLCFIELDLUOLDVALLUCURVALLUFIELDLLMADECHANGE	LLSUCCESSTHISSTRING ���T�
��C�	m.luValueb��
H�.����
��C��O�
B�C�
�����C�
��N�Y���w�B�CC�
�Z�����
��D����
B�C�
�*����
��T����B�C�	m.luValue�����
��L����B�C�
��	�.T.��.F.6�����M���B��
Memo field���ULUVALUEUTYPE������
T�
��-��T�
�����
H�8���!�CC�	Buffering��������%��2C������|�
T�
��a���!�CC�	Buffering��������%�C�������
T�
��a���2���R,:�����%��
���y�ET�
��C�!Do you want to save your changes?�$�Save Changes�x��%��
����c�T�
��CCaa�����6���u�
��Ca�����B��
���ULNCHOICELLMADECHANGE	LNSUCCESS
NOBUFF_LOC1����T�
�����
H�'��!�CC�	Buffering������x�%��2C������t�T�
��C������!�CC�	Buffering�������T�
��C����+��
�����#��
���*T�
��C�
���
C�����6��T�
��C�
�����2��R,:�����B��
���U	LNSUCCESSLNRECTHISHANDLERECORD
NOBUFF_LOC1����T�
�����
H�'��!�CC�	Buffering������x�%��2C������t�T�
��C������!�CC�	Buffering�������T�
��C����+��
�����#��
���*T�
��C�
���
C�����6��T�
��C�
�����2��R,:�����B��
���U	LNSUCCESSLLNRECTHISHANDLERECORD
NOBUFF_LOChandlerecord,��string���
verifychanges��verifyeachchange�	��checkconflictsA��1��A��A�1����A��2aAAAA�2Q�VA21A��AA�1A1AAA����A3z��A���A�AQA�!1A2 ����a�AA�A��A�Q1���AA�2���aaA!A��AA��A�2���aaA!A��AA��A�1�2�WiC{K�]r%�pJ�!�)�$��� �7%�r!0�UB����%���?���	��;���C�������UNKEYCODE
NSHIFTALTCTRLTHISPARENT	SELECTALLy������%�����r�@%�C��������C���������n�
���	���U
NBUTTONNSHIFTNXCOORDNYCOORDTHISPARENTMOUSEX
DRAGTHRESHOLDMOUSEYDRAG<������T�������T�������UNBUTTONNSHIFTNXCOORDNYCOORDTHISPARENTMOUSEXMOUSEY=�����%�������6��������UOSOURCENXCOORDNYCOORDNAMETHISPARENT	CMDREMOVECLICK6 ��CC������������C������UTHISPARENTLSTSELECTEDADDITEMLIST	LISTINDEX
REMOVEITEMu������
H� �n������G�T�������������n�T���������U	OSOURCENXCOORDNYCOORDNSTATEDRAGICONTHISPARENTCANDROPICON
NODROPICONKeyPress,��	MouseMove���	MouseDownw��DragDrop���DblClickz��DragOver���1��AA21�AA31113�qA3131�aaA3���
�"A��'F#)Y��� @@�{%����U#���
����
�������C����(��%�C�������p�T��a��T������T���������T��C�����
T�����T��-���
%��������	���(��������CCC�	Z���
��������	���(�������CCCC�	�Z���
�����U	CFONTNAMETHISCLEARASIZES	LSCALABLENLENNLARGESTFONTNSTART
NSMALLESTFONTIADDITEMfilllist,��1q��a����A�qAA�q�AA2�)@lookup_combo																																												�FontName = "MS Sans Serif"
FontSize = 8
Height = 23
Width = 106
display_column = 
lookup_table = 
return_column = 
order_column = 
Name = "lookup_combo"
rint must either be spWPROCEDURE start
This.tmrSWatch.enabled = .T.
ENDPROC
PROCEDURE stop
This.tmrSWatch.enabled = .f.
ENDPROC
PROCEDURE reset
This.nSec = 0
This.nMin = 0
This.nHour = 0
This.UpdateDisplay
ENDPROC
PROCEDURE updatedisplay
cSecDisplay = ALLTRIM(STR(This.nSec))
cMinDisplay = ALLTRIM(STR(This.nMin))
cHourDisplay = ALLTRIM(STR(This.nHour))

This.lblSeconds.Caption = IIF(This.nSec < 10, "0" + cSecDisplay , cSecDisplay)
This.lblMinutes.Caption = IIF(This.nMin < 10, "0" + cMinDisplay , cMinDisplay)
This.lblHours.Caption = IIF(This.nHour < 10, "0" + cHourDisplay , cHourDisplay)

ENDPROC
PROCEDURE increment
THIS.nSec = THIS.nSec + 1

IF THIS.nSec = 60
	THIS.nSec = 0
	THIS.nMin = THIS.nMin + 1
ENDIF

IF THIS.nMin = 60
	THIS.nMin = 0
	THIS.nHour = THIS.nHour + 1
ENDIF
THIS.UpdateDisplay
THIS.ElapsedSeconds = (THIS.nHour * 3600) + ;
                               (THIS.nMin * 60) + ;
                                (This.nSec)

ENDPROC
PROCEDURE Init
#DEFINE SEPARATOR_LOC ':'
This.lblSeparator1.Caption = SEPARATOR_LOC
This.lblSeparator2.Caption = SEPARATOR_LOC
ENDPROC
����������������������������������PROCEDURE domci
LPARAMETERS cMCIcmd

*!* This method takes a MCI command string and executes it using
*!* the Windows API function mciSendString

*!* If the function executes successfully, the result is returned.
*!* Otherwise, the error string is returned.
cRetString = space(80)
nRetValue = mciSendString(cMCIcmd,@cRetString,len(cRetString),0)

cErr = THIS.getMCIerror(nRetValue)
IF nRetValue > 0
	RETURN CeRR
ENDIF
   
RETURN TRIM(STRTRAN(cRetString,chr(0),""))

ENDPROC
PROCEDURE getmcierror
LPARAMETERS cError
LOCAL lcErrorString,nError

*!* This method is called from the doMCI to retrieve the last
*!* MCI error string.
*!* This function also saves the last error number and string
*!* into properties associated with the form.

nError=0
IF TYPE("cError")="C"
   IF LEFT(cError,7)="*ERROR*"
      nError=val(substr(cError,8))
   ENDIF
ENDIF   

IF TYPE("cError")="N"
  nError=cError
ENDIF

cErrorString=SPACE(256)  
=mciGetErrorString(nError,@cErrorString,len(cErrorString))

THIS.MCIerror = nError
THIS.MCIerrorString = cErrorString

RETURN TRIM(CHRTRAN(cErrorString,CHR(0),""))

ENDPROC
PROCEDURE showmcierror
MESSAGEBOX(STR(THIS.MCIerror) + ": " + THIS.MCIerrorString)

ENDPROC
PROCEDURE setposition
PARAMETERS cPosition

cAlias = THIS.MCIalias

IF UPPER(cPosition) = "START" or UPPER(cPosition) = "END" THEN
	cPosCmd = "to " + cPosition
ELSE
	nPosition = VAL(cPosition)
	IF EMPTY(nPosition) THEN
		RETURN
	ELSE
		*!* Check to make sure position is not greater than the length
		
		nMediaLength = VAL(THIS.doMCI("STATUS " + cAlias + " length"))
		IF nMediaLength < nPosition THEN
			RETURN
		ELSE
			cPosCmd = "to " + STR(nPosition)
		ENDIF
	ENDIF
ENDIF

*!* Make sure video is loaded
cCmd = ("STATUS " + cAlias + " READY")
IF THIS.doMCI(cCmd) = "true" THEN
	cCmd = "SEEK " + cAlias + " " + cPosCmd
	THIS.doMCI(cCmd)
ENDIF
ENDPROC
PROCEDURE opensound

*!* Get needed properties into variables
IF EMPTY(THIS.controlSource) THEN
	cFileName = THIS.soundFile
	IF EMPTY(cFileName) THEN
		MESSAGEBOX("No filename or control source specified!")
		RETURN
	ENDIF
ELSE
	cFileName = ALLTRIM(&controlSource)
	IF EMPTY(cFileName) THEN
		RETURN
	ENDIF
ENDIF
	
cAlias = THIS.MCIalias
IF EMPTY(cAlias) THEN
	cAlias = THIS.name
	THIS.MCIalias = cAlias
ENDIF

_SCREEN.MousePointer = 11

*!* If sound is already loaded, then close it
cCmd = ("STATUS " + cAlias + " READY")
IF THIS.doMCI(cCmd) = "true" THEN
	*!* If one is, close it
	cCMD = ("CLOSE " + cAlias + " WAIT")
	THIS.doMCI(cCmd)
ENDIF

*!* Set up open MCI command into string variable
cCmd = ('OPEN "' + cFileName + '" alias ' + cAlias + ' WAIT')

THIS.doMCI(cCmd)

*!* Check to see if MCI command succeeded
IF THIS.MCIerror > 0 THEN
	messagebox(THIS.MCIerrorString)
	_SCREEN.MousePointer = 0
	RETURN
ENDIF

*!* Set the device to use milliseconds when setting/getting position
THIS.doMCI("SET " + cAlias + " time format milliseconds")

IF THIS.autoPlay = .T. THEN
	THIS.playSound
ENDIF

_SCREEN.MousePointer = 0

ENDPROC
PROCEDURE pausesound

cAlias = THIS.MCIalias

*!* Check to see if there is media acutally playing
IF THIS.doMCI("STATUS " + cAlias + " mode") = "playing" THEN
	*!* Yes there is, so execute the PAUSE MCI command
	THIS.doMCI("PAUSE " + cAlias)
	IF THIS.MCIerror > 0 THEN
		THIS.showMCIerror
	ENDIF
	IF THIS.autoRepeat = .T. THEN
		THIS.tmrCheckMode.INTERVAL = 0
	ENDIF
ENDIF
ENDPROC
PROCEDURE playsound

cAlias = THIS.MCIalias

*!* First need to see if the media is at the end 
*!* by comparing the total length with the current position
nMediaLength = VAL(THIS.doMCI("STATUS " + cAlias + " length"))
nMediaPosition = VAL(THIS.doMCI("STATUS " + cAlias + " position"))

IF nMediaPosition >= nMediaLength THEN
	*!* The media is at the end, so we need to seek back to the start
	*!* of the clip before playing
	THIS.doMCI("SEEK " + cAlias + " to start WAIT")
ENDIF

*!* Now we can play the media
THIS.doMCI("PLAY " + cAlias)
IF THIS.MCIerror > 0 THEN
	THIS.showMCIerror
ENDIF

IF THIS.autoRepeat = .T. THEN
	THIS.tmrCheckMode.INTERVAL = 300
ENDIF
ENDPROC
PROCEDURE closesound

*!* If sound is not already closed, then close it
cCmd = ("STATUS " + THIS.MCIalias + " READY")
IF THIS.doMCI(cCmd) = "true" THEN
	*!* If one is, close it
	cCMD = ("CLOSE " + THIS.MCIalias + " WAIT")
	THIS.doMCI(cCmd)
	IF THIS.MCIerror > 0 THEN
		THIS.showMCIerror
	ENDIF
	IF THIS.autoRepeat = .T. THEN
		THIS.tmrCheckMode.INTERVAL = 0
	ENDIF
ENDIF

ENDPROC
PROCEDURE Destroy
THIS.closeSound
ENDPROC
PROCEDURE Init

*!* This is the primary Windows API function that is used to 
*!* send MCI commands
DECLARE INTEGER mciSendString ;
   IN WinMM.DLL ;
   STRING cMCIString,;
   STRING @cRetString,;
   INTEGER nRetLength,;
   INTEGER hInstance

*!* This function allows us to retrieve the last MCI error that occured
DECLARE INTEGER mciGetErrorString ;
   IN WINMM.DLL ;
   INTEGER nErrorno, ;
   STRING @cBuffer, ;
   INTEGER nBufSize
   
*!* When MCI plays a video, it creates its own Window.  By using
*!* this Windows API function we can position this Window to be
*!* in the same position as our Player rectangle on the form
DECLARE integer SetWindowPos ;
	IN User32 ;
	integer, integer, integer, integer, integer, integer, integer

ENDPROC
PROCEDURE Refresh

IF THIS.autoOpen = .T. THEN
	THIS.openSound
ENDIF

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

#DEFINE INVALID_CONTROLSOURCE_LOC "Invalid controlSource specified."

LPARAMETERS nError, cMethod, nLine

DO CASE
	CASE nError = 12 and cMethod = "opensound"
		messageBox(INVALID_CONTROLSOURCE_LOC)
	OTHERWISE
		ERROR (nError)
ENDCASE

ENDPROC
/b���M�����Top = 6
Left = 235
Height = 22
Width = 26
FontName = "MS Sans Serif"
FontSize = 8
FontUnderline = .T.
Caption = "U"
Value = .F.
Style = 1
ToolTipText = "Underline"
Name = "chkUnderline"
les\vfpdocs\buildhlp\online\lck_i-z.rtfXc:\vsscheckboxz.rtfPc:\vssfiles\vfpdocs\buildhlp\online\lccheckboxnline\lck_i-z.rtfOc:\vssfiles\vfpdocs\buildh���� ��m%l�
{�U�T����������%�����<��d�T�������T�����������%�����<����T�������T�����������
�����9T������������<�����UTHISPARENTNSECNMINNHOUR
UPDATEDISPLAYELAPSEDSECONDSTimer,��1�r1�Ar1�A��2�)�distinct_values_comboa file name.�x��
�������comboboxE Init
#DEFINE REPORT_NOT_FOUND_LOC "The reportPROCEDURE InteractiveChange
IF TYPE("_SCREEN.ActiveForm") = 'O'
	oForm = _SCREEN.ActiveForm
ELSE
	RETURN
ENDIF

DO CASE
	CASE THIS.Parent.nAppliesTo = 1	&& Current Control
		oForm.ActiveControl.FontItalic = THIS.Value
		
	CASE THIS.Parent.nAppliesTo = 2	&& All textboxes and editboxes
		oForm.SetAll('FontItalic', THIS.Value, 'TEXTBOX')		
		oForm.SetAll('FontItalic', THIS.Value, 'EDITBOX')		
	
	CASE THIS.Parent.nAppliesTo = 3	&& All Controls
		oForm.SetAll('FontItalic', THIS.Value)

ENDCASE

ENDPROC
files\vfpdocs\buildhlp\online\lck_i-z.rtfB�Top = 6
Left = 210
Height = 22
Width = 26
FontItalic = .T.
FontName = "MS Sans Serif"
FontSize = 8
Caption = "I"
Value = .F.
Style = 1
ToolTipText = "Italic"
Name = "chkItalic"
_i-z.rtf6c:\vssfiles\vfpdocs\buildhlp\online\lck_i-z.rt
tbrediting.hlp\online\lck_i-z.rtfFc:\vssfiles\vfpdoc	chkItalic\vfpdocs\buildhlp\online\lck_i-z.rtfEc:\vsscheckboxc:\vssfiles\vfpdocs\buildhlp\online\lck_i-z.rtcheckboxk_i-z.rtfBc:\vssfiles\vfpdocs\buildhlp\onlin���� ��m%l�
{�U�T����������%�����<��d�T�������T�����������%�����<����T�������T�����������
�����9T������������<�����UTHISPARENTNSECNMINNHOUR
UPDATEDISPLAYELAPSEDSECONDSTimer,��1�r1�Ar1�A��2�)�)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
�UTHISFORformlsd in, the variables are automatically
*!* set to PROCEDURE InteractiveChange
IF TYPE("_SCREEN.ActiveForm") = 'O'
	oForm = _SCREEN.ActiveForm
ELSE
	RETURN
ENDIF

DO CASE
	CASE THIS.Parent.nAppliesTo = 1	&& Current Control
		oForm.ActiveControl.FontBold = THIS.Value
		
	CASE THIS.Parent.nAppliesTo = 2	&& All textboxes and editboxes
		oForm.SetAll('FontBold', THIS.Value, 'TEXTBOX')		
		oForm.SetAll('FontBold', THIS.Value, 'EDITBOX')		
	
	CASE THIS.Parent.nAppliesTo = 3	&& All Controls
		oForm.SetAll('FontBold', THIS.Value)
ENDCASE

ENDPROC
t to send these %1 items to�Top = 6
Left = 185
Height = 22
Width = 26
FontBold = .T.
FontName = "MS Sans Serif"
FontSize = 8
Caption = "B"
Value = .F.
Style = 1
ToolTipText = "Bold"
Name = "chkBold"
:
tbrediting.hlp\online\lck_i-z.rtf&c:\vssfiles\vfpdocchkBoldes\vfpdocs\buildhlp\online\lck_i-z.rtf%c:\vsscheckboxc:\vssfiles\vfpdocs\buildhlp\online\lck_i-z.rtcheckboxk_i-z.rtf"c:\vssfiles\vfpdocs\buildhlp\onlinBTop = 6
Left = 185
Height = 22
Width = 0
Name = "Separator1"
buildhlp\online\lck_i-z.rtf!c:\vssfiles\vfpdocs\bu
tbrediting.hlp\online\lck_i-z.rtf3c:\vssfiles\vfpdoc
Separator1vfpdocs\buildhlp\online\lck_i-z.rtf2c:\vss	separatorc:\vssfiles\vfpdocs\buildhlp\online\lck_i-z.rt	separator_i-z.rtf/c:\vssfiles\vfpdocs\buildhlp\onlin���� ttB>%p���UT����a��UTHIS	TMRSWATCHENABLEDT����-��UTHIS	TMRSWATCHENABLED=T������T������T������
����UTHISNSECNMINNHOUR
UPDATEDISPLAY�T��CC��Z���T��CC��Z���T��CC��Z���-T����C���

��0���6��-T��	��C���

��0���6��-T��
��C���

��0���6��UCSECDISPLAYTHISNSECCMINDISPLAYNMINCHOURDISPLAYNHOUR
LBLSECONDSCAPTION
LBLMINUTESLBLHOURS*
T�����
T�����
T�����UNMINNSECNHOURstart,��stop^��Reset���
updatedisplay���Init/��122�2AAA���3���2-Hd��
�N
i�)t�Height = 136
Width = 342
Desktop = .T.
DoCreate = .T.
AutoCenter = .T.
BorderStyle = 2
Caption = "Print Report"
MaxButton = .F.
MinButton = .F.
WindowType = 1
creport = 
Name = "print_report"
gress.Mismatched pushjmp/popjmp call.CursoPROCEDURE InteractiveChange
IF TYPE("_SCREEN.ActiveForm") = 'O'
	oForm = _SCREEN.ActiveForm
ELSE
	RETURN
ENDIF

DO CASE
	CASE THIS.Parent.nAppliesTo = 1	&& Current Control
		oForm.ActiveControl.FontSize = VAL(THIS.Value)
		
	CASE THIS.Parent.nAppliesTo = 2	&& All textboxes and editboxes
		oForm.SetAll('FontSize', VAL(THIS.Value), 'TEXTBOX')		
		oForm.SetAll('FontSize', VAL(THIS.Value), 'EDITBOX')		
	
	CASE THIS.Parent.nAppliesTo = 3	&& All Controls
		oForm.SetAll('FontSize', VAL(THIS.Value))

ENDCASE

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine
#define NUM_LOC "Error Number: "
#define PROG_LOC "Procedure: "
#define MSG_LOC "Error Message: "
#define CR_LOC CHR(13)
#define BADSIZE_LOC "The control doesn't support the selected fontsize."

DO CASE
	CASE nError = 1881 && Fontsize invalid for the control
		WAIT WINDOW BADSIZE_LOC TIMEOUT 2
		IF TYPE("Application.ActiveForm.ActiveControl") = "O"
			THIS.Parent.Refresh(Application.ActiveForm.ActiveControl)
		ENDIF
	
	OTHERWISE
	*-----------------------------------------------------------
	* Display information about an unanticipated error.
	*-----------------------------------------------------------
		lcMsg = NUM_LOC + ALLTRIM(STR(nError)) + CR_LOC + CR_LOC + ;
				MSG_LOC + MESSAGE( )+ CR_LOC + CR_LOC + ;
				PROG_LOC + PROGRAM(1)
		lnAnswer = MESSAGEBOX(lcMsg, 2+48+512)
		DO CASE
			CASE lnAnswer = 3 &&Abort
				CANCEL
			CASE lnAnswer = 4 &&Retry
				RETRY
			OTHERWISE
				RETURN
		ENDCASE
ENDCASE

ENDPROC
erifP�jSysAnim_FontName = "MS Sans Serif"
FontSize = 8
Height = 22
Left = 136
Top = 6
Name = "cboSizes"
es\vfpdocs\buildhlp\onlin
tbrediting.cs\buildhlp\online\lck_i-z.rtf
c:\vssfilecboSizes\vssfiles\vfpdocs\buildhlp\online\lck_i-z.rtf	comboboxz.rtfc:\vssfiles\vfpdocs\buildhlp\online\lcsamples.vcxne\lck_i-z.rtfc:\vssfiles\vfpdocs\buildhcbofontsizeuildhlp\online\lck_i-z.rtfc:\vssfiles\vfBTop = 6
Left = 136
Height = 22
Width = 0
Name = "Separator3"
c:\vssfiles\vfpdocs\buildhlp\online\lck_i-z.rtfc:
tbrediting.ck_i-z.rtfc:\vssfiles\vfpdocs\buildhlp\o
Separator3dhlp\online\lck_i-z.rtfc:\vssfiles\vfpdoc	separator\vfpdocs\buildhlp\online\lck_i-z.rtf�c:\vss	separatorc:\vssfiles\vfpdocs\buildhlp\online\lck_i-z.rt�PROCEDURE Destroy
cCursor = "c" + THIS.name
IF USED(cCursor) THEN
	USE IN &cCursor
ENDIF
ENDPROC
PROCEDURE Init
#DEFINE NO_TABLE_LOC "The table alias must be specified in the controlSource property, in the format 'alias.column'."

IF !EMPTY(THIS.controlSource) THEN
	IF NOT "." $ THIS.controlSource THEN
		=MESSAGEBOX(NO_TABLE_LOC)
	ELSE
		cAlias = LEFTC(THIS.controlSource,(ATC(".",THIS.controlSource)-1))
		cColumn = RIGHTC(THIS.controlSource,(LENC(THIS.controlSource)-ATC(".",THIS.controlSource)))
		THIS.rowSourceType = 3
		cSQL = "SELECT DISTINCT " + cColumn + " FROM " + cAlias + ;
		  " INTO CURSOR c" + THIS.name
		THIS.rowSource = cSQL
	ENDIF
ENDIF
	
ENDPROC
					7creport Specifies the report to print from this form.
t8PROCEDURE InteractiveChange
LOCAL oForm, oControl
IF TYPE("_SCREEN.ActiveForm") = "O" AND TYPE("_SCREEN.ActiveForm.ActiveControl") = "O"
	oForm = _SCREEN.ActiveForm
	oControl = oForm.ActiveControl
ELSE
	RETURN
ENDIF

DO CASE
	CASE THIS.Parent.nAppliesTo = 1	&& Current Control
		oControl.FontName = This.Value
		
	CASE THIS.Parent.nAppliesTo = 2	&& All textboxes and editboxes
		oForm.SetAll('FontName', This.Value, 'TEXTBOX')
		oForm.SetAll('FontName', This.Value, 'EDITBOX')
	
	*==================================================================
	* comment out the previous 2 lines and uncomment the following lines
	* if you want to affect all controls with a baseclass of textbox 
	* or editbox.
	*------------------------------------------------------------------
	*FOR i = 1 to oForm.ControlCount
	*  <find out what the baseclass property is to avoid having to UPPER>
	*	IF UPPER(oForm.Controls(i).BaseClass) = 'TEXTBOX' OR ;
	*		UPPER(oForm.Controls(i).BaseClass) = 'EDITBOX'
	*		oForm.Controls(i).FontName = THIS.Value
	*	ENDIF
	*ENDFOR
	*==================================================================

	CASE THIS.Parent.nAppliesTo = 3	&& All Controls
		oForm.SetAll('FontName', This.Value)

ENDCASE

THIS.Parent.cboSizes.FillList(THIS.Value)
THIS.Parent.Refresh(oControl)


ENDPROC
jFontName = "MS Sans Serif"
FontSize = 8
Height = 22
Left = 6
Top = 6
Width = 125
Name = "cboFonts"
les\vfpdocs\bu
tbrediting.hlp\online\lck_i-z.rtf�c:\vssfiles\vfpdoccboFontss\vfpdocs\buildhlp\online\lck_i-z.rtf�c:\vsscomboboxc:\vssfiles\vfpdocs\buildhlp\online\lck_i-z.rtsamples.vcx-z.rtf�c:\vssfiles\vfpdocs\buildhlp\onlincbofontname�M������S���j3ҋΉE��E�P�y���]��
\�|+]���Hnappliesto 1 -- applies to current control
-- applies to all controls
܍�H���許����H���Ct
���W�����t�����Pj��s����gCaption = "Editing"
Height = 31
Left = 0
Top = 0
Width = 339
nappliesto = 1
Name = "tbrediting"
c:\vssfiles\vftoolbar���׋��> ��_^��]�U���|����8SVW��������
commandbutton�������������������������������������������
cmdQBFMode����������������������������������������������qbf.�����������������������������������������������������AutoSize = .F.
Top = 3
Left = 4
Height = 23
Width = 72
FontBold = .F.
FontName = "MS Sans Serif"
FontSize = 8
Caption = "\<Enter QBF"
TabIndex = 23
Name = "cmdQBFMode"
�����
commandbutton�������������������������������������������
commandbutton�������������������������������������������	container parsecondition
LPARAMETERS cCondition, cContrFWidth = 80
Height = 97
BorderWidth = 0
qbf_table = 
Name = "qbf"
ontrolSource,(RATC(".",cControlSource)+1))

*!* Cqbf_table Specifies the table to query against.
*parsecondition 
�����������������������������������������������������
commandbutton�������������������������������������������jdisplay_column Specifies the column from lookup_table to display in the drop down list.
lookup_table Specifies the table to lookup the values to display in the drop down.
return_column Specifies the column value to return the value property of the combo box.
order_column Specifies the column to order the records displayed in the drop down list (optional).
														optiongroupny characters in the report.Invalid expressioptiongroupion file.Total label width exceeds allowed sopgReportOutputey.Too many READ commands are in effect.>PROCEDURE optPreview.Click
THISFORM.txtFileName.enabled = .F.
THISFORM.cmdSaveAs.enabled = .F.
ENDPROC
PROCEDURE optPrinter.Click
THISFORM.txtFileName.enabled = .F.
THISFORM.cmdSaveAs.enabled = .F.
ENDPROC
PROCEDURE optFile.Click
THISFORM.txtFileName.enabled = .T.
THISFORM.cmdSaveAs.enabled = .T.
ENDPROC
erver.Error saving the OLE object.Error creating the OLE�ButtonCount = 3
BackStyle = 0
Value = 1
Height = 110
Left = 10
Top = 14
Width = 242
Name = "opgReportOutput"
Option1.FontBold = .F.
Option1.FontName = "MS Sans Serif"
Option1.FontSize = 8
Option1.BackStyle = 0
Option1.Caption = "Print Preview"
Option1.Value = 1
Option1.Height = 15
Option1.Left = 11
Option1.Top = 12
Option1.Width = 80
Option1.AutoSize = .T.
Option1.Name = "optPreview"
Option2.FontBold = .F.
Option2.FontName = "MS Sans Serif"
Option2.FontSize = 8
Option2.BackStyle = 0
Option2.Caption = "Printer"
Option2.Value = 0
Option2.Height = 15
Option2.Left = 11
Option2.Top = 30
Option2.Width = 48
Option2.AutoSize = .T.
Option2.Name = "optPrinter"
Option3.FontBold = .F.
Option3.FontName = "MS Sans Serif"
Option3.FontSize = 8
Option3.BackStyle = 0
Option3.Caption = "File"
Option3.Value = 0
Option3.Height = 15
Option3.Left = 11
Option3.Top = 48
Option3.Width = 34
Option3.AutoSize = .T.
Option3.Name = "optFile"
Row or column position is off the screen.Cannprint_report.ommands are in effect.Compiled code for th���� ttB>%p���UT����a��UTHIS	TMRSWATCHENABLEDT����-��UTHIS	TMRSWATCHENABLED=T������T������T������
����UTHISNSECNMINNHOUR
UPDATEDISPLAY�T��CC��Z���T��CC��Z���T��CC��Z���-T����C���

��0���6��-T��	��C���

��0���6��-T��
��C���

��0���6��UCSECDISPLAYTHISNSECCMINDISPLAYNMINCHOURDISPLAYNHOUR
LBLSECONDSCAPTION
LBLMINUTESLBLHOURS*
T�����
T�����
T�����UNMINNSECNHOURstart,��stop^��Reset���
updatedisplay���Init/��122�2AAA���3���2-Hd��
�N
i�)t�PROCEDURE Init
#DEFINE REPORT_NOT_FOUND_LOC "The report file '" + THISFORM.cReport + ;
		"' does not exist." + CHR(13) + CHR(13) + ;
		"You must specify a valid report file to print in the cReport property of the form or passed in as a parameter."
#DEFINE NO_REPORT_LOC "The report to print must either be specified in the cReport property of the form or passed in as a parameter."


LPARAMETERS cRepName

*!* If no parameters are passed in, the variables are automatically
*!* set to a logical .F. value.
IF TYPE("cRepName") = "C" THEN
	*!* If a parameter is passed in, assume it is the report
	*!* name and set the cReport property of the form to it.
	THISFORM.cReport = cRepName
ENDIF

IF EMPTY(THISFORM.cReport) THEN
	MESSAGEBOX(NO_REPORT_LOC)
	RETURN .F.
ENDIF

IF !FILE(THISFORM.cReport) THEN
	MESSAGEBOX(REPORT_NOT_FOUND_LOC)
	RETURN .F.
ENDIF


		

ENDPROC
e error in GET statement.Command contains unrecognized �PROCEDURE Init
#DEFINE NO_LOOKUP_TABLE_LOC "A lookup table must be specified in the 'lookup_table' property (combo box " + THIS.name + ")."
#DEFINE NO_DISPLAY_COLUMN_LOC "A display column must be specified in the 'display_column' property (combo box " + THIS.name + ")."
#DEFINE NO_RETURN_COLUMN_LOC "A return column must be specified in the 'return_column' property (combo box " + THIS.name + ")."

lOK = .T.
DO CASE
	CASE EMPTY(THIS.lookup_table)
		=MESSAGEBOX(NO_LOOKUP_TABLE_LOC,48)
		lOK = .F.
	CASE EMPTY(THIS.display_column)
		=MESSAGEBOX(NO_DISPLAY_COLUMN_LOC,48)
		lOK = .F.
	CASE EMPTY(THIS.return_column)
		=MESSAGEBOX(NO_RETURN_COLUMN_LOC,48)
		lOK = .F.
ENDCASE

IF lOK THEN
	IF !EMPTY(THIS.order_column)
		nSQL = "SELECT " + THIS.display_column + "," + THIS.return_column + " FROM " + THIS.lookup_table + " ORDER BY " + THIS.order_column + " INTO CURSOR " + THIS.name
	ELSE
		nSQL = "SELECT " + THIS.display_column + "," + THIS.return_column + " FROM " + THIS.lookup_table + " INTO CURSOR " + THIS.name
	ENDIF
	THIS.RowSourceType = 3
	THIS.RowSource = nSQL
	THIS.BoundColumn = 2
ENDIF
THIS.Refresh
ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

#DEFINE INVALID_COLUMN_LOC "An invalid display column or return column has been specified in the 'display_column' or 'return_column' properties (combo box " + THIS.name + ")."
#DEFINE INVALID_TABLE_LOC "An invalid table has been specified in the 'display_column' or 'lookup_table' property (combo box " + THIS.name + ")."
#DEFINE INVALID_SORT_LOC "An invalid column has been specified in the 'order_column' property (combo box " + THIS.name + ")."



DO CASE
	CASE nError = 1806
		=MESSAGEBOX(INVALID_COLUMN_LOC,48)
	CASE nError = 1808
		=MESSAGEBOX(INVALID_SORT_LOC,48)
	CASE nError = 1802
		=MESSAGEBOX(INVALID_TABLE_LOC,48)
	OTHERWISE
		=MESSAGEBOX(MESSAGE(),48)
ENDCASE
ENDPROC
PROCEDURE Destroy
cAlias = THIS.name
IF USED(cAlias) THEN
	USE IN &cAlias
ENDIF
ENDPROC
Option1.Width = 80
Option1.AutoSize = .T.U��� <<�%%C��U���T��C�PX��T��C��C�>����T��C�����%�����c�	B�����B�CC�C� ��`��UCMCICMD
CRETSTRING	NRETVALUE
MCISENDSTRINGCERRTHISGETMCIERROR��������
T�����%�C�cErrorb�C��n�%�C��=�*ERROR*��j�T��CC��\g����%�C�cErrorb�N����
T������T��C�X����C��C�>���T������T������B�CC�C� ��`��UCERROR
LCERRORSTRINGNERRORCERRORSTRINGMCIGETERRORSTRINGTHISMCIERRORMCIERRORSTRING	T������%�C������T������%�C������>��C�2No filename specified or control source specified!�x��B�����(cFileName = ALLTRIM(&cControlSource)
%�C������B���T������%�C�����T������T�������T�9�����#T�	��STATUS �� READY��%�C�	��
�true����!T�	��CLOSE �� WAIT����C�	��
���Gb(�C�Q�.\FOXTOOLS.FLL�����MainHWND����	_WhToHwnd����_WOnTop�T��C���T��CC�
���
T�����QT�	��OPEN "��" alias �� style child parent CC�Z�� WAIT����C�	��
��%����������C���x��T�9�����B����/T�	��status �� window handle wait��T��CCC�	��
g8��T������T������T�������T�������$��C����������(T�	��WINDOW �� state show����C�	��
���5��C�SET �� time format milliseconds��
��%���a����
�����T�9�����UCCONTROLSOURCETHIS
CONTROLSOURCE	CFILENAME	VIDEOFILECALIASMCIALIASNAMEMOUSEPOINTERCCMDDOMCIMAINHWND	_WHTOHWND_WONTOP	MAIN_HWND
CUR_WINDOWNULLPOINTERMCIERRORMCIERRORSTRINGHWINX1POSLEFTY1POSTOPX2POSWIDTHY2POSHEIGHTSETWINDOWPOSAUTOPLAY	PLAYVIDEOT������,T��CC�STATUS �� length��g��.T��CC�STATUS ��	 position��g��%�������+��C�SEEK �� to start WAIT�������C�PLAY �����%��������
�����%���a��
�T��	�
��d���UCALIASTHISMCIALIASNMEDIALENGTHDOMCINMEDIAPOSITIONMCIERRORSHOWMCIERROR
AUTOREPEATTMRCHECKMODEINTERVAL�T������3%�C�STATUS �� mode���playing������C�PAUSE �����%������{�
�����%���a����T���������U	CALIASTHISMCIALIASDOMCIMCIERRORSHOWMCIERROR
AUTOREPEATTMRCHECKMODEINTERVAL!��CC��Z�: ���x��UTHISMCIERRORMCIERRORSTRING�&T���STATUS ��� READY��%�C����true����$T���CLOSE ��� WAIT����C�����%��������
�����%���a����T���������U	CCMDTHISMCIALIASDOMCIMCIERRORSHOWMCIERROR
AUTOREPEATTMRCHECKMODEINTERVALg4��T������(%�C�f�START�
C�f�END��S�T���to ������T��C�g��%�C����}�B����,T��CC�STATUS �� length��g��%���
����B����T���to C�Z�����#T���STATUS �� READY��%�C����true��`�T���SEEK �� �����C������U		CPOSITIONCALIASTHISMCIALIASCPOSCMD	NPOSITIONNMEDIALENGTHDOMCICCMD

����UTHIS
CLOSEVIDEO�*|��
mciSendString�	WinMM.DLL�����,|��mciGetErrorString�	WINMM.DLL����+|��SetWindowPos�User32��������U
MCISENDSTRINGWINMMDLLMCIGETERRORSTRINGSETWINDOWPOSUSER32#%���a���
�����UTHISAUTOOPEN	OPENVIDEO������
H���%������	openvideo	��m�,��C� Invalid controlSource specified.�x��2��
������UNERRORCMETHODNLINEdomci,��getmcierror���	openvideoW��	playvideo���
pausevideo	��showmcierror)
��
closevideon
��setposition���DestroyR
��Initu
��RefreshA��Error���1q��R�AR3q����AAA��AqR3���AA���AAA�A�3�A���#�C��A���AAC�BS"�A�3���A�A�A"1A23�A�A!1AA2�3c�BA�A!1AA3q�A���A��A�aAAA3��A2�2���3"�A3��Q���A2�
m��
1Q�
f�_���jS�lt��x�������������+)<
��� �	�	�M%UZ	G��Uh%�����C�%��C�INITIALIZE_AND_ADJUST����T���-���a���C�ADJUST�����UTHIS
INITIALRESIZELOOPTHROUGHCONTROLS���T��C������&T���������������&T���������������&T���������������&T�����������	����ET���������CC�oControl.FontSizeb�U�����
6������������UOCONTROLNLENTHIS
ACONTROLSTATSTOPINITIALFORMHEIGHTLEFTINITIALFORMWIDTHHEIGHTWIDTHFONTSIZE�����"T�����C������"T�����C������"T�����C������$%���	�Textbox Spinner
����"T�����C�������U
OCONTROLNPOSTOPTHISFORMHEIGHTTHIS
ACONTROLSTATSLEFTWIDTH	BASECLASS����T��C�f��T��C�DECIMALv��G
(����
T�����T���a����
����(�����~�T��C�
������%���	�pCommandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner����T������
H�'���&���INITIALIZE_AND_ADJUST��s���C��
�����C���
������ADJUST������C���
�����'%�C�
����	�	Pageframe��z�&��
�
���(�C�
������v�!��C�
�
C�
������r���
����(�����n��%�C�
����	�pCommandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner��j�T������
H���f�&���INITIALIZE_AND_ADJUST��3���CC�
����
�����CC�
�����
������ADJUST��f���CC�
�����
��������������T���-��G
(����UCTASKNOLDDECIMALNPOSTHISFORM
LOCKSCREENICONTROLCOUNTOCONTROLCONTROLS	BASECLASSTHIS
ADDTOARRAYSETSIZEJ	PAGECOUNTPAGESK)T�������T�������UTHISINITIALFORMHEIGHTTHISFORMHEIGHTINITIALFORMWIDTHWIDTH'T���a�����������UTHIS
INITIALRESIZE
ACONTROLSTATSadjustcontrols,��
addtoarray���setsizeJ��loopthroughcontrols`��Init���reset��1Q��aA2qQaaaaQ�3�!!!A!A;q�b����qA�aQqQAArb���a��q�AAAAAAA��2112�a1���	���M
&Ah
�
XD�
\)�	�PROCEDURE parsecondition
LPARAMETERS cCondition, cControlSource
LOCAL lcRetCondition, lcFieldName
IF TYPE('cCondition') = 'C'
	cCondition = ALLTRIM(cCondition)
ENDIF

lcFieldName = SUBSTRC(cControlSource,(RATC(".",cControlSource)+1))

*!* NOTE: If you add a checkbox, radio button, or command group to
*!* the form, this routine will need to be changed to handle that
*!* specific datatype.

IF !EMPTY(cCondition) THEN
	*!* If the type is Character or Memo, check to see if the 
	*!* user has entered a complex condition (if so, take that 
	*!* condition literally without any manipulation
	IF TYPE('cCondition')$ "CM" 
		IF ("<"	 	$ cCondition OR ;
			"==" 	$ cCondition OR ;
			"LIKE" 	$ cCondition OR ;
			"<>" 	$ cCondition OR ;
			"!=" 	$ cCondition OR ;
			"#" 	$ cCondition OR ;
			"=" 	$ cCondition OR ;
			">" 	$ cCondition)
		  	lcRetCondition = lcFieldName + cCondition
		ENDIF
	ENDIF
	*!* If a complex condition wasn't found above (lcRetCondition will be empty)
	*!* Then we need to create the WHERE condition ourselves
	IF EMPTY(lcRetCondition)
		*!* The RATC() Functions figure out the column to compare based on the 
		*!* controlSource of the control and any delimiters needed for the 
		*!* datatype are added around the values (not all conditions are
		*!* assumed to be = when we construct them ourselves
		DO CASE
			CASE TYPE(cControlSource) $ "CM"
				lcRetCondition = lcFieldName + " = " + CHR(34) + cCondition + CHR(34)
			CASE TYPE(cControlSource) $ "DT"
				lcRetCondition = lcFieldName + " = {" + DTOC(cCondition) + "}"
			OTHERWISE
				lcRetCondition = lcFieldName + " = " + STR(cCondition)
		ENDCASE	
	ENDIF
ELSE
	lcRetCondition = ""
ENDIF

RETURN lcRetCondition
ENDPROC
���������������������������������