Mini Kabibi Habibi

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

�VERSION =   3.00
builderd.h~��$builderlabel
builderd.hPixelsClass1labelbuilderlabelDbuilder
cversion
builderx
*release Releases object from memory.
buildereditbox
builderd.h~��$)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
builderbaseform
builderd.hPixelsClass1formbuilderbaseformform
builderd.hPixels11Classeditbox1�PROCEDURE release
RELEASE this

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
�AutoSize = .T.
FontName = "MS Sans Serif"
FontSize = 8
BackStyle = 0
Caption = "Label1"
Height = 15
Width = 34
builder = 
cversion = 
builderx = BuilderD,CaptionBuilder
Name = "builderlabel"
labelbuildereditbox1
builderd.h~��$)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
buildercheckbox
builderd.hPixelsClass1checkboxbuildercheckboxcheckbox
builderd.h~��$builderhelp
builderd.hbuilderoptiongroup)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
�cproperty
builder
cversion
builderx
lupdateonchange
cvalidexpression
lautorefresh
leditmode
lreadonly
lallowenter
nmaxlength
ctype
*release Releases a FormSet or Form from memory.
*refreshpropertyvalue 
*disable 
editbox)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0

builderd.hPixelsClassbuildercommandbuttonClass
builderd.h~��$)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0

builderd.h~��$builderhelpcfilename
�Height = 23
Width = 24
Picture = graphics\help.bmp
StatusBarText = "Displays online Help for builder"
ToolTipText = "Help"
cfilename = 
Name = "builderhelp"

builderd.hbuilderdform
builderd.h
commandbuttonbuilderd.vcx
builderd.h~��$	builderdb
builderd.hPixels1custom	builderdbcustombuilderpageframe!Arial, 0, 9, 5, 15, 12, 13, 3, 0
	pageframe
builderd.h~��$PixelsClass
builderd.h~��$sFontName = "MS Sans Serif"
FontSize = 8
DisabledBackColor = (EVALUATE("RGB("+SUBSTR(RGBSCHEME(15,1),AT(",",RGBSCHEME(15,1),3)+1)))
Value = .NULL.
IntegralHeight = .T.
cproperty = 
builder = 
cversion = 
builderx = BuilderD,BuilderEditBoxBuilder
lupdateonchange = .F.
cvalidexpression = 
lautorefresh = .T.
nmaxlength = 250
ctype = 
Name = "buildereditbox"
PixelsClass12builderbaseformbuilderdform
pgfBuildertimerbuilderrefreshtimertimerClassbuilderdformbuilderd.vcxPixels	pageframebuilderd.vcxbuilderpageframe
builderd.h~��$)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0

commandbutton	pageframe1
builderd.h
builderd.h~��$)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
buildertextbox
builderd.h(refreshinputmask
refreshpropertyvalue
PixelsClass11�builder
cversion
leditmode
cproperty
lautorefresh
builderx
lreadonly
ctype
*release Releases object from memory.
*disable 

builderd.h~��$)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
builderclasstextboxPixelsClass1buildertextboxbuilderclasstextboxtextboxbuilderd.vcxtextboxbuilderdformbuildertextboxtextbox1cmdClassBrowser
commandbuttonbuilderd.vcxbuilderdformPixels�cproperty
leditmode
builder
cversion
lupdateonchange
cvalidexpression
lautorefresh
lreadonly
builderx
ctype
*release Releases object from memory.
*refreshinputmask 
*refreshpropertyvalue 
*disable 
�ErasePage = .T.
Top = 75
Left = 8
Width = 437
Height = 208
Tabs = .T.
TabIndex = 1
Name = "pgfBuilder"
fpgPage1.Name = "fpgPage1"
FPGPAGE2.Name = "FPGPAGE2"
txtClass
builderd.h~��$)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
buildercombobox
builderd.hrefreshpropertyvalue
PixelsClassZTop = 12
Left = 330
TabIndex = 2
cversion = cmdClassBrowser
Name = "cmdClassBrowser"
comboboxbuildercomboboxcomboboxbuilderlaunchclassbrowsertextboxbuilderd.vcxbuilderclasstextboxcmdHelp1PHeight = 24
Left = 48
TabIndex = 7
Top = 12
Width = 237
Name = "txtClass"
1�PROCEDURE Refresh
IF NOT DODEFAULT() OR TYPE("thisform.oObject")#"O" OR ISNULL(thisform.oObject)
	RETURN .F.
ENDIF
this.ToolTipText=thisform.oObject.BaseClass

ENDPROC
optiongroupClass16Top = 12
Left = 420
TabIndex = 5
Name = "cmdHelp"
label
builderd.h~��$Pixelsbuilderdform)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
builderpushpin
builderd.h�cproperty
leditmode
builder
cversion
lupdateonchange
cvalidexpression
lautorefresh
lreadonly
builderx
ctype
*release Releases object from memory.
*refreshpropertyvalue 
*disable 
buildercommandbuttonClassbuilderformbuilder
builderd.hPixels
commandbuttonbuilderd.vcxbuilderhelpbuilderdformlblClassbuilderd.vcx1�FontName = "MS Sans Serif"
FontSize = 8
Alignment = 3
Value = .NULL.
Format = "K"
Height = 24
Width = 113
DisabledBackColor = (EVALUATE("RGB("+SUBSTR(RGBSCHEME(15,1),AT(",",RGBSCHEME(15,1),3)+1)))
cproperty = 
builder = 
cversion = 
lupdateonchange = .T.
cvalidexpression = 
lautorefresh = .T.
builderx = BuilderD,BuilderTextBoxBuilder
ctype = 
Name = "buildertextbox"
checkboxbuilderpushpincheckbox
builderd.h~��$bCaption = "Class:"
Height = 15
Left = 8
Top = 12
Width = 30
TabIndex = 6
Name = "lblClass"
builderlabel9Top = 12
Left = 360
TabIndex = 3
Name = "cmdBuilder"
builderdform
cmdBuilder
commandbuttonbuilderd.vcxbuilderlaunchbuilderbuilderdformtxtNametextboxbuilderd.vcxcheckboxbHeight = 23
Width = 24
FontName = "MS Sans Serif"
FontSize = 8
Picture = graphics\pushpinb.bmp
DownPicture = graphics\pushpint.bmp
BackStyle = 0
Caption = ""
Value = .F.
StatusBarText = "Builder form pushpin (toggle on/off)"
Style = 1
ToolTipText = "Pushpin"
cversion = 
builder = 
builderx = BuilderD,BuilderForm
Name = "builderpushpin"
optiongroup)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
Class
chkPushpinDcversion
builder
builderx
*release Releases object from memory.
)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
builderlaunchclassbrowser
builderd.hbuildercommandbuttonbuilderlaunchclassbrowser
commandbutton
commandbuttonbuilderdformbuilderd.vcx
builderd.h~��$OHeight = 24
Left = 48
TabIndex = 9
Top = 42
Width = 237
Name = "txtName"
buildernametextbox9Top = 12
Left = 390
TabIndex = 4
Name = "chkPushpin"
builderd.vcxbuilderpushpin`Caption = "Name:"
Height = 15
Left = 8
Top = 42
Width = 33
TabIndex = 8
Name = "lblName"
builderdformlblNamelabelbuilderd.vcxbuilderlabel?Top = -100
Left = -100
Interval = 1000
Name = "tmrRefresh"
builderdform
builderd.h�Height = 23
Width = 24
Picture = graphics\browser.bmp
StatusBarText = "Runs the Class Browser for the class the object is based on"
ToolTipText = "Class Browser"
Name = "builderlaunchclassbrowser"

tmrRefreshtimerbuilderd.vcxbuilderrefreshtimer+Top = 47
Left = 419
Name = "oBuilderDB"
builderdform
oBuilderDBcustombuilderd.vcx	builderdbformbuilderd.vcx
builderd.h~��$)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
builderlaunchbuilder
builderd.hPixelsDbuilder
cversion
builderx
*release Releases object from memory.
PixelsbuilderrefreshtimerClassClassbuilderpageframeClassbuildercommandbuttonNcversion
builder
builderx
leditmode
*release Release object from memory.
buildercommandbutton
builderd.hbuilderd.vcx)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0
buildernametextboxPixelstextboxbuilderlaunchbuilder
commandbutton*launchbuilder 
builderoptiongroupbuildertextboxbuildernametextbox
builderd.h~��$�Height = 23
Width = 23
Interval = 1000
builder = 
cversion = 
builderx = BuilderD,BuilderForm
Name = "builderrefreshtimer"
�Picture = graphics\builder.bmp
StatusBarText = "Launches specific or generic non-BuilderX builder"
ToolTipText = "Builder"
Name = "builderlaunchbuilder"
�builder
cversion
leditmode
cproperty
lautorefresh
builderx
lreadonly
ctype
*release Releases object from memory.
*disable 
cbuilder
cversion
builderx
lskiptabfocus
*release Releases object from memory.
*skiptabfocus 
�StatusBarText = "Displays the name of the class that the object is based on"
ToolTipText = ""
Width = 161
cproperty = Class
lreadonly = .T.
lupdateonchange = .F.
Name = "builderclasstextbox"
�PROCEDURE Refresh
IF NOT DODEFAULT() OR TYPE("thisform.oObject")#"O" OR ISNULL(thisform.oObject)
	RETURN .F.
ENDIF
this.ToolTipText=thisform.oObject.ClassLibrary

ENDPROC
�Height = 23
Width = 24
FontName = "MS Sans Serif"
FontSize = 8
Caption = ""
cversion = 
builder = 
builderx = BuilderD,CaptionBuilder
Name = "buildercommandbutton"
?�� &&�u%����U\8%�C�
�C�thisform.oObjectb�O�	C�����?�B�-���T��������UTHISFORMOOBJECTTHISTOOLTIPTEXTCLASSLIBRARYRefresh,��1�qAa2�)&>PROCEDURE addobjects
IF NOT DODEFAULT()
	RETURN .F.
ENDIF
IF NOT this.oBuilderDB.AddObjects()
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE Init
LPARAMETERS toObject, tuSource, tlSkipSearch

IF NOT DODEFAULT(toObject, tuSource, tlSkipSearch)
	RETURN .F.
ENDIF
IF NOT this.lRelease
	this.Show
ENDIF

ENDPROC
�PROCEDURE Refresh
LOCAL llEnabled

llEnabled=(TYPE("thisform.oObject.ClassLibrary")=="C" AND ;
		NOT EMPTY(thisform.oObject.ClassLibrary))
IF this.Enabled=llEnabled
	RETURN
ENDIF
this.Enabled=llEnabled

ENDPROC
PROCEDURE Click
IF thisform.lClass
	DO (_browser) WITH ;
			(thisform.oObject.ClassLibrary),(thisform.oObject.Class)
ELSE
	DO (_browser) WITH ;
			thisform.oObject
ENDIF

ENDPROC
bPROCEDURE release
RELEASE this

ENDPROC
PROCEDURE GotFocus
this.Refresh
this.lEditMode=.T.

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE LostFocus
this.lEditMode=.F.

ENDPROC
PROCEDURE Refresh
IF this.lEditMode
	NODEFAULT
	RETURN
ENDIF

ENDPROC
<�� ##h(%����U\8%�C�
�C�thisform.oObjectb�O�	C�����?�B�-���T��������UTHISFORMOOBJECTTHISTOOLTIPTEXT	BASECLASSRefresh,��1�qAa2�)#lHeight = 15
Width = 67
FontName = "MS Sans Serif"
FontSize = 8
AutoSize = .T.
BackStyle = 0
Caption = "CheckBox"
Value = .F.
DisabledBackColor = (EVALUATE("RGB("+SUBSTR(RGBSCHEME(15,1),AT(",",RGBSCHEME(15,1),3)+1)))
builder = 
cversion = 
cproperty = 
lautorefresh = .T.
builderx = BuilderD,BuilderCheckBoxBuilder
ctype = 
Name = "buildercheckbox"
jDataSession = 2
Top = 0
Left = 0
Height = 295
Width = 453
DoCreate = .T.
ShowTips = .T.
BorderStyle = 2
Caption = "Builder Form"
FontName = "MS Sans Serif"
FontSize = 8
MaxButton = .F.
MinHeight = 275
MinWidth = 440
Icon = graphics\builder.ico
AlwaysOnTop = .T.
oobject = .NULL.
lautocenter = .T.
builder = .NULL.
cversion = Builder Base Form 02.01.0001
lautoshow = .T.
builderx = BuilderD,BuilderFormBuilder
cobjectname = 
lmultipleinstances = .T.
cprogrampath = 
lsetloadmessage = .T.
ndefaultpagecount = 2
cclass = 
cclasslibrary = 
chelpfile = 
nhelpid = 0
Name = "builderbaseform"
�ErasePage = .T.
PageCount = 2
TabStretch = 0
TabStyle = 1
Width = 422
Height = 205
Tabs = .F.
builder = 
cversion = 
builderx = 
lskiptabfocus = .T.
Name = "builderpageframe"
Page1.FontName = "MS Sans Serif"
Page1.FontSize = 8
Page1.Caption = "General"
Page1.Name = "fpgPage1"
Page2.FontName = "MS Sans Serif"
Page2.FontSize = 8
Page2.Caption = "Page2"
Page2.Name = "fpgPage2"
��� gg�b%�/��UM1%�C�thisform.cVersionb�C�	C�����8�B�-���R,:�����UTHISFORMCVERSION������T��C��@��:T��CC�thisform.nHelpIDb�C�C��g���6��T��CC�Z���%�C������T��C��@���%�C���C��	����A��C�$Help not available for this builder.�0�BuilderHelp�x��B�-���%�C��
����(%�C��=�(�C��R�)	��<�T��C����%��.�
��h�T����.txt���%�C�0
����T��CC����@��%�C�0
����7��C�File "��" not found.�0�BuilderHelp�x��B�-�����%�C�����G(��U�*%�CC��R�.chm�.hlp�.dbf�
��E�
/����:�B��G(�����%�C����p�$:�����HELP ID &lcHelpID NOWAIT
�U	
LCHELPFILELNHELPIDLCHELPIDTHISFORM	CHELPFILENHELPIDTHIS	CFILENAMECLASSLIBRARY
RightClick,��Click���1qA�3�"��!A�qA��A1QAqqqAAA�a���AA�A����A2���)g�� ���%^>�U<%�C�
���B�-���%�C���
��5�B�-���UTHIS
OBUILDERDB
ADDOBJECTSV�����%�C����
��0�B�-���%���
��O�
�����UTOOBJECTTUSOURCETLSKIPSEARCHTHISLRELEASESHOW
addobjects,��Init���1�qAQqA3��qA�A2w�3
)�NPROCEDURE release
RELEASE this

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE Init
this.Value=thisform.AlwaysOnTop

ENDPROC
PROCEDURE ProgrammaticChange
this.Click

ENDPROC
PROCEDURE Click
thisform.AlwaysOnTop=this.Value

ENDPROC
�Height = 24
StatusBarText = "Specifies the name used to reference an object in code"
TabIndex = 4
Width = 161
cproperty = Name
lupdateonchange = .F.
cvalidexpression = NOT EMPTY(Value) AND NOT ' '$ALLTRIM(Value)
Name = "buildernametextbox"
�FontName = "MS Sans Serif"
FontSize = 8
Alignment = 3
Value = .NULL.
Height = 24
Width = 113
DisabledBackColor = (EVALUATE("RGB("+SUBSTR(RGBSCHEME(15,1),AT(",",RGBSCHEME(15,1),3)+1)))
Format = "K"
cproperty = 
builder = 
cversion = 
lupdateonchange = .T.
cvalidexpression = 
lautorefresh = .T.
builderx = BuilderD,BuilderComboBoxBuilder
ctype = 
Name = "buildercombobox"
�� ����%#�R�U
<��UTHIS/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHIS	����T������0%�C�thisform.oObjectb�O�	C�������+%�C��a��
�C���@C�@
����
����B���0%�C�thisform.uSourceb�O�	C���	����
����B��T����	��T��	�a��
���
�T��	����ULLLOCKSCREENLCOBJECTNAMETHISFORMCOBJECTNAMEOOBJECT	SETOBJECTNAMERELEASEUSOURCE
LOCKSCREENREFRESHrelease,��Error@��Timer���1q3��3���AAA�AA��2!=���)�O�� 66E�%<���U
<��UTHIS/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHIST�������UTHISVALUETHISFORMALWAYSONTOP

����UTHISCLICKT�������UTHISFORMALWAYSONTOPTHISVALUErelease,��Error@��Init���ProgrammaticChange���Click���1q3��313�312!=����
"C)6?PROCEDURE release
RELEASE this

ENDPROC
PROCEDURE skiptabfocus
IF NOT this.lSkipTabFocus OR NOT this.Tabs OR CHRSAW()
	RETURN .F.
ENDIF
KEYBOARD "{TAB}" PLAIN

ENDPROC
PROCEDURE Click
this.SkipTabFocus

ENDPROC
PROCEDURE Init
this.SkipTabFocus

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE Refresh
thisform.RefreshNonActivePages

ENDPROC
PROCEDURE fpgPage1.Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC

�� �
�
ˎ
%�
�z��U
<��UTHISU�����T������T������%�C���	C�����N�B��0luPropertyValue=thisform.oObject.&lcProperty
%�C�luValueb�C����T��C�`��%�������B��T���a��(thisform.oObject.&lcProperty=luValue
B��%������B��T���a��(thisform.oObject.&lcProperty=luValue
U	
LCPROPERTYLUVALUELUPROPERTYVALUETHIS	CPROPERTYTEXTTHISFORMOOBJECTLOBJECTUPDATEDT���a��UTHISREADONLY��C�����UTHISFORMDEFAULTRESETTHIS ������
����UNBUTTONNSHIFTNXCOORDNYCOORDTHISREFRESHP�������%�����+�B��T������%�C����R�B��T��C����6%�C�lcValidExpressionb�C�C��=�=	����T��CC��\����T������T���	�
��
T�����T��C���T���T���T���$%�C�llResultb�L��
��I�T���a��B�-���ULCVALIDEXPRESSIONVALUEOBJECTOTHISLLRESULTTHISREADONLYCVALIDEXPRESSIONTEXTTHISFORMOOBJECT	LEDITMODER���T������T���-��%�C���C����A�B��
����U
LCPROPERTYTHIS	CPROPERTY	LEDITMODEREFRESHPROPERTYVALUE
����T���a��UTHISREFRESH	LEDITMODE�����T���a��T������T������M%�C�����
�C���C���C�luValueb�C�	C��
����B��
���	�U

LCPROPERTYLUVALUETHISFORMLOBJECTUPDATEDTHIS	CPROPERTYTEXTLUPDATEONCHANGEVALIDREFRESHPROPERTYVALUEA�����%�����'���B��*T���C�thisform.oObject.��b��T������T������T%���
�C��
	�C���	C�	�
�� C�thisform.oObject.�b�U������T������
����B��R%���

�
�.�
	�
�,�
	�$C�	�
���h�C�	�
���h	��O�T��
�a���%���
��m�
�������%�������T���-����0luPropertyValue=thisform.oObject.&lcProperty
@%�C��
�"C�luValuebC�luPropertyValueb	���	���B��+this.Value=thisform.oObject.&lcProperty
U
LCPROPERTYLUVALUELUPROPERTYVALUETHIS	LEDITMODECTYPE	CPROPERTYTEXTLAUTOREFRESHTHISFORMOOBJECTVALUEDISABLE	LREADONLYREADONLY/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHISI2%�C����C���U�O��	C�����B�T�������UTHIS	CPROPERTYCTYPEVALUE�����%���
���
	��2���B�-���2%�������	�C��>��	����T���C����=���UNKEYCODE
NSHIFTALTCTRLTHISLALLOWENTER
NMAXLENGTHTEXTVALUErelease,��refreshpropertyvalue@��disable���
RightClick��	MouseMoveT��Valid���	LostFocusw��GotFocus��InteractiveChangeD��RefreshW��Error1	��Init�	��KeyPress�	��1q3��AA��AA��AAAA��3�331�3qAA�AA�aAA�����A�qA3q��AA�3��3���AA�3�AAA�BA�AA#�A���AAAA�3��3!A3��AqA!�A2!L:Xk��"�& $`,8�G@9[RC��WL�Adj]��m�5�qTB
�)�
@�� ''4f%����U
<��UTHIS/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHISrelease,��Error@��1q3��2!=�)'#Height = 22
Width = 24
builder = 
builderx = 
cversion = 
cbuildertable = BuilderD.dbf
cbuilderstructuretable = BldStruc.dbf
nmaxobjects = 6
nleft = 12
ntop = 8
ntopfactor = 28
nrecno = 0
oclassrecord = .NULL.
opagerecord = .NULL.
opropertyrecord = .NULL.
Name = "builderdb"
�PROCEDURE release
RELEASE this

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE Timer
LOCAL llLockScreen,lcObjectName

lcObjectName=thisform.cObjectName
IF TYPE("thisform.oObject")#"O" OR ISNULL(thisform.oObject)
	IF NOT thisform.SetObject(.NULL.,,.T.) OR ;
			NOT LOWER(thisform.oObject.Name)==LOWER(lcObjectName)
		thisform.Release
		RETURN
	ENDIF
ENDIF
IF TYPE("thisform.uSource")=="O" AND ISNULL(thisform.uSource)
	thisform.Release
	RETURN
ENDIF
llLockScreen=thisform.LockScreen
thisform.LockScreen=.T.
thisform.Refresh
thisform.LockScreen=llLockScreen

ENDPROC
o�� VV[�%�BY�U0����������,%�C�thisform.oObject.Builderb�C��-�T������� T��C���Builder��h��-%�C�thisform.oObject.BuilderXb�C����T��������T��C�,���,T��CCC�����C���\6�@��%�C��	@���)�T���������X�T���
T�����T��-���
H�i���;�C��
�C��
	�
C����
	�C��	@�
	���� ��:������������2�����:����������,%�C�thisform.oObject.Builderb�C��[�
%����5�T��������W���C�Builder���
����)%�����	�CC�@C��@
	����
���
���&%�C��
�C�thisformb�O	����B��T������
����8%�C���C�thisformb�O�C��@C�@
��)�T���B��UTLACTIVATETHISFORM	LCBUILDERLCOBJECTNAME	LLCHANGEDLCCLASSLNATPOSTHISFORMOOBJECTBUILDERCLASSRESETTODEFAULTVISIBLENAMESHOWCOBJECTNAME	SETOBJECTs���=T��C�thisform.oObject.Builderb�U�
C����
��%������\�B��T������U	LLENABLEDTHISFORMOOBJECTBUILDERTHISENABLED�J%�C�thisform.oObject.Builderb�C�C�����C��������:R,:��/Object does not have a valid "Builder" property��B��)%�C�_BuilderEditb�L�C������<��7���T��a��
����T��-��UTHISFORMOOBJECTBUILDER_BUILDEREDITTHIS
LAUNCHBUILDER��Ca����UTHIS
LAUNCHBUILDER
launchbuilder,��Refresh
��
RightClick���Click���1qq�1�1A1�a1A����A������1��AA��AAaAA���AA3q�AAA3��AA�qqA���3�2~-�R34s�>@N)V�AutoSize = .T.
ButtonCount = 2
BackStyle = 0
Value = 1
Height = 44
Width = 65
BackColor = (EVALUATE("RGB("+SUBSTR(RGBSCHEME(15,1),AT(",",RGBSCHEME(15,1),3)+1)))
builder = 
cversion = 
cproperty = 
lautorefresh = .T.
builderx = BuilderD,BuilderOptionGroupBuilder
ctype = 
Name = "builderoptiongroup"
Option1.FontName = "MS Sans Serif"
Option1.FontSize = 8
Option1.Caption = "Option1"
Option1.Value = 1
Option1.Height = 15
Option1.Left = 5
Option1.Top = 5
Option1.Width = 55
Option1.AutoSize = .T.
Option1.Name = "Option1"
Option2.FontName = "MS Sans Serif"
Option2.FontSize = 8
Option2.Caption = "Option2"
Option2.Height = 15
Option2.Left = 5
Option2.Top = 24
Option2.Width = 55
Option2.AutoSize = .T.
Option2.Name = "Option2"
0builder
builderx
cversion
cbuildertable
cbuilderstructuretable
nmaxobjects
nleft
ntop
ntopfactor
nrecno
oclassrecord
opagerecord
opropertyrecord
*release Releases a FormSet or Form from memory.
*alinks 
*evallinks 
*openbuildertable 
*addobjects 
*transformlinks 
*inheritproperties 
�� ���v%�r7�U������������
������-%���C��C�toObjectb�O����%%�C�toObjectb�O�C������T�����������%�C��
����9R,:���	�' Error Mode:  Object parameter required���B�-������T��C���`��%�������
�����T��C����`��%�������%%�C���C�toObjectb�O����0R,:���	� Error Mode:  Nothing selected��B�-���T�����������T��
����T���C����,%�C�this.oObjectb�O�	C�����n�T����T���-��T��
����T������
����B�-���!T�����������%�������T��
������T���C����]����T��
������T���������T�������T������T��-��
�����T��C���`��T��-��%%��
������	���%�������
�����T��C����`���%������T��CC���@��&%��C�@��C���@	���T��a�����T������T��-��T�������&T����C����
�C�@�
	��T����C�:�
��%�C��
����B�-���UTOOBJECTTUSOURCETLSKIPSEARCH
LNSELOBJCOUNTLCOBJECTNAMELCNAMELLCLASSLASELOBJTHISCAPTIONUSOURCEOOBJECTLCLASSCCLASS
CCLASSLIBRARYRELEASENAMECLASSCLASSLIBRARYCOBJECTNAMETXTNAMEVALUECMDCLASSBROWSERENABLEDTHISFORM
CMDBUILDER
ADDOBJECTS����#%�C�this.pgfBuilderb�O��1�B�-��������(��������T������������%���������.�������������U	LNCOUNTTHIS
PGFBUILDER	PAGECOUNTPAGES	BACKCOLORTHISFORM
ACTIVEPAGEREFRESH:,%�C�this.oObjectb�O�	C�����3�B�-���UTHISOOBJECT����������
T�����T��C�.����%�������T��C�:����%�������T��C���=����
%������$T��C�2��4�C�f�C�@6���B�C����U
TCFILENAMETLPLATFORMTYPE
LCFILENAMELNATPOSLNATPOS2���������T��C�\����&T��CC�����C��=6���
%������$T��C�2��4�C�f�C�@6���	B����U
TCFILENAME	LPLATTYPE
LCFILENAMELNATPOSz���������%�C����2�	B�����
T�����T��C�:���%�����}�T��C���\���
%������T��C������
%������$T��C�2��4�C�f�C�@6���,T��CC�C�\�CC�\���D�\���+�C��=�.��4�T��CC��\����+�C��R�.��j�T��CC�C�>�=����	B����U
TCFILENAME	TLTRIMEXTTLPLATFORMTYPE
LCFILENAMELNATPOSTHISTRIMEXT%"G&(��Loading ��� ...��UTHISCAPTION���������&%�C�toObject.cPropertyb�C��C�B�-���T��C�����`%��.��C�����h
�C�����h
�C�����h�C�����h����B�-���2T��CCC�������	���	6��!_��%�C�����T���(None)���g%�C�Reset "��" property to default?C�
 C�
 �Default value = ��$��
�x�����B�-�����C������
�������T�����T��-����
�T�������UTOOBJECT
LCPROPERTYLCDEFAULTVALUE
LLEDITMODE	CPROPERTYTHISOOBJECTLCLASSPARENTCLASSCLASSCAPTIONRESETTODEFAULT	LEDITMODEREFRESHu���%�����L���T����T���a��T���-��B�-���"G&(��Loading ��� ...��UNSTYLETHISLRELEASEOOBJECTLAUTORELEASE	LAUTOSHOWCAPTIONPT���a��T���-��T����T����G�(�����G&(�UTHISLRELEASEVISIBLEUSOURCEOOBJECT
DATASESSIONID_%�����
��*�T��������%�����
��X�T��������UTHISHEIGHT	MINHEIGHTWIDTHMINWIDTH�����������T���a��R�%�����R�
���	�B�-���R�%�C�oObjectb�O����
T������gT��CEC�
 C�
 �
Builder:     ��
C�
 �
Object:      ��
C�
 �Method:    ���T��C�E��%%�C���'����...
	����-T���C�
 �Line:         CC�Z���%�C��
��|�T���C�
 C�
 �����%�C�����x�����T���a��
���	�B�-���UNERRORCMETHODNLINEOOBJECT
LCERRORMSG
LCCODELINEMSGTHISLERRORLRELEASERELEASENAMECAPTION*7��
T�����t&�F��G&(�U	_OBUILDERTHIS������������
������7��
T���	��'%��	�

�C���	��	��C�T��C�	�@��T��C�	�@�������(��9�
��?�T��C��9���<%�C��@��C��lInitialized��h	���	��;�T�	��a��%������)�T�������
����B�����%�C����	�
����T�	���G&(�T�	��a��B��T�	��a��%��	�����T�	��a���
��	��T�	��a��T�	��-��UTOOBJECTTUSOURCETLSKIPSEARCHOFORMLCCLASSLCNAMELNCOUNTLAINSTANCES	_OBUILDERTHISLMULTIPLEINSTANCESCLASSNAME	FORMCOUNTFORMSLINITIALIZEDLRELEASEWINDOWSTATESHOW	SETOBJECTOOBJECT
LOCKSCREENLAUTOCENTER
AUTOCENTERREFRESHq�����%�����0�
����B�-���7��
T�����
����T���-��F��G&(�U	LNPAGECOUNTLNACTIVEPAGELNCOUNTTHISLRELEASERELEASE	_OBUILDERREFRESH
LOCKSCREENB����%�����;�%�C����7�
������UNKEYCODE
NSHIFTALTCTRLTHISQUERYUNLOADRELEASE>,%�C����C�this.oObjectb�O��7���B�-���UTHISOOBJECT�G2�Gk(��MACHINE��G	 �G�G�G$(����G_ �Gi�G;(��.��G.�7��
T�����T���C������%�������
�����U	_OBUILDERTHISCPROGRAMPATHTRIMFILECLASSLIBRARYLSETLOADMESSAGESETLOADMESSAGEt&�G&(�U\%�C��
�����B�-���T���a��T���-��T����T����UTHISQUERYUNLOADLRELEASEVISIBLEUSOURCEOOBJECT;T���a��T���-��T����T����UTHISLRELEASEVISIBLEUSOURCEOOBJECT	setobject,��refreshnonactivepages���
addobjects���trimextH��trimfileW��trimpath	��setloadmessage�
��defaultreset��Show�
��DestroyS��Resize���Errorn��
Deactivate���Init���Activate���KeyPress���Refresh��Loado��Unloadn��Release���QueryUnload��1�1��Q1��AqA�!�QQqA1AAAA����qAa��aaA1��!�Q�QAaa�AAA�1ba!qA3q2qA��qAAaA3�qA3���11aAA�AA�3��2a�AA�3����A�1aA�QA�AA��AA��A�3!3q�bqA!qA"�1ArqAA�����A3qA���qA!3�����a3q1Aq1A31��Q�qAQ��As�Q��AA���qA3q�Q�a3�1�r�q!!�A��AA�AAAA��a�AA��A���3��qAq����a3��AA3�AqA3a!aaa�aa�aq���A3Qa3!AqA����3����2�H��NT�D	]Xb	�
cg�
up$����#��F����c���	��&�����������P�o--	L�<�-FH�M&��`)�qe2��p)��� ���?%i���Ux���BT��C�thisform.oObject.ClassLibraryb�C�
C����
	��%������a�B��T������U	LLENABLEDTHISFORMOOBJECTCLASSLIBRARYTHISENABLEDR%�����3�#��@�������������K���@������UTHISFORMLCLASSOOBJECTCLASSLIBRARYCLASSRefresh,��Click���1q#AAA32�A2���)��PROCEDURE RightClick
IF TYPE("thisform.cVersion")#"C" OR EMPTY(thisform.cVersion)
	RETURN .F.
ENDIF
WAIT WINDOW thisform.cVersion NOWAIT

ENDPROC
PROCEDURE Click
LOCAL lcHelpFile,lnHelpID,lcHelpID

lcHelpFile=LOWER(thisform.cHelpFile)
lnHelpID=IIF(TYPE("thisform.nHelpID")=="C",VAL(thisform.nHelpID),thisform.nHelpID)
lcHelpID=ALLTRIM(STR(lnHelpID))
IF EMPTY(lcHelpFile)
	lcHelpFile=LOWER(this.cFileName)
ENDIF
IF EMPTY(lcHelpFile) AND EMPTY(lnHelpID)
	MESSAGEBOX([Help not available for this builder.],48,"BuilderHelp")
	RETURN .F.
ENDIF
IF NOT EMPTY(lcHelpFile)
	IF LEFT(lcHelpFile,1)=="(" AND RIGHT(lcHelpFile,1)==")"
		lcHelpFile=EVALUATE(lcHelpFile)
	ENDIF
	IF NOT "."$lcHelpFile
		lcHelpFile=lcHelpFile+".txt"
	ENDIF
	IF NOT FILE(lcHelpFile)
		lcHelpFile=LOWER(FULLPATH(lcHelpFile,thisform.ClassLibrary))
		IF NOT FILE(lcHelpFile)
			MESSAGEBOX([File "]+lcHelpFile+[" not found.],48,"BuilderHelp")
			RETURN .F.
		ENDIF
	ENDIF
ENDIF
IF EMPTY(lcHelpFile)
	SET HELP TO
ELSE
	IF NOT INLIST(RIGHT(lcHelpFile,4),".chm",".hlp",".dbf")
		MODIFY FILE (lcHelpFile) NOEDIT NOWAIT
		RETURN
	ENDIF
	SET HELP TO (lcHelpFile)
ENDIF
IF EMPTY(lnHelpID)
	HELP NOWAIT
ELSE
	HELP ID &lcHelpID NOWAIT
ENDIF

ENDPROC
	u�� \	\	��
%)�M��U
<��UTHIST���-��UTHISENABLED ������
����UNBUTTONNSHIFTNXCOORDNYCOORDTHISREFRESH^������T���a��T������T������-%�C���C���C���	C��	���r�B��0luPropertyValue=thisform.oObject.&lcProperty
T��C�luPropertyValueb��%�C��L�N�
����B��%���L���T�������%�����!�B��T���a��(thisform.oObject.&lcProperty=luValue
U

LCPROPERTYLUVALUELUPROPERTYVALUELCTYPETHISFORMLOBJECTUPDATEDTHIS	CPROPERTYVALUEOOBJECTJ�����%�����'���B��*T���C�thisform.oObject.��b��T������T������Z%���
�C��
	�C���	C�	�
��&CC�thisform.oObject.�b�L�N�
������T������
����B��R%���
�
�.�
	�
�,�
	�$C�	�
���h�C�	�
���h	��U�T���a���%�����s�
�������%���

����T��
�a����0luPropertyValue=thisform.oObject.&lcProperty
#%�C�luPropertyValueb�L���T��C�����6���%�C��
���	��3�B��T������U
LCPROPERTYLUVALUELUPROPERTYVALUETHIS	LEDITMODECTYPE	CPROPERTYVALUELAUTOREFRESHTHISFORMOOBJECTDISABLE	LREADONLYENABLED/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHISI2%�C����C���U�O��	C�����B�T�������UTHIS	CPROPERTYCTYPEVALUE��C�����UTHISFORMDEFAULTRESETTHIS/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHIS/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHISrelease,��disable@��	MouseMoved��InteractiveChange���Refresh���Errora��Init���
RightClick/��
Option1.Errore��
Option2.Error���1q3�31�31��AA��AA!!AAA��3�AAA��A�AA#�A���AA1�A�AA3��3!A33��3��2!?Qq�	���(>�!PA<�VE��\GZ`J~�f)\	%PROCEDURE launchbuilder
LPARAMETERS tlActivateThisForm
LOCAL lcBuilder,lcObjectName,llChanged,lcClass,lnAtPos

IF TYPE("thisform.oObject.Builder")=="C"
	lcBuilder=thisform.oObject.Builder
	llChanged=PEMSTATUS(thisform.oObject,"Builder",0)
	IF TYPE("thisform.oObject.BuilderX")#"C"
		thisform.oObject.Builder=""
	ENDIF
	lnAtPos=AT(",",lcBuilder)
	lcClass=LOWER(ALLTRIM(IIF(lnAtPos=0,lcBuilder,SUBSTR(lcBuilder,lnAtPos+1))))
	IF LOWER(thisform.Class)==lcClass
		thisform.oObject.Builder=""
	ENDIF
ELSE
	lcBuilder=.NULL.
	lcClass=""
	llChanged=.F.
ENDIF
DO CASE
	CASE NOT ISNULL(lcBuilder) AND NOT EMPTY(lcBuilder) AND ;
			NOT EMPTY(thisform.oObject.Builder) AND NOT LOWER(thisform.Class)==lcClass
		DO (_builder) WITH (thisform.oObject),"",(lcBuilder)
	OTHERWISE
		DO (_builder) WITH (thisform.oObject),"",.NULL.
		IF TYPE("thisform.oObject.Builder")=="C"
			IF llChanged
				thisform.oObject.Builder=lcBuilder
			ELSE
				thisform.oObject.ResetToDefault("Builder")
			ENDIF
		ENDIF
		IF tlActivateThisForm AND thisform.Visible AND ;
				NOT LOWER(WONTOP())==LOWER(thisform.Name)
			thisform.Show
		ENDIF
ENDCASE
IF NOT ISNULL(thisform) AND TYPE("thisform")=="O"
	RETURN
ENDIF
lcObjectName=thisform.cObjectName
thisform.SetObject
IF ISNULL(thisform) OR TYPE("thisform")#"O" OR ;
			NOT LOWER(thisform.Name)==LOWER(lcObjectName)
	thisform=.NULL.
	RETURN
ENDIF

ENDPROC
PROCEDURE Refresh
LOCAL llEnabled

llEnabled=(TYPE("thisform.oObject.Builder")=="U" OR ;
		NOT ISNULL(thisform.oObject.Builder))
IF this.Enabled=llEnabled
	RETURN
ENDIF
this.Enabled=llEnabled

ENDPROC
PROCEDURE RightClick
IF TYPE("thisform.oObject.Builder")#"C" OR ;
		EMPTY(thisform.oObject.Builder) OR ;
		ISNULL(thisform.oObject.Builder)
	WAIT WINDOW [Object does not have a valid "Builder" property] NOWAIT
	RETURN
ENDIF
IF TYPE("_BuilderEdit")#"L" OR ISNULL(_BuilderEdit)
	RELEASE _BuilderEdit
	PUBLIC _BuilderEdit
ENDIF
_BuilderEdit=.T.
this.LaunchBuilder
_BuilderEdit=.F.

ENDPROC
PROCEDURE Click
this.LaunchBuilder(.T.)

ENDPROC
��� ��A�%����
�U
<��UTHIS�������T������T��C��`��%�C���	C�����T�B��0luPropertyValue=thisform.oObject.&lcProperty
%���	�C����%�������B��T��
�a��/thisform.oObject.&lcProperty=lcDisplayValue
B��
H�������	�C��C�
T�����%�����?�B�����	�N����T������%�����}�B��2���T�������T��
�a��(thisform.oObject.&lcProperty=luValue
U

LCPROPERTYLCDISPLAYVALUELUPROPERTYVALUELUVALUETHIS	CPROPERTYDISPLAYVALUETHISFORMOOBJECTCTYPELOBJECTUPDATED	LISTINDEXVALUET���a��UTHISREADONLY ������
����UNBUTTONNSHIFTNXCOORDNYCOORDTHISREFRESHt&T���C���N����6��&%�C����C���U�O���m�T��������T�������UTHISVALUECTYPE	CPROPERTY	LISTINDEXDISPLAYVALUE/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHIS�������%�����+���B��*T���C�thisform.oObject.��b��T������T������T%���	
�C��
	�C���	C�
��� C�thisform.oObject.�b�U��&���&T���C���N����6��T��
������T������
����B��R%���
�
�.�
	�
�,�
	�$C�
����h�C�
����h	����T���a���%�������
�������%�������T���-����(luValue=thisform.oObject.&lcProperty
0luPropertyValue=thisform.oObject.&lcProperty
O%�C�luValuebC�luPropertyValueb�!���N�C�������
	������&T���C���N����6��T��
������T������
����B��
H���������C��5�%������B��T������T����������N����%���
���b�B��T��
����T������2���%��������B��&T���C���N����6��T��
������T�������U
LCPROPERTYLCDISPLAYVALUELUPROPERTYVALUELUVALUETHIS	LEDITMODECTYPE	CPROPERTYDISPLAYVALUELAUTOREFRESHTHISFORMOOBJECTVALUE	LISTINDEXDISABLE	LREADONLYREADONLY	LISTCOUNTu���T���a��T������;%�C������
�C���C���	C��
��d�B��
����U	
LCPROPERTYTHISFORMLOBJECTUPDATEDTHIS	CPROPERTYDISPLAYVALUELUPDATEONCHANGEVALIDREFRESHPROPERTYVALUE
����T���a��UTHISREFRESH	LEDITMODER���T������T���-��%�C���C����A�B��
����U
LCPROPERTYTHIS	CPROPERTY	LEDITMODEREFRESHPROPERTYVALUEd��������%�����/�B��T������%�C����V�B��T��C����6%�C�lcValidExpressionb�C�C��=�=	����T��CC��\����T������T������T���	�
��
T�����T��C���T���T���T���$%�C�llResultb�L��
��]�T���a��B�-���ULCVALIDEXPRESSIONVALUEDISPLAYVALUEOBJECTOTHISLLRESULTTHISREADONLYCVALIDEXPRESSIONTHISFORMOOBJECT	LEDITMODE��C�����UTHISFORMDEFAULTRESETTHISrelease,��refreshpropertyvalue@��disable���	MouseMove���Init&��Error���Refresh8��InteractiveChange���GotFocus�	��	LostFocus
��Valid�
��
RightClick���1q31!�AAQAA��AA�Q�AAQAA�A��3�31�3aaA3��31AAA�BAa�AA#�A���AA��Aa�AA�QAAQAAA�AAAaA3q��AA�3��3q��AA�3�AA�AA�aAA�����A�qA32!L%#CV(%v�,(�`2.|�:1�@k.#�sBd�v�
�~;
������)�P�� 77�
%#^B��U
<��UTHIST���-��UTHISENABLEDG2%�C����C���U�O��	C�����@�T���-���UTHIS	CPROPERTYCTYPEVALUE/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHIS
����T���a��UTHISREFRESH	LEDITMODET���-��UTHIS	LEDITMODE�����%�����'���B��*T���C�thisform.oObject.��b��T������T������T%���
�C��
	�C���	C�	�
�� C�thisform.oObject.�b�L������T���-��
����B��R%���
�
�.�
	�
�,�
	�$C�	�
���h�C�	�
���h	��M�T���a���%�����k�
�������%���

����T��
�a����0luPropertyValue=thisform.oObject.&lcProperty
%�C��
���	����B��T������U
LCPROPERTYLUVALUELUPROPERTYVALUETHIS	LEDITMODECTYPE	CPROPERTYVALUELAUTOREFRESHTHISFORMOOBJECTDISABLE	LREADONLYENABLED�����T���a��T������T������-%�C���C���C���	C�����n�B��0luPropertyValue=thisform.oObject.&lcProperty
.%�C�luPropertyValueb�L���	����B��T���a��(thisform.oObject.&lcProperty=luValue
U	
LCPROPERTYLUVALUELUPROPERTYVALUETHISFORMLOBJECTUPDATEDTHIS	CPROPERTYVALUEOOBJECT ������
����UNBUTTONNSHIFTNXCOORDNYCOORDTHISREFRESH��C�����UTHISFORMDEFAULTRESETTHISrelease,��disable@��Initd��Error���GotFocus0��	LostFocusi��Refresh���InteractiveChange!��	MouseMove���
RightClick���1q3�3!�A3��3��3�3�AAA�BA��AA#�A���AA�AA3���AA�AA��31�32!?Ql�		�Fe���� /H�B=SU@t�[)7D�� ++
T%��Z�U
<��UTHIS?"%���
���
�C���)�B�-���\��{TAB}�;�UTHIS
LSKIPTABFOCUSTABS

����UTHISSKIPTABFOCUS

����UTHISSKIPTABFOCUS/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHIS

����UTHISFORMREFRESHNONACTIVEPAGES/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHISrelease,��skiptabfocus@��Click���Init���Error���RefreshJ��fpgPage1.Error|��1q3!qA�3�3�3��3�3��2!D���
�!y���4)+M�� 44k�%5���U
<��UTHIS
����T���a��UTHISREFRESH	LEDITMODE/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHIST���-��UTHIS	LEDITMODE%��������B��UTHIS	LEDITMODErelease,��GotFocus@��Errory��	LostFocus���Refresh��1q3��3��3�3AAA2!@b~�
	�
(W)4�PROCEDURE release
RELEASE this

ENDPROC
PROCEDURE disable
this.Enabled=.F.

ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord

this.Refresh

ENDPROC
PROCEDURE InteractiveChange
LOCAL lcProperty,luValue,luPropertyValue,lcType

thisform.lObjectUpdated=.T.
lcProperty=this.cProperty
luValue=this.Value
IF ISNULL(luValue) OR ISNULL(lcProperty) OR EMPTY(lcProperty) OR ;
		ISNULL(thisform.oObject)
	RETURN
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
lcType=TYPE("luPropertyValue")
IF NOT INLIST(lcType,"L","N")
	RETURN
ENDIF
IF lcType=="L"
	luValue=(luValue>=2)
ENDIF
IF luPropertyValue==luValue
	RETURN
ENDIF
thisform.lObjectUpdated=.T.
thisform.oObject.&lcProperty=luValue

ENDPROC
PROCEDURE Refresh
LOCAL lcProperty,luValue,luPropertyValue

IF this.lEditMode
	NODEFAULT
	RETURN
ENDIF
this.cType=TYPE("thisform.oObject."+this.cProperty)
lcProperty=this.cProperty
luValue=this.Value
IF (NOT this.lAutoRefresh AND NOT ISNULL(luValue)) OR EMPTY(lcProperty) OR ;
		ISNULL(thisform.oObject) OR ;
		NOT INLIST(TYPE("thisform.oObject."+lcProperty),"L","N")
	NODEFAULT
	this.Value=0
	this.Disable
	RETURN
ENDIF
IF NOT this.lReadOnly AND NOT "."$lcProperty AND NOT ","$lcProperty AND ;
		(PEMSTATUS(thisform.oObject,lcProperty,1) OR ;
		PEMSTATUS(thisform.oObject,lcProperty,2))
	this.lReadOnly=.T.
ENDIF
IF this.lReadOnly
	this.Disable
ELSE
	IF NOT this.Enabled
		this.Enabled=.T.
	ENDIF
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
IF TYPE("luPropertyValue")=="L"
	luPropertyValue=IIF(luPropertyValue,2,1)
ENDIF
IF NOT ISNULL(luValue) AND luValue==luPropertyValue
	RETURN
ENDIF
this.Value=luPropertyValue

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE Init
IF EMPTY(this.cProperty) OR INLIST(this.cType,"U","O") OR ISNULL(this.Value)
	this.Value=0
ENDIF

ENDPROC
PROCEDURE RightClick
thisform.DefaultReset(this)

ENDPROC
PROCEDURE Option1.Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE Option2.Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
�PROCEDURE release
RELEASE this

ENDPROC
PROCEDURE disable
this.Enabled=.F.

ENDPROC
PROCEDURE Init
IF EMPTY(this.cProperty) OR INLIST(this.cType,"U","O") OR ISNULL(this.Value)
	this.Value=.F.
ENDIF

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE GotFocus
this.Refresh
this.lEditMode=.T.

ENDPROC
PROCEDURE LostFocus
this.lEditMode=.F.

ENDPROC
PROCEDURE Refresh
LOCAL lcProperty,luValue,luPropertyValue

IF this.lEditMode
	NODEFAULT
	RETURN
ENDIF
this.cType=TYPE("thisform.oObject."+this.cProperty)
lcProperty=this.cProperty
luValue=this.Value
IF (NOT this.lAutoRefresh AND NOT ISNULL(luValue)) OR EMPTY(lcProperty) OR ;
		ISNULL(thisform.oObject) OR TYPE("thisform.oObject."+lcProperty)#"L"
	NODEFAULT
	this.Value=.F.
	this.Disable
	RETURN
ENDIF
IF NOT this.lReadOnly AND NOT "."$lcProperty AND NOT ","$lcProperty AND ;
		(PEMSTATUS(thisform.oObject,lcProperty,1) OR ;
		PEMSTATUS(thisform.oObject,lcProperty,2))
	this.lReadOnly=.T.
ENDIF
IF this.lReadOnly
	this.Disable
ELSE
	IF NOT this.Enabled
		this.Enabled=.T.
	ENDIF
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
IF NOT ISNULL(luValue) AND luValue==luPropertyValue
	RETURN
ENDIF
this.Value=luPropertyValue

ENDPROC
PROCEDURE InteractiveChange
LOCAL lcProperty,luValue,luPropertyValue

thisform.lObjectUpdated=.T.
lcProperty=this.cProperty
luValue=this.Value
IF ISNULL(luValue) OR ISNULL(lcProperty) OR EMPTY(lcProperty) OR ;
		ISNULL(thisform.oObject)
	RETURN
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
IF TYPE("luPropertyValue")=="L" AND ;
		luPropertyValue==luValue
	RETURN
ENDIF
thisform.lObjectUpdated=.T.
thisform.oObject.&lcProperty=luValue

ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord

this.Refresh

ENDPROC
PROCEDURE RightClick
thisform.DefaultReset(this)

ENDPROC
�DoCreate = .T.
Caption = "BuilderDB (Dynamic Builder) Form"
Visible = .T.
cversion = BuilderDB (Dynamic Builder) Form 02.01.0002
lsetloadmessage = .F.
ndefaultpagecount = 0
lmultipleinstances = .F.
Name = "builderdform"

PROCEDURE release
RELEASE this

ENDPROC
PROCEDURE refreshinputmask
IF TYPE("this.Value")=="C"
	this.InputMask=REPLICATE("X",254)
ELSE
	this.InputMask=""
ENDIF

ENDPROC
PROCEDURE refreshpropertyvalue
LOCAL lcProperty,luValue,luPropertyValue

lcProperty=this.cProperty
luValue=this.Value
IF ISNULL(luValue) OR ISNULL(thisform.oObject)
	RETURN
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
IF TYPE("luValue")=="C"
	luValue=TRIM(luValue)
	IF luPropertyValue==luValue
		RETURN
	ENDIF
	thisform.lObjectUpdated=.T.
	thisform.oObject.&lcProperty=luValue
	RETURN
ENDIF
IF luPropertyValue==luValue
	RETURN
ENDIF	
thisform.lObjectUpdated=.T.
thisform.oObject.&lcProperty=luValue

ENDPROC
PROCEDURE disable
this.ReadOnly=.T.

ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord

this.Refresh

ENDPROC
PROCEDURE Init
IF EMPTY(this.cProperty) OR INLIST(this.cType,"U","O") OR ISNULL(this.Value)
	this.Value=""
ENDIF

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE ProgrammaticChange
this.RefreshInputMask

ENDPROC
PROCEDURE Refresh
LOCAL lcProperty,luValue,luPropertyValue

IF this.lEditMode
	NODEFAULT
	RETURN
ENDIF
this.cType=TYPE("thisform.oObject."+this.cProperty)
lcProperty=this.cProperty
luValue=this.Value
IF (NOT this.lAutoRefresh AND NOT ISNULL(luValue)) OR EMPTY(lcProperty) OR ;
		ISNULL(thisform.oObject) OR TYPE("thisform.oObject."+lcProperty)=="U"
	NODEFAULT
	this.Value=""
	this.Disable
	RETURN
ENDIF
IF NOT this.lReadOnly AND NOT "."$lcProperty AND NOT ","$lcProperty AND ;
		(PEMSTATUS(thisform.oObject,lcProperty,1) OR ;
		PEMSTATUS(thisform.oObject,lcProperty,2))
	this.lReadOnly=.T.
ENDIF
IF this.lReadOnly
	this.Disable
ELSE
	IF this.ReadOnly
		this.ReadOnly=.F.
	ENDIF
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
IF NOT ISNULL(luValue) AND TYPE("luValue")==TYPE("luPropertyValue") AND ;
		luValue==luPropertyValue
	RETURN
ENDIF
this.Value=thisform.oObject.&lcProperty

ENDPROC
PROCEDURE InteractiveChange
LOCAL lcProperty,luValue

thisform.lObjectUpdated=.T.
lcProperty=this.cProperty
luValue=this.Value
IF ISNULL(luValue) OR NOT this.lUpdateOnChange OR ISNULL(lcProperty) OR ;
		EMPTY(lcProperty) OR TYPE("luValue")#"C" OR NOT this.Valid()
	RETURN
ENDIF
this.RefreshPropertyValue

ENDPROC
PROCEDURE GotFocus
this.Refresh
this.lEditMode=.T.

ENDPROC
PROCEDURE LostFocus
LOCAL lcProperty

lcProperty=this.cProperty
this.lEditMode=.F.
IF ISNULL(lcProperty) OR EMPTY(lcProperty)
	RETURN
ENDIF	
this.RefreshPropertyValue

ENDPROC
PROCEDURE Valid
LOCAL lcValidExpression,Value,Object,oTHIS,llResult

IF this.ReadOnly
	RETURN
ENDIF
lcValidExpression=this.cValidExpression
IF EMPTY(lcValidExpression)
	RETURN
ENDIF
lcValidExpression=ALLTRIM(lcValidExpression)
IF TYPE("lcValidExpression")=="C" AND LEFT(lcValidExpression,1)=="="
	lcValidExpression=ALLTRIM(SUBSTR(lcValidExpression,2))
ENDIF
Value=this.Value
Object=thisform.oObject
oTHIS=this
llResult=EVALUATE(lcValidExpression)
Value=.NULL.
Object=.NULL.
oTHIS=.NULL.
IF TYPE("llResult")#"L" OR NOT llResult
	this.lEditMode=.T.
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE RightClick
thisform.DefaultReset(this)

ENDPROC
�PROCEDURE release
RELEASE this

ENDPROC
PROCEDURE refreshpropertyvalue
LOCAL lcProperty,lcDisplayValue,luPropertyValue,luValue

lcProperty=this.cProperty
lcDisplayValue=TRIM(this.DisplayValue)
IF ISNULL(lcDisplayValue) OR ISNULL(thisform.oObject)
	RETURN
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
IF this.cType=="C"
	IF luPropertyValue==lcDisplayValue
		RETURN
	ENDIF
	thisform.lObjectUpdated=.T.
	thisform.oObject.&lcProperty=lcDisplayValue
	RETURN
ENDIF
DO CASE
	CASE this.cType="C"
		luValue=lcDisplayValue
		IF luValue==luPropertyValue
			RETURN
		ENDIF	
	CASE this.cType=="N"
		luValue=this.ListIndex
		IF luValue=luPropertyValue
			RETURN
		ENDIF	
	OTHERWISE
		luValue=this.Value
ENDCASE
thisform.lObjectUpdated=.T.
thisform.oObject.&lcProperty=luValue

ENDPROC
PROCEDURE disable
this.ReadOnly=.T.

ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord

this.Refresh

ENDPROC
PROCEDURE Init
this.Value=IIF(this.cType=="N",0,"")
IF EMPTY(this.cProperty) OR INLIST(this.cType,"U","O")
	this.ListIndex=-1
	this.DisplayValue=""
ENDIF

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE Refresh
LOCAL lcProperty,lcDisplayValue,luPropertyValue,luValue

IF this.lEditMode
	NODEFAULT
	RETURN
ENDIF
this.cType=TYPE("thisform.oObject."+this.cProperty)
lcProperty=this.cProperty
lcDisplayValue=this.DisplayValue
IF (NOT this.lAutoRefresh AND NOT ISNULL(lcDisplayValue)) OR EMPTY(lcProperty) OR ;
		ISNULL(thisform.oObject) OR TYPE("thisform.oObject."+lcProperty)=="U"
	NODEFAULT
	this.Value=IIF(this.cType=="N",0,"")
	this.ListIndex=-1
	this.DisplayValue=""
	this.Disable
	RETURN
ENDIF
IF NOT this.lReadOnly AND NOT "."$lcProperty AND NOT ","$lcProperty AND ;
		(PEMSTATUS(thisform.oObject,lcProperty,1) OR ;
		PEMSTATUS(thisform.oObject,lcProperty,2))
	this.lReadOnly=.T.
ENDIF
IF this.lReadOnly
	this.Disable
ELSE
	IF this.ReadOnly
		this.ReadOnly=.F.
	ENDIF
ENDIF
luValue=thisform.oObject.&lcProperty
luPropertyValue=thisform.oObject.&lcProperty
IF TYPE("luValue")#TYPE("luPropertyValue") OR (this.cType=="N" AND NOT ;
		BETWEEN(luPropertyValue,-1,this.ListCount))
	NODEFAULT
	this.Value=IIF(this.cType=="N",0,"")
	this.ListIndex=-1
	this.DisplayValue=""
	this.Disable
	RETURN
ENDIF
DO CASE
	CASE this.cType=="C"
		IF lcDisplayValue==luPropertyValue
			RETURN
		ENDIF
		this.Value=luValue
		this.DisplayValue=luValue
	CASE this.cType=="N"
		IF this.ListIndex==luPropertyValue
			RETURN
		ENDIF
		this.ListIndex=luValue
		this.Value=luValue
	OTHERWISE
		IF this.Value==luPropertyValue
			RETURN
		ENDIF
		this.Value=IIF(this.cType=="N",0,"")
		this.ListIndex=-1
		this.DisplayValue=""
ENDCASE

ENDPROC
PROCEDURE InteractiveChange
LOCAL lcProperty

thisform.lObjectUpdated=.T.
lcProperty=this.cProperty
IF ISNULL(this.DisplayValue) OR NOT this.lUpdateOnChange OR ISNULL(lcProperty) OR ;
		EMPTY(lcProperty) OR NOT this.Valid()
	RETURN
ENDIF
this.RefreshPropertyValue

ENDPROC
PROCEDURE GotFocus
this.Refresh
this.lEditMode=.T.

ENDPROC
PROCEDURE LostFocus
LOCAL lcProperty

lcProperty=this.cProperty
this.lEditMode=.F.
IF ISNULL(lcProperty) OR EMPTY(lcProperty)
	RETURN
ENDIF	
this.RefreshPropertyValue

ENDPROC
PROCEDURE Valid
LOCAL lcValidExpression,Value,DisplayValue,Object,oTHIS,llResult

IF this.ReadOnly
	RETURN
ENDIF
lcValidExpression=this.cValidExpression
IF EMPTY(lcValidExpression)
	RETURN
ENDIF
lcValidExpression=ALLTRIM(lcValidExpression)
IF TYPE("lcValidExpression")=="C" AND LEFT(lcValidExpression,1)=="="
	lcValidExpression=ALLTRIM(SUBSTR(lcValidExpression,2))
ENDIF
Value=this.Value
DisplayValue=this.DisplayValue
Object=thisform.oObject
oTHIS=this
llResult=EVALUATE(lcValidExpression)
Value=.NULL.
Object=.NULL.
oTHIS=.NULL.
IF TYPE("llResult")#"L" OR NOT llResult
	this.lEditMode=.T.
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE RightClick
thisform.DefaultReset(this)

ENDPROC
�PROCEDURE setobject
LPARAMETERS toObject,tuSource,tlSkipSearch
LOCAL lnSelObjCount,lcObjectName,lcName,llClass
LOCAL laSelObj[1]

IF tlSkipSearch OR PARAMETERS()=1 OR TYPE("toObject")=="O"
	IF TYPE("toObject")=="O" OR ISNULL(toObject)
		laSelObj[1]=toObject
	ELSE
		IF NOT ISNULL(toObject)
			WAIT WINDOW this.Caption+ ;
					" Error Mode:  Object parameter required" NOWAIT
		ENDIF
		RETURN .F.
	ENDIF
ELSE
	lnSelObjCount=ASELOBJ(laSelObj)
	IF lnSelObjCount=0
		DIMENSION laSelObj[1]
		lnSelObjCount=ASELOBJ(laSelObj,1)
		IF lnSelObjCount=0
			IF ISNULL(toObject) OR TYPE("toObject")#"O"
				WAIT WINDOW this.Caption+ ;
						" Error Mode:  Nothing selected" NOWAIT
				RETURN .F.
			ENDIF
			laSelObj[1]=toObject
		ENDIF
	ENDIF
ENDIF
this.uSource=tuSource
this.oObject=laSelObj[1]
IF TYPE("this.oObject")#"O" OR ISNULL(this.oObject)
	this.oObject=.NULL.
	this.lClass=.F.
	this.cClass=""
	this.cClassLibrary=""
	this.Release
	RETURN .F.
ENDIF
this.lClass=(this.oObject.Name==this.oObject.Class)
IF this.lClass
	this.cClass=this.oObject.Name
	this.cClassLibrary=SYS(1271,this.oObject)
ELSE
	this.cClass=this.oObject.Class
	this.cClassLibrary=this.oObject.ClassLibrary
ENDIF
lcObjectName=this.oObject.Name
this.cObjectName=lcObjectName
laSelObj=.F.
DIMENSION laSelObj[1]
lnSelObjCount=ASELOBJ(laSelObj)
llClass=.F.
IF NOT llClass AND (lnSelObjCount=0 OR lnSelObjCount=1)
	IF lnSelObjCount=0
		DIMENSION laSelObj[1]
		lnSelObjCount=ASELOBJ(laSelObj,1)
	ENDIF
	IF lnSelObjCount=1
		lcName=LOWER(laSelObj[1].Name)
		IF lcName==LOWER(lcObjectName) AND lcName==LOWER(this.oObject.Class)
			llClass=.T.
		ENDIF
	ENDIF
ENDIF
this.lClass=llClass
laSelObj=.F.
this.txtName.Value=lcName
this.cmdClassBrowser.Enabled=(NOT EMPTY(thisform.oObject.ClassLibrary) AND ;
		NOT EMPTY(_browser))
this.cmdBuilder.Enabled=(NOT EMPTY(_builder))
IF NOT this.AddObjects()
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE refreshnonactivepages
LOCAL lnCount

IF TYPE("this.pgfBuilder")#"O"
	RETURN .F.
ENDIF
FOR lnCount = 1 TO this.pgfBuilder.PageCount
	this.pgfBuilder.Pages[lnCount].BackColor=thisform.BackColor
	IF lnCount=this.pgfBuilder.ActivePage
		LOOP
	ENDIF
	this.pgfBuilder.Pages[lnCount].Refresh
ENDFOR

ENDPROC
PROCEDURE addobjects
IF TYPE("this.oObject")#"O" OR ISNULL(this.oObject)
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE trimext
LPARAMETERS tcFileName,tlPlatformType
LOCAL lcFileName,lnAtPos,lnAtPos2

lcFileName=tcFileName
lnAtPos=RAT(".",lcFileName)
IF lnAtPos>0
	lnAtPos2=RAT(":",lcFileName)
	IF lnAtPos>lnAtPos2
		lcFileName=LEFT(lcFileName,lnAtPos-1)
	ENDIF
ENDIF
IF tlPlatformType
	lcFileName=IIF(_dos OR _unix,UPPER(lcFileName),LOWER(lcFileName))
ENDIF
RETURN ALLTRIM(lcFileName)

ENDPROC
PROCEDURE trimfile
LPARAMETERS tcFileName,lPlatType
LOCAL lcFileName,lnAtPos

lnAtPos=RAT("\",tcFileName)
lcFileName=ALLTRIM(IIF(lnAtPos=0,tcFileName,LEFT(tcFileName,lnAtPos)))
IF lPlatType
	lcFileName=IIF(_dos OR _unix,UPPER(lcFileName),LOWER(lcFileName))
ENDIF
RETURN lcFileName

ENDPROC
PROCEDURE trimpath
LPARAMETERS tcFileName,tlTrimExt,tlPlatformType
LOCAL lcFileName,lnAtPos

IF EMPTY(tcFileName)
	RETURN ""
ENDIF
lcFileName=tcFileName
lnAtPos=AT(":",lcFileName)
IF lnAtPos>0
	lcFileName=SUBSTR(lcFileName,lnAtPos+1)
ENDIF
IF tlTrimExt
	lcFileName=this.TrimExt(lcFileName)
ENDIF
IF tlPlatformType
	lcFileName=IIF(_dos OR _unix,UPPER(lcFileName),LOWER(lcFileName))
ENDIF
lcFileName=ALLTRIM(SUBSTR(lcFileName,AT("\",lcFileName,;
		MAX(OCCURS("\",lcFileName),1))+1))
DO WHILE LEFT(lcFileName,1)=="."
	lcFileName=ALLTRIM(SUBSTR(lcFileName,2))
ENDDO
DO WHILE RIGHT(lcFileName,1)=="."
	lcFileName=ALLTRIM(LEFT(lcFileName,LEN(lcFileName)-1))
ENDDO
RETURN lcFileName

ENDPROC
PROCEDURE setloadmessage
SET MESSAGE TO "Loading "+this.Caption+" ..."

ENDPROC
PROCEDURE defaultreset
LPARAMETERS toObject
LOCAL lcProperty,lcDefaultValue,llEditMode

IF TYPE("toObject.cProperty")#"C"
	RETURN .F.
ENDIF
lcProperty=ALLTRIM(toObject.cProperty)
IF "."$lcProperty OR NOT PEMSTATUS(this.oObject,lcProperty,5) OR ;
		NOT PEMSTATUS(this.oObject,lcProperty,0) OR ;
		PEMSTATUS(this.oObject,lcProperty,1) OR PEMSTATUS(this.oObject,lcProperty,2)
	RETURN .F.
ENDIF
lcDefaultValue=TRANSFORM(GETPEM(IIF(this.lClass,this.oObject.ParentClass, ;
		this.oObject.Class),lcProperty))
IF EMPTY(lcDefaultValue)
	lcDefaultValue="(None)"
ENDIF
IF MESSAGEBOX([Reset "]+lcProperty+[" property to default?]+CR+CR+ ;
		[Default value = ]+lcDefaultValue,292,this.Caption)#6
	RETURN .F.
ENDIF
this.oObject.ResetToDefault(lcProperty)
WITH toObject
	llEditMode=.lEditMode
	.lEditMode=.F.
	.Refresh
	.lEditMode=llEditMode
ENDWITH

ENDPROC
PROCEDURE Show
LPARAMETERS nStyle

IF this.lRelease
	NODEFAULT
	this.oObject=.NULL.
	this.lAutoRelease=.T.
	this.lAutoShow=.F.
	RETURN .F.
ENDIF
SET MESSAGE TO "Loading "+this.Caption+" ..."

ENDPROC
PROCEDURE Destroy
this.lRelease=.T.
this.Visible=.F.
this.uSource=.NULL.
this.oObject=.NULL.
SET DATASESSION TO (this.DataSessionID)
SET MESSAGE TO

ENDPROC
PROCEDURE Resize
IF this.Height<this.MinHeight
	this.Height=this.MinHeight
ENDIF
IF this.Width<this.MinWidth
	this.Width=this.MinWidth
ENDIF

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine, oObject
LOCAL lcErrorMsg,lcCodeLineMsg

this.lError=.T.
WAIT CLEAR
IF this.lRelease
	this.Release
	RETURN .F.
ENDIF
WAIT CLEAR
IF TYPE("oObject")#"O"
	oObject=this
ENDIF
lcErrorMsg=MESSAGE()+CHR(13)+CHR(13)+"Builder:     "+this.Name+CR+ ;
		"Object:      "+oObject.Name+CHR(13)+ ;
		"Method:    "+cMethod
lcCodeLineMsg=MESSAGE(1)
IF BETWEEN(nLine,1,10000) AND NOT lcCodeLineMsg="..."
	lcErrorMsg=lcErrorMsg+CHR(13)+"Line:         "+ALLTRIM(STR(nLine))
	IF NOT EMPTY(lcCodeLineMsg)
		lcErrorMsg=lcErrorMsg+CHR(13)+CHR(13)+lcCodeLineMsg
	ENDIF
ENDIF
IF MESSAGEBOX(lcErrorMsg,17,this.Caption)#1
	this.lRelease=.T.
	this.Release
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE Deactivate
PUBLIC _oBuilder
_oBuilder=this
ACTIVATE SCREEN
SELECT 0
SET MESSAGE TO

ENDPROC
PROCEDURE Init
LPARAMETERS toObject,tuSource,tlSkipSearch
LOCAL oForm,lcClass,lcName,lnCount
LOCAL laInstances[1]

PUBLIC _oBuilder
_oBuilder=this
IF NOT this.lMultipleInstances AND AINSTANCE(laInstances,this.Class)>=1
	lcClass=LOWER(this.Class)
	lcName=LOWER(this.Name)
	FOR lnCount = 1 TO _screen.FormCount
		oForm=_screen.Forms[lnCount]
		IF LOWER(oForm.Class)==lcClass AND PEMSTATUS(oForm,"lInitialized",5) AND ;
				oForm.lInitialized
			this.lRelease=.T.
			IF oForm.WindowState=1
				oForm.WindowState=0
			ENDIF
			oForm.Show
			RETURN
		ENDIF
	ENDFOR
ENDIF
IF NOT this.SetObject(toObject,tuSource,tlSkipSearch)
	this.oObject=.NULL.
	SET MESSAGE TO
	this.lRelease=.T.
	RETURN
ENDIF
this.LockScreen=.T.
IF this.lAutoCenter
	this.AutoCenter=.T.
ENDIF
this.Refresh
this.lInitialized=.T.
this.LockScreen=.F.

ENDPROC
PROCEDURE Activate
LOCAL lnPageCount,lnActivePage,lnCount

IF this.lRelease
	this.Release
	RETURN .F.
ENDIF
PUBLIC _oBuilder
_oBuilder=this
this.Refresh
this.LockScreen=.F.
SELECT 0
SET MESSAGE TO

ENDPROC
PROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl

IF nKeyCode=27
	IF this.QueryUnload()
		this.Release
	ENDIF
ENDIF

ENDPROC
PROCEDURE Refresh
IF ISNULL(this.oObject) OR TYPE("this.oObject")#"O"
	NODEFAULT
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE Load
SET TALK OFF
SET COLLATE TO "MACHINE"
SET CONFIRM ON
SET EXACT OFF
SET EXCLUSIVE OFF
SET MEMOWIDTH TO 1024
SET MULTILOCKS ON
SET PALETTE OFF
SET POINT TO "."
SET SAFETY OFF
PUBLIC _oBuilder
_oBuilder=this
this.cProgramPath=this.TrimFile(this.ClassLibrary)
IF this.lSetLoadMessage
	this.SetLoadMessage
ENDIF

ENDPROC
PROCEDURE Unload
ACTIVATE SCREEN
SET MESSAGE TO

ENDPROC
PROCEDURE Release
IF NOT this.QueryUnload()
	NODEFAULT
	RETURN .F.
ENDIF
this.lRelease=.T.
this.Visible=.F.
this.uSource=.NULL.
this.oObject=.NULL.

ENDPROC
PROCEDURE QueryUnload
this.lRelease=.T.
this.Visible=.F.
this.uSource=.NULL.
this.oObject=.NULL.

ENDPROC

MPROCEDURE release
RELEASE this

ENDPROC
PROCEDURE refreshpropertyvalue
LOCAL lcProperty,luValue,luPropertyValue

lcProperty=this.cProperty
luValue=this.Text
IF ISNULL(luValue) OR ISNULL(thisform.oObject)
	RETURN
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
IF TYPE("luValue")=="C"
	luValue=TRIM(luValue)
	IF luPropertyValue==luValue
		RETURN
	ENDIF
	thisform.lObjectUpdated=.T.
	thisform.oObject.&lcProperty=luValue
	RETURN
ENDIF
IF luPropertyValue==luValue
	RETURN
ENDIF
thisform.lObjectUpdated=.T.
thisform.oObject.&lcProperty=luValue

ENDPROC
PROCEDURE disable
this.ReadOnly=.T.

ENDPROC
PROCEDURE RightClick
thisform.DefaultReset(this)

ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord

this.Refresh

ENDPROC
PROCEDURE Valid
LOCAL lcValidExpression,Value,Object,oTHIS,llResult

IF this.ReadOnly
	RETURN
ENDIF
lcValidExpression=this.cValidExpression
IF EMPTY(lcValidExpression)
	RETURN
ENDIF
lcValidExpression=ALLTRIM(lcValidExpression)
IF TYPE("lcValidExpression")=="C" AND LEFT(lcValidExpression,1)=="="
	lcValidExpression=ALLTRIM(SUBSTR(lcValidExpression,2))
ENDIF
Value=this.Text
Object=thisform.oObject
oTHIS=this
llResult=EVALUATE(lcValidExpression)
Value=.NULL.
Object=.NULL.
oTHIS=.NULL.
IF TYPE("llResult")#"L" OR NOT llResult
	this.lEditMode=.T.
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE LostFocus
LOCAL lcProperty

lcProperty=this.cProperty
this.lEditMode=.F.
IF ISNULL(lcProperty) OR EMPTY(lcProperty)
	RETURN
ENDIF
this.RefreshPropertyValue

ENDPROC
PROCEDURE GotFocus
this.Refresh
this.lEditMode=.T.

ENDPROC
PROCEDURE InteractiveChange
LOCAL lcProperty,luValue

thisform.lObjectUpdated=.T.
lcProperty=this.cProperty
luValue=this.Text
IF ISNULL(luValue) OR NOT this.lUpdateOnChange OR ISNULL(lcProperty) OR ;
		EMPTY(lcProperty) OR TYPE("luValue")#"C" OR NOT this.Valid()
	RETURN
ENDIF
this.RefreshPropertyValue

ENDPROC
PROCEDURE Refresh
LOCAL lcProperty,luValue,luPropertyValue

IF this.lEditMode
	NODEFAULT
	RETURN
ENDIF
this.cType=TYPE("thisform.oObject."+this.cProperty)
lcProperty=this.cProperty
luValue=this.Text
IF (NOT this.lAutoRefresh AND NOT ISNULL(luValue)) OR EMPTY(lcProperty) OR ;
		ISNULL(thisform.oObject) OR TYPE("thisform.oObject."+lcProperty)=="U"
	NODEFAULT
	this.Value=""
	this.Disable
	RETURN
ENDIF
IF NOT this.lReadOnly AND NOT "."$lcProperty AND NOT ","$lcProperty AND ;
		(PEMSTATUS(thisform.oObject,lcProperty,1) OR ;
		PEMSTATUS(thisform.oObject,lcProperty,2))
	this.lReadOnly=.T.
ENDIF
IF this.lReadOnly
	this.Disable
ELSE
	IF this.ReadOnly
		this.ReadOnly=.F.
	ENDIF
ENDIF
luPropertyValue=thisform.oObject.&lcProperty
IF NOT ISNULL(luValue) AND TYPE("luValue")==TYPE("luPropertyValue") AND ;
		luValue==luPropertyValue
	RETURN
ENDIF
this.Value=thisform.oObject.&lcProperty

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC
PROCEDURE Init
IF EMPTY(this.cProperty) OR INLIST(this.cType,"U","O") OR ISNULL(this.Value)
	this.Value=""
ENDIF

ENDPROC
PROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl

IF NOT this.lAllowEnter AND nKeyCode=13
	NODEFAULT
	RETURN .F.
ENDIF
IF nKeyCode#127 AND this.nMaxLength>0 AND LEN(this.Text)>this.nMaxLength
	this.Value=LEFT(this.Text,this.nMaxLength)
ENDIF

ENDPROC
�oobject
linitialized
lautocenter
builder Specifies a custom builder reserved for use with BUILDER.APP (supplied with VFP).  Must be a valid PRG, FXP, APP, or SCX filename.
cversion
lautoshow
lautorelease
builderx Specifies a custom builder reserved for use with BuilderX.  Must be a valid VCX class, PRG, FXP, APP, or SCX filename.  Classes are specified using [ClassLib], Class syntax.  Leave ClassLib blank to specify the current classlib (,<class>).
cobjectname
lclass
lmultipleinstances
lerror
lrelease
usource
lobjectupdated
cprogrampath
lsetloadmessage
ndefaultpagecount
cclass
cclasslibrary
chelpfile
nhelpid
*setobject 
*refreshnonactivepages 
*addobjects 
*trimext 
*trimfile 
*trimpath 
*setloadmessage 
*defaultreset 
0��� �0�0��
%a*�/T$+�U
<��UTHIS�������������T��C���	��%�C����S�	B�����T��C�;�����
�����
T�����
T����������(����q�%���
���T��C�;���T��CC���=���T��CC���\����%�T��C����
T������%�C����<�.��T������
�����T����������	B����U
TALINKSTCLINKSLCLINKSLCLINKLNLINKTOTALLNLINKCOUNTLNCOUNTLNATPOSTHISTRANSFORMLINKSA�����#��������	�
�T��C�����%�C����_�	B�����T�	�CW��F�
�"T�
�CC+�COCN���CO6��
T�����T��C�;����������(����	�%���
��(�T��C�;���T��CC���=���T��CC���\����L�T��C����
T������%�C����c�.��E�C�@��*%�C+
�C���CC�f�CC�f�	����	^J����C������T��C�������%�C������.���T�����;����%��
���'�	#��
���
F��	��	B����UTCLINKSTOOBJECTTCTYPELCLINKS1LCLINKS2LCLINKLNLINKTOTALLNCOUNTLNATPOSLNLASTSELECTLNLASTRECNOTHISTRANSFORMLINKSBUILDERTYPE
ONEWOBJECTINHERITPROPERTIES	EVALLINKSLINKS<%�C�Builder���!�F��B��%�C��0
����%�C��0
��Z�F��B�-���F�����������Q�%�C��0
����B�-����F��Q�������%�C�Builder�
����F��B�-���G(�C'
��%�C���ID
��&�& �CC��@����C��
���G((�ID�-�UBUILDERTHIS
CBUILDERTABLECBUILDERSTRUCTURETABLEID��������������	�
�����
������������������������� �!��"�#�$���%�&�'�(�)�*�+���,����-����T�.�/��T�.�0��T�.�1��T�.�2����%�C�.�3
��A�F��G&(�B�-���T��C�4�5@��T��CC���4�6�.�7]@��
T�	����0~�CC�8�f�CLASS�CCC�9���@�	���T�"�CC�:�����B%�C�"��0CC��CC�"�=�(�C�"���"6�.�7]@����T�	�CO��!���T�.�2��	��%��	�����5T��CC�thisform.uSourceb�C�	�4�;��6��
��4�<�F��G&(�%�C��
������:���4�=������B��	^J�)�(T��C�,C�@�)�8�.�?�.�>��%������F��G&(�B��T�.�/��)��%�C�4�A��
C�)�B�
	��_�T�4�A��)�B���%�C�4�C��
C�)�D�
	����T�4�C��)�D���T�#�C�CLASSLIBv��G~(��.�E��T�!��4�F��T�4�F�a�����4�G��!�T�H��4�I��T���H��T���4�I�����
T�����
T�����
T�����
T�����
T�-����
T�����
T�����
T�����T��CC�)�J�����%�C������T���� Builder���T�4�K����T�)����
���(�C�,����%�C�builder�
�� �!��F�L�T��CC�8�f��T� �CC�
�,���E�C� @��%�C� �=�@����T� �CC� �\���T�*�a�����T�*�C+
���PAGE	��E�C� @���%�C� �����.��	^J�)���C�@�)�8�.�?��T��CC�)�8�f��
H�!�o����PROPERTY��J�T�.�1��)�����PAGE��o�T�.�0��)���
%��*��6�%�C+
���PAGE	����T��CC�)�J��������
T��� ���%�C�-C�@������
T������.�T������
�-����T�-����C�@���.��%�C� ���M�.��
T�����
T�����
T�����
T�����
T�����
T�����
T�����
T�����
T�����
T�����
T�(����T�&�-��T�'�-��
T�%����
T�
����
T�M����
T�$���� %�C+
���PROPERTY	���	�T��CC�)�N�����T��C�)�J���T�%�CC�)�O�����T���)�P��T���)�Q��T���)�R��T���)�S��T��C�)�T���T���)�U��CT��CCCCC�)�V�C�
 C�
 �,�C�
 �,�C�
 �,��;�,���T�(��)�W��T�&��)�X��T�'��)�Y��T�
�CC�)�9�����T�"�CCC�)�:���@��%�C�"�
���	�(%�C�"�=�(�C�"�R�)	���	�T�"�C�"���
G~(��"����%���*��
�
T������]
�%�C����9
�T��CC� ������%�C����Y
�
T�������T��C������6��T������
H��
�L��C�����
�T���C���C��=�^���
�T���C��T��CC��\���2�L�$T��C�thisform.oObject.�b��$%�C��C�N�L�D�T�
��H�.���%�C��=�^��{�T��CC��\����*T��C��
�C��C�N�D�T�	��*%�C��
�C��
	�
C�@C�@
	����T���.�Z����T��C��.�Z8���
T�����%�����=�
T�����
T������T���PageCC�Z���%��4�G�H�
��

����4�G��	
�T�H����WITH .&lcPageName�
�T�[��4�[��T�\��4�\��T�]��4�]��%�����
�T�K��General��������,WITH thisform.pgfBuilder.&lcPageName���%�C���C��
	��c
�
T������%�C��
���
�T�K����
T������%������
�#T���.�^C��.�ZG�.�_���%������
�T���.�`���T������T��CC��]@��%�C�
��	��L	����T�+�CW��!��C��BuilderCheckBox�a��
F��+��%�C�.�b�O����T������.��oControl=.&lcObjName

�������T�P����T�Q����T�b����T������%�C��Style��h��#�T�W��(���%�C��
��E�T�K�����T�c��X��%�C��
��u�T�d�����T�c��&��%�C�%�
����T�e��%�����f�T�g�a����T���.��%�C��
���T���T��CC��]@��T�+�CW����C��BuilderLabel�a��
F��+��%�C�.�b�O��c�T������.��oControl=.&lcLabelName

�������T�P����T�Q����T�b����T������T�K����T�g�a��T�$��Q�S����T����T��C��d�$D��%�C�
�
����T�+�CW����C��
�a��
F��+��%�C�.�b�O����T������%�C��
������C��h���.��oControl=.&lcObjName

�����t�T�P����T�Q����%�����
�T�R�����%�����0�T�S�����%�C��TabIndex��h��q�T�b����T�������'%�C��Caption��h�C��
	����T�K�����)%�C��	cProperty��h�C��
	����T�d�����%�C��	lReadOnly��h���T�c��&���%%�C��lUpdateOnChange��h��M�T�i��'���&%�C��cValidExpression��h����T�j�����%�C��Style��h����T�W��(���#%�C��
RowSourceType��h���%�C��
����T�k�����%�C��
���T�V������-%�C��
StatusBarText��h�C�%�
	��\�T�e��%�����f�T�g�a����T���.��T�+�CW��=��C�C���BuilderComboBox��BuilderTextBox6�a��
F��+��%�C�.�b�O���T������.��oControl=.&lcObjName

�������T�P����T�Q����%�����p�T�R�����%�������T�S�����T�b����T������T�c��X��%�C��
����T�d�����T�c��&��T�i��'��%�C�%�
�� �T�e��%���T�j����
%������'%���N�	�W�	�C�(�	��t�T�W�������T�W��(���%�C��
����T�k�����%�C��
����T�V��������f�T�g�a����T�������T�.�1��T�.�0��%�CC�
��8�#��.�2���T�4�F��!��&SET CLASSLIB TO &lcLastSetClassLib
F��G&(�%������	����
��4�<�B�-���UlLCCLASSLCCLASSLIBRARY	LCCAPTION
LCPROPERTYLCVALIDEXPRLNROWSOURCETYPELCROWSOURCE
LLDROPDOWNOCONTROLLNRECNO
LCOBJCLASSLCLABELNAME	LCOBJNAMELNCOUNTLNLASTPAGECOUNT
LNOBJCOUNTLNOBJADD
LNOBJTOTALLNTOPLNLEFTLNHEIGHTLNWIDTH
LCPAGENAME
LCPAGECAPTIONLCLASTPAGECAPTIONLNPAGECOUNT
LNPARENTCOUNTLCSOURCE
LNTABINDEXLCRECORDTYPELCTYPELNPAGENOLCLINKLLLOCKSCREEN
LCCLASSLIBLCLASTSETCLASSLIB	LNMINLEFTLCDESC
LLREADONLYLLUPDATEONCHANGELNSTYLEORECORDLLPAGELNSELECTLALINKS	LAPARENTSTHISOCLASSRECORDOPAGERECORDOPROPERTYRECORDNRECNOOPENBUILDERTABLETHISFORMCCLASS
CCLASSLIBRARY
CBUILDERTABLETYPE	CLASSNAMECLASSLIBUSOURCERELEASEOOBJECTALINKS	EVALLINKSLINKS	CHELPFILEHELPFILENHELPIDHELPIDCLASSLIBRARY
LOCKSCREEN
PGFBUILDER	PAGECOUNTNDEFAULTPAGECOUNTTEXTCAPTIONBUILDERLCOBJCLASSLIBRARYMEMBERDESCTOPLEFTHEIGHTWIDTH	VALIDEXPR
ROWSRCTYPE	ROWSOURCESTYLEREADONLY	UPDONCHNGNMAXOBJECTSFONTNAMEFONTSIZEFONTBOLD
NTOPFACTORNTOPNLEFT	ADDOBJECTTABINDEX	LREADONLY	CPROPERTY
STATUSBARTEXTREFRESHVISIBLEREMOVEOBJECTLUPDATEONCHANGECVALIDEXPRESSION
ROWSOURCETYPE�������%�C����&�	B�����@T��CCCCC��C�
 C�
 �;�C�
 �;�C�
 �;��,�;���%�C��=�;����T��CC��\����%�C��R�;����T��CC�C�>�=����	B����UTCLINKSLCLINKS����%�C����
C���
	��=�T��������%�C����
C���
	��s�T��������%�C����
C���
	����T��������%�C����
C���
	����T��������%�C����
C���
	���T��������%�C����
C���
	��K�T��������%�C����
C���
	����T��������%�C��	��
C��	�
	����T��	���	���%�C��
��
C��
�
	����T��
���
���%�C����
C���
	��#�T��������%�C����
C���
	��Y�T��������%�C��
��
C��
�
	����T��
���
���%�C����
C���
	����T��������%�C����
C���
	����T��������%�C����
C���
	��1�T��������%�C����
C���
	��g�T��������%�C����
C���
	����T��������%�C����
C���
	����T��������%�C����
C���
	��	�T��������UTOOBJECTTONEWOBJECTTEXTDESC	CLASSNAMECLASSLIBMEMBERHELPFILEHELPIDTOPLEFTHEIGHTWIDTH
ROWSRCTYPE	ROWSOURCESTYLE	VALIDEXPRREADONLY	UPDONCHNGCOMMENTUSER%%�C�Builder����Q���UBUILDER�T���C�����%��\��
��E�T����������T���CC���@��%��\��
����T����������T���CC���@��UTHIS
CBUILDERTABLETHISFORMCPROGRAMPATHCBUILDERSTRUCTURETABLE/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHISrelease,��alinks@��	evallinks*��openbuildertable6��
addobjects���transformlinks#��inheritproperties	$��Destroy�(��Init)��Error�)��1q3��R��A����q1�����A�AA�1A�3�1R��A�q!��q1�����A�AA���Q��AAAaA�A��3aqAA11�qA�qA1qAA�1q�qA�a�A�A3q������q���!�aqA!��A"�AAAQ��a�AAA���aAA�1A�1Aq��AA��������q��A��qAAqA�qA����A�AA��A��QA��q��A����QAAA�AA�����������������q!q!2q���A�AA!���AA��AA����q�A�AAAAAqAA��AA����A�q��QAAAA���A��A1AA!����AA�������A�A��A��A��A�AA�!����AA�������1A�Aa�1���AAA�����A�A��Aq�A��A��AQ�Aa�A��A1�A�AA��A��A�AA����AA�����A�A���A���A��q���A�A�AA��A�AA����Aa�a��qA3qq��AqAAq�A�3��1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A�1A3a�A3Qa�Aqa�Aq3��2!>���$G�E	Odf	D2o�i2�3�3�;C<H<\Gc<�=bQ>j>n)�0
�� �
�
�%�
�y��U
<��UTHISS%�C�
this.Valueb�C��4�T���C�X��Q���L�T�������UTHIS	INPUTMASKU�����T������T������%�C���	C�����N�B��0luPropertyValue=thisform.oObject.&lcProperty
%�C�luValueb�C����T��C�`��%�������B��T���a��(thisform.oObject.&lcProperty=luValue
B��%������B��T���a��(thisform.oObject.&lcProperty=luValue
U	
LCPROPERTYLUVALUELUPROPERTYVALUETHIS	CPROPERTYVALUETHISFORMOOBJECTLOBJECTUPDATEDT���a��UTHISREADONLY ������
����UNBUTTONNSHIFTNXCOORDNYCOORDTHISREFRESHI2%�C����C���U�O��	C�����B�T�������UTHIS	CPROPERTYCTYPEVALUE/�����B�C��������UNERRORCMETHODNLINETHISFORMERRORTHIS

����UTHISREFRESHINPUTMASKA�����%�����'���B��*T���C�thisform.oObject.��b��T������T������T%���
�C��
	�C���	C�	�
�� C�thisform.oObject.�b�U������T������
����B��R%���
�
�.�
	�
�,�
	�$C�	�
���h�C�	�
���h	��O�T���a���%�����m�
�������%���
����T��
�-����0luPropertyValue=thisform.oObject.&lcProperty
@%�C��
�"C�luValuebC�luPropertyValueb	���	���B��+this.Value=thisform.oObject.&lcProperty
U
LCPROPERTYLUVALUELUPROPERTYVALUETHIS	LEDITMODECTYPE	CPROPERTYVALUELAUTOREFRESHTHISFORMOOBJECTDISABLE	LREADONLYREADONLY�����T���a��T������T������M%�C�����
�C���C���C�luValueb�C�	C��
����B��
���	�U

LCPROPERTYLUVALUETHISFORMLOBJECTUPDATEDTHIS	CPROPERTYVALUELUPDATEONCHANGEVALIDREFRESHPROPERTYVALUE
����T���a��UTHISREFRESH	LEDITMODER���T������T���-��%�C���C����A�B��
����U
LCPROPERTYTHIS	CPROPERTY	LEDITMODEREFRESHPROPERTYVALUEP�������%�����+�B��T������%�C����R�B��T��C����6%�C�lcValidExpressionb�C�C��=�=	����T��CC��\����T������T����	��
T�����T��C���T���T���T���$%�C�llResultb�L��
��I�T��
�a��B�-���ULCVALIDEXPRESSIONVALUEOBJECTOTHISLLRESULTTHISREADONLYCVALIDEXPRESSIONTHISFORMOOBJECT	LEDITMODE��C�����UTHISFORMDEFAULTRESETTHISrelease,��refreshinputmask@��refreshpropertyvalue���disableb��	MouseMove���Init���ErrorI��ProgrammaticChange���Refresh���InteractiveChange���GotFocus���	LostFocus���Valid���
RightClickP
��1q3�a�A3��AA��AA��AAAA��3�31�3!A3��3�3�AAA�BA�AA#�A���AAAA�3���AA�3��3q��AA�3qAA�AA�aAA�����A�qA32!H�	��
��&!T*$o�0(�H6+q�<-�*@KRp	eT�	�	rW�	l
w_�
��w�
�)�
>uPROCEDURE release
RELEASE this

ENDPROC
PROCEDURE alinks
LPARAMETERS taLinks,tcLinks
LOCAL lcLinks,lcLink,lnLinkTotal,lnLinkCount,lnCount,lnAtPos

lcLinks=this.TransformLinks(tcLinks)
IF EMPTY(lcLinks)
	RETURN 0
ENDIF
lnLinkTotal=(OCCURS(";",lcLinks)+1)
DIMENSION taLinks[1]
taLinks=""
lnLinkCount=0
FOR lnCount = 1 TO lnLinkTotal
	IF lnCount<lnLinkTotal
		lnAtPos=AT(";",lcLinks)
		lcLink=ALLTRIM(LEFT(lcLinks,lnAtPos-1))
		lcLinks=ALLTRIM(SUBSTR(lcLinks,lnAtPos+1))
	ELSE
		lcLink=ALLTRIM(lcLinks)
		lcLinks=""
	ENDIF
	IF EMPTY(lcLink)
		LOOP
	ENDIF
	lnLinkCount=lnLinkCount+1
	DIMENSION taLinks[lnLinkCount]
	taLinks[lnLinkCount]=lcLink
ENDFOR
RETURN lnLinkCount

ENDPROC
PROCEDURE evallinks
LPARAMETERS tcLinks,toObject,tcType
LOCAL lcLinks1,lcLinks2,lcLink,lnLinkTotal,lnCount,lnAtPos,lnLastSelect,lnLastRecNo

lcLinks1=this.TransformLinks(tcLinks)
IF EMPTY(lcLinks1)
	RETURN ""
ENDIF
lnLastSelect=SELECT()
SELECT Builder
lnLastRecNo=IIF(EOF() OR RECNO()>RECCOUNT(),0,RECNO())
lcLinks2=""
lnLinkTotal=(OCCURS(";",lcLinks1)+1)
FOR lnCount = 1 TO lnLinkTotal
	IF lnCount<lnLinkTotal
		lnAtPos=AT(";",lcLinks1)
		lcLink=ALLTRIM(LEFT(lcLinks1,lnAtPos-1))
		lcLinks1=ALLTRIM(SUBSTR(lcLinks1,lnAtPos+1))
	ELSE
		lcLink=ALLTRIM(lcLinks1)
		lcLinks1=""
	ENDIF
	IF EMPTY(lcLink)
		LOOP
	ENDIF
	SEEK (LOWER(lcLink))
	IF NOT EOF() AND (EMPTY(tcType) OR ALLTRIM(UPPER(tcType))==ALLTRIM(UPPER(Type)))
		SCATTER MEMO NAME oNewObject
		this.InheritProperties(toObject,oNewObject)
		lcLink=this.EvalLinks(Links,toObject,tcType)
		IF EMPTY(lcLink)
			LOOP
		ENDIF
	ENDIF
	lcLinks2=lcLinks2+lcLink+";"
ENDFOR
IF lnLastRecNo>0
	GO lnLastRecNo
ENDIF
SELECT (lnLastSelect)
RETURN lcLinks2

ENDPROC
PROCEDURE openbuildertable
IF USED("Builder")
	SELECT Builder
	RETURN
ENDIF
IF NOT FILE(this.cBuilderTable)
	IF NOT FILE(this.cBuilderStructureTable)
		SELECT 0
		RETURN .F.
	ENDIF
	SELECT 0
	CREATE (this.cBuilderTable) FROM (this.cBuilderStructureTable)
	USE
	IF NOT FILE(this.cBuilderTable)
		RETURN .F.
	ENDIF
ENDIF
SELECT 0
USE (this.cBuilderTable) AGAIN SHARED ALIAS builder
IF NOT USED("Builder")
	SELECT 0
	RETURN .F.
ENDIF
SET FILTER TO NOT DELETED()
IF NOT TAG(1)=="ID"
	INDEX ON LOWER(ALLTRIM(ID)) FOR NOT EMPTY(ID) ;
			TAG ID UNIQUE ADDITIVE
ENDIF
SET ORDER TO ID
LOCATE

ENDPROC
PROCEDURE addobjects
LOCAL lcClass,lcClassLibrary,lcCaption,lcProperty,lcValidExpr
LOCAL lnRowSourceType,lcRowSource,llDropDown,oControl,lnRecNo,lcObjClass
LOCAL lcLabelName,lcObjName,lnCount,lnLastPageCount,lnObjCount,lnObjAdd,lnObjTotal
LOCAL lnTop,lnLeft,lnHeight,lnWidth,lcPageName,lcPageCaption,lcLastPageCaption
LOCAL lnPageCount,lnParentCount,lcSource,lnTabIndex,lcRecordType,lcType,lnPageNo
LOCAL lcLink,llLockScreen,lnObjTotal,lcClassLib,lcLastSetClassLib,lnMinLeft
LOCAL lcDesc,llReadOnly,llUpdateOnChange,lnStyle,oRecord,llPage,lnSelect
LOCAL laLinks[1],laParents[1]

this.oClassRecord=.NULL.
this.oPageRecord=.NULL.
this.oPropertyRecord=.NULL.
this.nRecNo=0
IF NOT this.OpenBuilderTable()
	SELECT 0
	SET MESSAGE TO
	RETURN .F.
ENDIF
lcClass=LOWER(thisform.cClass)
lcClassLibrary=LOWER(SYS(2014,thisform.cClassLibrary,this.cBuilderTable))
lnRecNo=0
SCAN ALL FOR UPPER(ALLTRIM(Type))=="CLASS" AND ;
		LOWER(ALLTRIM(MLINE(ClassName,1)))==lcClass
	lcClassLib=ALLTRIM(MLINE(ClassLib,1))
	IF EMPTY(lcClassLib) OR LOWER(SYS(2014,IIF(LEFT(lcClassLib,1)=="(", ;
			EVALUATE(lcClassLib),lcClassLib),this.cBuilderTable))==lcClassLibrary
		lnRecNo=RECNO()
		EXIT
	ENDIF
ENDSCAN
this.nRecNo=lnRecNo
IF lnRecNo=0
	lcSource=IIF(TYPE("thisform.uSource")=="C",thisform.uSource,"")
	thisform.Release
	SELECT 0
	SET MESSAGE TO
	IF NOT EMPTY(lcSource)
		DO (_builder) WITH (thisform.oObject),,.NULL.
	ENDIF
	RETURN
ENDIF
SCATTER MEMO NAME oRecord
lnObjTotal=this.ALinks(@laLinks,this.EvalLinks(Links,oRecord,Type))
IF lnObjTotal=0
	SELECT 0
	SET MESSAGE TO
	RETURN
ENDIF
this.oClassRecord=oRecord
IF EMPTY(thisform.cHelpFile) AND NOT EMPTY(oRecord.HelpFile)
	thisform.cHelpFile=oRecord.HelpFile
ENDIF
IF EMPTY(thisform.nHelpID) AND NOT EMPTY(oRecord.HelpID)
	thisform.nHelpID=oRecord.HelpID
ENDIF
lcLastSetClassLib=SET("CLASSLIB")
SET CLASSLIB TO (this.ClassLibrary) ADDITIVE
llLockScreen=thisform.LockScreen
thisform.LockScreen=.T.
WITH thisform.pgfBuilder
	.PageCount=thisform.nDefaultPageCount
	lnPageCount=.PageCount
	lnLastPageCount=thisform.nDefaultPageCount+1
ENDWITH
lnTabIndex=1
lnObjCount=0
lnObjAdd=1
lnObjTotal=0
laParents=""
lnParentCount=0
lcPageCaption=""
lcLastPageCaption=""
lcCaption=ALLTRIM(MLINE(oRecord.Text,1))
IF EMPTY(lcCaption)
	lcCaption=lcClass+" Builder"
ENDIF
thisform.Caption=lcCaption
oRecord=.NULL.
FOR lnCount = 1 TO ALEN(laLinks)
	IF NOT USED("builder")
		EXIT
	ENDIF
	SELECT builder
	lcRecordType=UPPER(ALLTRIM(Type))
	lcLink=ALLTRIM(laLinks[lnCount])
	SEEK (LOWER(lcLink))
	IF LEFT(lcLink,1)=="@"
		lcLink=ALLTRIM(SUBSTR(lcLink,2))
		llPage=.T.
	ELSE
		llPage=(NOT EOF() AND lcRecordType=="PAGE")
		SEEK (LOWER(lcLink))
	ENDIF
	IF EMPTY(lcLink)
		LOOP
	ENDIF
	SCATTER MEMO NAME oRecord
	this.EvalLinks(Links,oRecord,Type)
	lcRecordType=UPPER(ALLTRIM(oRecord.Type))
	DO CASE
		CASE lcRecordType=="PROPERTY"
			this.oPropertyRecord=oRecord
		CASE lcRecordType=="PAGE"
			this.oPageRecord=oRecord
	ENDCASE
	IF llPage
		IF NOT EOF() AND lcRecordType=="PAGE"
			lcPageCaption=ALLTRIM(MLINE(oRecord.Text,1))
		ELSE
			lcPageCaption=lcLink
		ENDIF
		IF ASCAN(laParents,LOWER(lcPageCaption))>0
			lcPageCaption=""
		ELSE
			lnParentCount=lnParentCount+1
			DIMENSION laParents[lnParentCount]
			laParents[lnParentCount]=LOWER(lcPageCaption)
		ENDIF
		LOOP
	ENDIF
	IF EMPTY(lcLink)
		LOOP
	ENDIF
	lcLabelName=""
	lcProperty=""
	lcCaption=""
	lnTop=0
	lnLeft=0
	lnHeight=0
	lnWidth=0
	lcValidExpr=""
	lnRowSourceType=0
	lcRowSource=""
	lnStyle=0
	llReadOnly=.F.
	llUpdateOnChange=.F.
	lcDesc=""
	lcObjClass=""
	lcObjClassLibrary=""
	lnMinLeft=0
	IF NOT EOF() AND lcRecordType=="PROPERTY"
		lcProperty=ALLTRIM(MLINE(oRecord.Member,1))
		lcCaption=ALLTRIM(oRecord.Text)
		lcDesc=ALLTRIM(MLINE(oRecord.Desc,1))
		lnTop=oRecord.Top
		lnLeft=oRecord.Left
		lnHeight=oRecord.Height
		lnWidth=oRecord.Width
		lcValidExpr=ALLTRIM(oRecord.ValidExpr)
		lnRowSourceType=oRecord.RowSrcType
		lcRowSource=STRTRAN(STRTRAN(STRTRAN(STRTRAN(ALLTRIM(oRecord.RowSource),CR_LF,","), ;
				LF,","),CR,","),";",",")
		lnStyle=oRecord.Style
		llReadOnly=oRecord.ReadOnly
		llUpdateOnChange=oRecord.UpdOnChng
		lcObjClass=ALLTRIM(MLINE(oRecord.ClassName,1))
		lcClassLib=LOWER(ALLTRIM(MLINE(oRecord.ClassLib,1)))
		IF NOT EMPTY(lcClassLib)
			IF LEFT(lcClassLib,1)=="(" AND RIGHT(lcClassLib,1)==")"
				lcClassLib=EVALUATE(lcClassLib)
			ENDIF
			SET CLASSLIB TO (lcClassLib) ADDITIVE
		ENDIF
	ENDIF
	IF lcCaption=="*"
		lcCaption=""
	ELSE
		IF EMPTY(lcProperty)
			lcProperty=ALLTRIM(MLINE(lcLink,1))
		ENDIF
		IF EMPTY(lcCaption)
			lcCaption=lcProperty
		ENDIF
	ENDIF
	lnObjAdd=IIF(lnTop=0,1,0)
	lnObjTotal=lnObjTotal+1
	DO CASE
		CASE EMPTY(lcProperty)
			lcType="C"
		CASE LEFT(lcProperty,1)=="^"
			lcType="C"
			lcProperty=ALLTRIM(SUBSTR(lcProperty,2))
		OTHERWISE
			lcType=TYPE("thisform.oObject."+lcProperty)
			IF NOT INLIST(lcType,"C","N","L","D","T")
				LOOP
			ENDIF
	ENDCASE
	IF LEFT(lcCaption,1)=="^"
		lcCaption=ALLTRIM(SUBSTR(lcCaption,2))
	ENDIF
	llDropDown=(NOT EMPTY(lcRowSource) AND INLIST(lcType,"C","N","D","T"))
	IF NOT EMPTY(lcPageCaption) AND NOT EMPTY(lcLastPageCaption) AND ;
			NOT LOWER(lcLastPageCaption)==LOWER(lcPageCaption)
		lnObjCount=this.nMaxObjects*lnPageCount
	ENDIF
	lnPageNo=INT(lnObjCount/this.nMaxObjects)+1
	lnPageCount=lnPageNo
	IF lnLastPageCount#lnPageCount
		lnLastPageCount=lnPageCount
		lnTabIndex=1
	ENDIF
	lcPageName="Page"+ALLTRIM(STR(lnPageCount))
	IF thisform.pgfBuilder.PageCount<lnPageCount
		WITH thisform.pgfBuilder
			.PageCount=lnPageCount
			WITH .&lcPageName
				.FontName=thisform.FontName
				.FontSize=thisform.FontSize
				.FontBold=thisform.FontBold
				IF lnPageCount=1
					.Caption="General"
				ENDIF
			ENDWITH
		ENDWITH
	ENDIF
	WITH thisform.pgfBuilder.&lcPageName
		IF EMPTY(lcPageCaption) AND NOT EMPTY(lcLastPageCaption)
			lcPageCaption=lcLastPageCaption
		ENDIF
		IF NOT EMPTY(lcPageCaption)
			.Caption=lcPageCaption
			lcLastPageCaption=lcPageCaption
		ENDIF
		IF lnTop=0
			lnTop=this.nTopFactor*MOD(lnObjCount,this.nMaxObjects)+this.nTop
		ENDIF
		IF lnLeft=0
			lnLeft=this.nLeft
		ENDIF
		lnObjCount=lnObjCount+lnObjAdd
		lcObjName=LOWER(SYS(2015))
		IF EMPTY(lcObjClass) AND lcType=="L"
			lnSelect=SELECT()
			.AddObject(lcObjName,"BuilderCheckBox")
			SELECT (lnSelect)
			IF TYPE("."+lcObjName)#"O"
				lnObjCount=lnObjCount-lnObjAdd
				LOOP
			ENDIF
			oControl=.&lcObjName
			WITH oControl
				.Top=lnTop
				.Left=lnLeft
				.TabIndex=lnTabIndex
				lnTabIndex=lnTabIndex+1
				IF PEMSTATUS(oControl,"Style",5)
					.Style=lnStyle
				ENDIF
				IF NOT EMPTY(lcCaption)
					.Caption=lcCaption
				ENDIF
				.lReadOnly=ReadOnly
				IF NOT EMPTY(lcProperty)
					.cProperty=lcProperty
				ENDIF
				.lReadOnly=llReadOnly
				IF NOT EMPTY(lcDesc)
					.StatusBarText=lcDesc
				ENDIF
				.Refresh
				.Visible=.T.
			ENDWITH
			oControl=.NULL.
			LOOP
		ENDIF
		IF NOT EMPTY(lcCaption)
			oControl=.NULL.
			lcLabelName=LOWER(SYS(2015))
			lnSelect=SELECT()
			.AddObject(lcLabelName,"BuilderLabel")
			SELECT (lnSelect)
			IF TYPE("."+lcLabelName)#"O"
				lnObjCount=lnObjCount-lnObjAdd
				LOOP
			ENDIF
			oControl=.&lcLabelName
			WITH oControl
				.Top=lnTop
				.Left=lnLeft
				.TabIndex=lnTabIndex
				lnTabIndex=lnTabIndex+1
				.Caption=lcCaption
				.Visible=.T.
				lnMinLeft=.Left+.Width
			ENDWITH
			oControl=.NULL.
		ENDIF
		lnLeft=MAX(lnLeft+100,lnMinLeft)
		IF NOT EMPTY(lcObjClass)
			lnSelect=SELECT()
			.AddObject(lcObjName,lcObjClass)
			SELECT (lnSelect)
			IF TYPE("."+lcObjName)#"O"
				lnObjCount=lnObjCount-lnObjAdd
				IF NOT EMPTY(lcLabelName)
					.RemoveObject(lcLabelName)
				ENDIF
				LOOP
			ENDIF
			oControl=.&lcObjName
			WITH oControl
				.Top=lnTop
				.Left=lnLeft
				IF lnHeight>0
					.Height=lnHeight
				ENDIF
				IF lnWidth>0
					.Width=lnWidth
				ENDIF
				IF PEMSTATUS(oControl,"TabIndex",5)
					.TabIndex=lnTabIndex
					lnTabIndex=lnTabIndex+1
				ENDIF
				IF PEMSTATUS(oControl,"Caption",5) AND NOT EMPTY(lcCaption)
					.Caption=lcCaption
				ENDIF
				IF PEMSTATUS(oControl,"cProperty",5) AND NOT EMPTY(lcProperty)
					.cProperty=lcProperty
				ENDIF
				IF PEMSTATUS(oControl,"lReadOnly",5)
					.lReadOnly=llReadOnly
				ENDIF
				IF PEMSTATUS(oControl,"lUpdateOnChange",5)
					.lUpdateOnChange=llUpdateOnChange
				ENDIF
				IF PEMSTATUS(oControl,"cValidExpression",5)
					.cValidExpression=lcValidExpr
				ENDIF
				IF PEMSTATUS(oControl,"Style",5)
					.Style=lnStyle
				ENDIF
				IF PEMSTATUS(oControl,"RowSourceType",5)
					IF NOT EMPTY(lnRowSourceType)
						.RowSourceType=lnRowSourceType
					ENDIF
					IF NOT EMPTY(lcRowSource)
						.RowSource=lcRowSource
					ENDIF
				ENDIF
				IF PEMSTATUS(oControl,"StatusBarText",5) AND NOT EMPTY(lcDesc)
					.StatusBarText=lcDesc
				ENDIF
				.Refresh
				.Visible=.T.
			ENDWITH
			oControl=.NULL.
			LOOP
		ENDIF
		lnSelect=SELECT()
		.AddObject(lcObjName,IIF(llDropDown,"BuilderComboBox","BuilderTextBox"))
		SELECT (lnSelect)
		IF TYPE("."+lcObjName)#"O"
			lnObjCount=lnObjCount-lnObjAdd
			LOOP
		ENDIF
		oControl=.&lcObjName
		WITH oControl
			.Top=lnTop
			.Left=lnLeft
			IF lnHeight>0
				.Height=lnHeight
			ENDIF
			IF lnWidth>0
				.Width=lnWidth
			ENDIF
			.TabIndex=lnTabIndex
			lnTabIndex=lnTabIndex+1
			.lReadOnly=ReadOnly
			IF NOT EMPTY(lcProperty)
				.cProperty=lcProperty
			ENDIF
			.lReadOnly=llReadOnly
			.lUpdateOnChange=llUpdateOnChange
			IF NOT EMPTY(lcDesc)
				.StatusBarText=lcDesc
			ENDIF
			.cValidExpression=lcValidExpr
			IF llDropDown
				IF lcType=="N" AND .Style=0 AND EMPTY(lnStyle)
					.Style=2
				ELSE
					.Style=lnStyle
				ENDIF
				IF NOT EMPTY(lnRowSourceType)
					.RowSourceType=lnRowSourceType
				ENDIF
				IF NOT EMPTY(lcRowSource)
					.RowSource=lcRowSource
				ENDIF
			ENDIF
			.Refresh
			.Visible=.T.
		ENDWITH
		oControl=.NULL.
	ENDWITH
ENDFOR
this.oPropertyRecord=.NULL.
this.oPageRecord=.NULL.
IF NOT EMPTY(ALIAS())
	GO this.nRecNo
ENDIF
thisform.LockScreen=llLockScreen
SET CLASSLIB TO &lcLastSetClassLib
SELECT 0
SET MESSAGE TO
IF lnObjCount=0 AND lnObjTotal=0
	thisform.Release
	RETURN .F.
ENDIF

ENDPROC
PROCEDURE transformlinks
LPARAMETERS tcLinks
LOCAL lcLinks

IF EMPTY(tcLinks)
	RETURN ""
ENDIF
lcLinks=STRTRAN(STRTRAN(STRTRAN(STRTRAN(ALLTRIM(tcLinks),CR_LF,";"), ;
		LF,";"),CR,";"),",",";")
IF LEFT(lcLinks,1)==";"
	lcLinks=ALLTRIM(SUBSTR(lcLinks,2))
ENDIF
IF RIGHT(lcLinks,1)==";"
	lcLinks=ALLTRIM(LEFT(lcLinks,LEN(lcLinks)-1))
ENDIF
RETURN lcLinks

ENDPROC
PROCEDURE inheritproperties
LPARAMETERS toObject,toNewObject

IF EMPTY(toObject.Text) AND NOT EMPTY(toNewObject.Text)
	toObject.Text=toNewObject.Text
ENDIF
IF EMPTY(toObject.Desc) AND NOT EMPTY(toNewObject.Desc)
	toObject.Desc=toNewObject.Desc
ENDIF
IF EMPTY(toObject.ClassName) AND NOT EMPTY(toNewObject.ClassName)
	toObject.ClassName=toNewObject.ClassName
ENDIF
IF EMPTY(toObject.ClassLib) AND NOT EMPTY(toNewObject.ClassLib)
	toObject.ClassLib=toNewObject.ClassLib
ENDIF
IF EMPTY(toObject.Member) AND NOT EMPTY(toNewObject.Member)
	toObject.Member=toNewObject.Member
ENDIF
IF EMPTY(toObject.HelpFile) AND NOT EMPTY(toNewObject.HelpFile)
	toObject.HelpFile=toNewObject.HelpFile
ENDIF
IF EMPTY(toObject.HelpID) AND NOT EMPTY(toNewObject.HelpID)
	toObject.HelpID=toNewObject.HelpID
ENDIF
IF EMPTY(toObject.Top) AND NOT EMPTY(toNewObject.Top)
	toObject.Top=toNewObject.Top
ENDIF
IF EMPTY(toObject.Left) AND NOT EMPTY(toNewObject.Left)
	toObject.Left=toNewObject.Left
ENDIF
IF EMPTY(toObject.Height) AND NOT EMPTY(toNewObject.Height)
	toObject.Height=toNewObject.Height
ENDIF
IF EMPTY(toObject.Width) AND NOT EMPTY(toNewObject.Width)
	toObject.Width=toNewObject.Width
ENDIF
IF EMPTY(toObject.RowSrcType) AND NOT EMPTY(toNewObject.RowSrcType)
	toObject.RowSrcType=toNewObject.RowSrcType
ENDIF
IF EMPTY(toObject.RowSource) AND NOT EMPTY(toNewObject.RowSource)
	toObject.RowSource=toNewObject.RowSource
ENDIF
IF EMPTY(toObject.Style) AND NOT EMPTY(toNewObject.Style)
	toObject.Style=toNewObject.Style
ENDIF
IF EMPTY(toObject.ValidExpr) AND NOT EMPTY(toNewObject.ValidExpr)
	toObject.ValidExpr=toNewObject.ValidExpr
ENDIF
IF EMPTY(toObject.ReadOnly) AND NOT EMPTY(toNewObject.ReadOnly)
	toObject.ReadOnly=toNewObject.ReadOnly
ENDIF
IF EMPTY(toObject.UpdOnChng) AND NOT EMPTY(toNewObject.UpdOnChng)
	toObject.UpdOnChng=toNewObject.UpdOnChng
ENDIF
IF EMPTY(toObject.Comment) AND NOT EMPTY(toNewObject.Comment)
	toObject.Comment=toNewObject.Comment
ENDIF
IF EMPTY(toObject.User) AND NOT EMPTY(toNewObject.User)
	toObject.User=toNewObject.User
ENDIF

ENDPROC
PROCEDURE Destroy
IF USED("Builder")
	USE IN Builder
ENDIF

ENDPROC
PROCEDURE Init
this.cBuilderTable=ALLTRIM(this.cBuilderTable)
IF NOT "\"$this.cBuilderTable
	this.cBuilderTable=thisform.cProgramPath+this.cBuilderTable
ENDIF
this.cBuilderTable=LOWER(ALLTRIM(this.cBuilderTable))
IF NOT "\"$this.cBuilderStructureTable
	this.cBuilderStructureTable=thisform.cProgramPath+this.cBuilderStructureTable
ENDIF
this.cBuilderStructureTable=LOWER(ALLTRIM(this.cBuilderStructureTable))

ENDPROC
PROCEDURE Error
LPARAMETERS nError, cMethod, nLine

RETURN thisform.Error(nError,cMethod,nLine,this)

ENDPROC