2823 lines
88 KiB
Plaintext
2823 lines
88 KiB
Plaintext
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
|
|
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
*< FOXBIN2PRG: Version="1.21" SourceFile="gridextrasselect.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
|
|
*
|
|
*
|
|
DEFINE CLASS but_criterii AS _buton_baza OF "..\..\comun\clase\_appbaza.vcx"
|
|
*< CLASSDATA: Baseclass="commandbutton" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: initform
|
|
*m: loadfiltru
|
|
*m: refrehstatus
|
|
*m: resetstatus
|
|
*m: updatedetails
|
|
*p: cvar_afisata
|
|
*p: filtru_pretty_ro_full
|
|
*p: lcautare
|
|
*p: pornit
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
cpicturedown = d:\roa_trunk\roahotel\clase\gridextras_\find1.bmp
|
|
cpictureup = d:\roa_trunk\roahotel\clase\gridextras_\find1.bmp
|
|
cvar_afisata =
|
|
filtru_pretty_ro_full =
|
|
FontSize = 9
|
|
Height = 28
|
|
lcautare = .T.
|
|
Name = "but_criterii"
|
|
Picture = find1.bmp
|
|
pornit = nu
|
|
RightToLeft = .T.
|
|
ToolTipText = "Cautare (CTRL + Q)"
|
|
*</PropValue>
|
|
|
|
PROCEDURE Click
|
|
*!* This.initform(.T.)
|
|
ENDPROC
|
|
|
|
PROCEDURE initform
|
|
*!* Lparameters tlShowForm
|
|
*!* Local Array lacriterii(1,1)
|
|
*!* Local lnButon
|
|
*!* This.loadcriterii(@lacriterii)
|
|
|
|
*!* If(This.pornit="nu")
|
|
*!* If Not Pemstatus(This.Parent,"oCriterii",5)
|
|
*!* This.Parent.AddProperty("oCriterii")
|
|
*!* Endif
|
|
*!* This.Parent.ocriterii=Null
|
|
*!* This.Parent.ocriterii=Createobject("frm_criterii",@lacriterii)
|
|
*!* This.pornit="da"
|
|
*!* Endif
|
|
|
|
*!* If tlShowForm
|
|
*!* This.Parent.ocriterii.Show(1)
|
|
*!* lnButon = gnButon
|
|
*!* Else
|
|
*!* lnButon = 2
|
|
*!* Endif
|
|
|
|
*!* This.updatedetails(lnButon)
|
|
ENDPROC
|
|
|
|
PROCEDURE loadfiltru
|
|
Lparameters tcFiltru
|
|
This.initform(.F.)
|
|
This.Parent.ocriterii.do_incarca_filtre(tcFiltru)
|
|
This.updatedetails(1)
|
|
ENDPROC
|
|
|
|
PROCEDURE refrehstatus
|
|
#DEFINE crlf CHR(13) + CHR(10)
|
|
|
|
LOCAL lcText
|
|
lcText = ""
|
|
IF PEMSTATUS(THISFORM,"filtru_traducere",5)
|
|
lcText = IIF(NOT EMPTY(THISFORM.filtru_traducere()), THISFORM.filtru_traducere(),"")
|
|
ENDIF
|
|
|
|
IF !EMPTY(ALLTRIM(THISFORM.filtru_pretty_ro))
|
|
lcText = THISFORM.filtru_pretty_ro + IIF(!EMPTY(lcText), " si " + lcText, "")
|
|
ENDIF
|
|
|
|
|
|
THIS.TOOLTIPTEXT = IIF(!EMPTY(lcText), lcText + crlf, "") + "Cautare (CTRL + Q)"
|
|
THISFORM.filtru_pretty_ro_full = lcText
|
|
_SCREEN.STATUSBAR.TAG = lcText
|
|
|
|
IF !EMPTY(lcText)
|
|
_SCREEN.STATUSBAR.ctlIcon="roastartmic.ico"
|
|
IF LEN(lcText) < 126
|
|
_SCREEN.STATUSBAR.ctlMessage = lcText
|
|
ELSE
|
|
_SCREEN.STATUSBAR.ctlMessage=SUBSTR(lcText,1,122) + " ..."
|
|
ENDIF
|
|
ELSE
|
|
_SCREEN.STATUSBAR.ctlMessage=_SCREEN.CAPTION
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE resetstatus
|
|
IF PEMSTATUS(_SCREEN,"Statusbar",5)
|
|
_SCREEN.STATUSBAR.ctlPanels(2).ctlCaption=""
|
|
_SCREEN.STATUSBAR.ctlMessage = _SCREEN.CAPTION
|
|
_SCREEN.STATUSBAR.TAG = ""
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROCEDURE updatedetails
|
|
Lparameters tnButon
|
|
If Not Pemstatus(This.Parent,"filtru_pretty",5)
|
|
This.Parent.AddProperty("filtru_pretty")
|
|
Endif
|
|
If Not Pemstatus(This.Parent,"filtru_pretty_ro",5)
|
|
This.Parent.AddProperty("filtru_pretty_ro")
|
|
Endif
|
|
If Not Pemstatus(This.Parent,"filtru_cript",5)
|
|
This.Parent.AddProperty("filtru_cript")
|
|
Endif
|
|
This.Parent.filtru_pretty = This.Parent.ocriterii.filtru
|
|
This.Parent.filtru_pretty_ro = This.Parent.ocriterii.filtruro
|
|
This.Parent.filtru_cript = This.Parent.ocriterii.filtrucript
|
|
|
|
This.refreshStatus()
|
|
|
|
This.SetFocus
|
|
If Pemstatus(Thisform,"DO_CAUTA",5) And tnButon = 1 And This.lcautare
|
|
Thisform.DO_CAUTA()
|
|
If Reccount()>0
|
|
_Screen.StatusBar.ctlPanels(2).ctlCaption=Transform(Reccount()) + " inregistrari"
|
|
Else
|
|
_Screen.StatusBar.ctlPanels(2).ctlCaption=""
|
|
Endif
|
|
Endif
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS checkform AS timer
|
|
*< CLASSDATA: Baseclass="timer" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<PropValue>
|
|
Height = 23
|
|
Name = "checkform"
|
|
Width = 23
|
|
*</PropValue>
|
|
|
|
PROCEDURE Timer
|
|
IF MROW(ThisForm.Name,3) = -1 OR MCOL(ThisForm.Name,3) = -1
|
|
IF This.Parent._InForm
|
|
This.Parent._InForm = .F.
|
|
This.Parent.tmrFadeForm.Interval = 50
|
|
This.Parent._Fade = 255
|
|
ENDIF
|
|
ELSE
|
|
IF NOT This.Parent._InForm
|
|
This.Parent._InForm = .T.
|
|
This.Parent.tmrFadeForm.Interval = 50
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS ct_paginare AS _container OF "..\..\comun\clase\_baza.vcx"
|
|
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="Buton1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Buton2" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Label1" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*p: nrofpage
|
|
*p: nrpages
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BorderWidth = 0
|
|
Height = 26
|
|
Name = "ct_paginare"
|
|
nrofpage = 1
|
|
nrpages =
|
|
Width = 133
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'Buton1' AS buton WITH ;
|
|
cpicturedown = d:\roa_trunk\roahotel\clase\gridextras_\button fast forward_32.png, ;
|
|
cpictureup = d:\roa_trunk\roahotel\clase\gridextras_\button fast forward_32.png, ;
|
|
ctip = button fast forward_32, ;
|
|
Left = 75, ;
|
|
Name = "Buton1", ;
|
|
Picture = button fast forward_32.png, ;
|
|
ToolTipText = "Pagina urmatoare", ;
|
|
Top = 0
|
|
*< END OBJECT: ClassLib="..\appbaza.vcx" BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Buton2' AS buton WITH ;
|
|
cpicturedown = d:\roa_trunk\roahotel\clase\gridextras_\button last_32.png, ;
|
|
cpictureup = d:\roa_trunk\roahotel\clase\gridextras_\button last_32.png, ;
|
|
ctip = button last_32, ;
|
|
Left = 104, ;
|
|
Name = "Buton2", ;
|
|
Picture = button last_32.png, ;
|
|
ToolTipText = "Ultima pagina", ;
|
|
Top = 0
|
|
*< END OBJECT: ClassLib="..\appbaza.vcx" BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Label1' AS label WITH ;
|
|
BackStyle = 0, ;
|
|
Caption = "Label1", ;
|
|
Height = 17, ;
|
|
Left = 5, ;
|
|
Name = "Label1", ;
|
|
Top = 6, ;
|
|
Width = 67
|
|
*< END OBJECT: BaseClass="label" />
|
|
|
|
PROCEDURE Buton1.Click
|
|
thisform.gridextra1.pagenumber = 0
|
|
this.Parent.nrofpage = this.Parent.nrofpage + 1
|
|
IF this.Parent.nrofpage>this.Parent.nrpages
|
|
this.Parent.nrofpage = this.Parent.nrpages
|
|
else
|
|
thisform.gridextra1.cautacontroller()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROCEDURE Buton2.Click
|
|
thisform.gridextra1.pagenumber = 0
|
|
IF this.Parent.nrofpage <> this.Parent.nrpages
|
|
this.Parent.nrofpage = this.Parent.nrpages
|
|
thisform.gridextra1.cautacontroller()
|
|
ENDIF
|
|
IF this.Parent.nrofpage>this.Parent.nrpages
|
|
this.Parent.nrofpage = this.Parent.nrpages
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS ct_paginarenet AS _container OF "..\..\comun\clase\_baza.vcx"
|
|
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="label1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Buton1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Buton2" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Buton3" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Buton4" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*p: nrofpage
|
|
*p: nrpages
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BorderWidth = 0
|
|
Height = 24
|
|
Name = "ct_paginare"
|
|
nrofpage = 1
|
|
nrpages =
|
|
Visible = .F.
|
|
Width = 189
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'Buton1' AS buton WITH ;
|
|
cpicturedown = d:\roa_trunk\roahotel\clase\gridextras_\button first_32.png, ;
|
|
cpictureup = d:\roa_trunk\roahotel\clase\gridextras_\button first_32.png, ;
|
|
ctip = button first_32, ;
|
|
Left = 0, ;
|
|
Name = "Buton1", ;
|
|
Picture = button first_32.png, ;
|
|
ToolTipText = "Prima pagina", ;
|
|
Top = -1
|
|
*< END OBJECT: ClassLib="..\appbaza.vcx" BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Buton2' AS buton WITH ;
|
|
cpicturedown = d:\roa_trunk\roahotel\clase\gridextras_\button rewind_32.png, ;
|
|
cpictureup = d:\roa_trunk\roahotel\clase\gridextras_\button rewind_32.png, ;
|
|
ctip = button rewind_32, ;
|
|
Left = 29, ;
|
|
Name = "Buton2", ;
|
|
Picture = button rewind_32.png, ;
|
|
ToolTipText = "Pagina anterioara", ;
|
|
Top = -1
|
|
*< END OBJECT: ClassLib="..\appbaza.vcx" BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Buton3' AS buton WITH ;
|
|
cpicturedown = d:\roa_trunk\roahotel\clase\gridextras_\button fast forward_32.png, ;
|
|
cpictureup = d:\roa_trunk\roahotel\clase\gridextras_\button fast forward_32.png, ;
|
|
ctip = button fast forward_32, ;
|
|
Left = 131, ;
|
|
Name = "Buton3", ;
|
|
Picture = button fast forward_32.png, ;
|
|
ToolTipText = "Pagina urmatoare", ;
|
|
Top = -1
|
|
*< END OBJECT: ClassLib="..\appbaza.vcx" BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Buton4' AS buton WITH ;
|
|
cpicturedown = d:\roa_trunk\roahotel\clase\gridextras_\button last_32.png, ;
|
|
cpictureup = d:\roa_trunk\roahotel\clase\gridextras_\button last_32.png, ;
|
|
ctip = button last_32, ;
|
|
Left = 160, ;
|
|
Name = "Buton4", ;
|
|
Picture = button last_32.png, ;
|
|
ToolTipText = "Ultima pagina", ;
|
|
Top = -1
|
|
*< END OBJECT: ClassLib="..\appbaza.vcx" BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'label1' AS _label WITH ;
|
|
Height = 17, ;
|
|
Left = 63, ;
|
|
Name = "label1", ;
|
|
Top = 5, ;
|
|
Width = 40
|
|
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="label" />
|
|
|
|
PROCEDURE Buton1.Click
|
|
this.Parent.nrofpage = 1
|
|
thisform.gridextra1.cautacontroller()
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Buton2.Click
|
|
this.Parent.nrofpage = this.Parent.nrofpage - 1
|
|
IF this.Parent.nrofpage<1
|
|
this.Parent.nrofpage = 1
|
|
ENDIF
|
|
thisform.gridextra1.cautacontroller()
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Buton3.Click
|
|
this.Parent.nrofpage = this.Parent.nrofpage + 1
|
|
IF this.Parent.nrofpage>this.Parent.nrpages
|
|
this.Parent.nrofpage = this.Parent.nrpages
|
|
else
|
|
thisform.gridextra1.cautacontroller()
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Buton4.Click
|
|
this.Parent.nrofpage = this.Parent.nrpages
|
|
thisform.gridextra1.cautacontroller()
|
|
IF this.Parent.nrofpage>this.Parent.nrpages
|
|
this.Parent.nrofpage = this.Parent.nrpages
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS fadeform AS timer
|
|
*< CLASSDATA: Baseclass="timer" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<PropValue>
|
|
Height = 23
|
|
Name = "fadeform"
|
|
Width = 23
|
|
*</PropValue>
|
|
|
|
PROCEDURE Timer
|
|
IF This.Parent._InForm
|
|
This.Parent._Fade = MIN(This.Parent._Fade + 60,255)
|
|
ELSE
|
|
This.Parent._Fade = MAX(This.Parent._Fade - 20,100)
|
|
ENDIF
|
|
|
|
_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, This.Parent._Fade, 2)
|
|
|
|
IF NOT BETWEEN(This.Parent._Fade,101,254)
|
|
This.Interval = 0
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS gridcustomfilter AS container
|
|
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="Combo1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Text1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Text2" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: clearfiltersettings
|
|
*m: controlsourcetype_assign
|
|
*m: filterstring_access
|
|
*m: operatorchanged
|
|
*m: selectall
|
|
*m: setup
|
|
*p: columncontrolsource
|
|
*p: controlsourcetype
|
|
*p: filterstring
|
|
*p: interactivechangecombofiring
|
|
*p: uniquecursorname
|
|
*a: acriteriiuns[1,4]
|
|
*a: acriterii[1,4]
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
BorderWidth = 0
|
|
columncontrolsource =
|
|
controlsourcetype = C
|
|
filterstring =
|
|
Height = 76
|
|
interactivechangecombofiring = .F.
|
|
Name = "gridcustomfilter"
|
|
uniquecursorname =
|
|
Width = 192
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'Combo1' AS combobox WITH ;
|
|
Height = 24, ;
|
|
Left = 1, ;
|
|
Name = "Combo1", ;
|
|
RowSourceType = 1, ;
|
|
Style = 2, ;
|
|
Top = 1, ;
|
|
Width = 190
|
|
*< END OBJECT: BaseClass="combobox" />
|
|
|
|
ADD OBJECT 'Text1' AS textbox WITH ;
|
|
Format = "!K", ;
|
|
Height = 23, ;
|
|
Left = 1, ;
|
|
Name = "Text1", ;
|
|
SelectOnEntry = .T., ;
|
|
Top = 27, ;
|
|
Visible = .F., ;
|
|
Width = 190
|
|
*< END OBJECT: BaseClass="textbox" />
|
|
|
|
ADD OBJECT 'Text2' AS textbox WITH ;
|
|
Format = "!K", ;
|
|
Height = 23, ;
|
|
Left = 1, ;
|
|
Name = "Text2", ;
|
|
SelectOnEntry = .T., ;
|
|
Top = 52, ;
|
|
Visible = .F., ;
|
|
Width = 190
|
|
*< END OBJECT: BaseClass="textbox" />
|
|
|
|
PROCEDURE clearfiltersettings
|
|
this.combo1.ListIndex = 1
|
|
this.controlsourcetype = this.controlsourcetype
|
|
ENDPROC
|
|
|
|
PROCEDURE controlsourcetype_assign
|
|
LPARAMETERS vNewVal
|
|
LOCAL lvDefaultValue
|
|
DO CASE
|
|
*!* MARIUS
|
|
CASE INLIST(m.vNewVal, "C", "M", "V")
|
|
m.lvDefaultValue = ""
|
|
*!* MARIUS ^
|
|
CASE INLIST(m.vNewVal, "N", "Y")
|
|
m.lvDefaultValue = 0.00
|
|
CASE m.vNewVal = "D"
|
|
m.lvDefaultValue = {}
|
|
CASE m.vNewVal = "T"
|
|
m.lvDefaultValue = {/:}
|
|
CASE m.vNewVal = "L"
|
|
m.lvDefaultValue = .T.
|
|
ENDCASE
|
|
this.text1.Value = m.lvDefaultValue
|
|
this.text2.Value = m.lvDefaultValue
|
|
this.text1.refresh()
|
|
this.text2.refresh()
|
|
THIS.ControlSourceType = m.vNewVal
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Destroy
|
|
USE IN Select(This.UniqueCursorName)
|
|
DODEFAULT()
|
|
ENDPROC
|
|
|
|
PROCEDURE filterstring_access
|
|
LOCAL lcFilterString, lnFilterType, lcAtCommand
|
|
m.lcFilterString = ""
|
|
IF thisform.casesensitive
|
|
m.lcAtCommand = "AT("
|
|
ELSE
|
|
m.lcAtCommand = "ATC("
|
|
ENDIF
|
|
|
|
IF !EOF(this.uniquecursorname) AND this.combo1.ListIndex != 1
|
|
m.lnFilterType = EVALUATE(this.uniquecursorname + ".criteria")
|
|
DO case
|
|
CASE m.lnFilterType = 1
|
|
m.lcFilterString = m.lcAtCommand + "[" + ALLTRIM(this.text1.Value) + "], LEFT(" + this.columncontrolsource + "," + TRANSFORM(LEN(ALLTRIM(this.text1.Value))) + ")) > 0"
|
|
CASE m.lnFilterType = 2
|
|
m.lcFilterString = m.lcAtCommand + "[" + ALLTRIM(this.text1.Value) + "], " + this.columncontrolsource + ") > 0"
|
|
CASE m.lnFilterType = 3
|
|
DO case
|
|
CASE INLIST(this.controlsourcetype, "C", "M")
|
|
m.lcFilterString = this.columncontrolsource + "=[" + ALLTRIM(TRANSFORM(this.text1.Value)) + "]"
|
|
CASE INLIST(this.controlsourcetype, "D", "T")
|
|
m.lcFilterString = this.columncontrolsource + "={" + ALLTRIM(TRANSFORM(this.text1.Value)) + "}"
|
|
OTHERWISE
|
|
m.lcFilterString = this.columncontrolsource + "=" + ALLTRIM(TRANSFORM(this.text1.Value))
|
|
ENDCASE
|
|
CASE m.lnFilterType = 4
|
|
IF INLIST(this.controlsourcetype, "D", "T")
|
|
m.lcFilterString = this.columncontrolsource + ">{" + ALLTRIM(TRANSFORM(this.text1.Value)) + "}"
|
|
ELSE
|
|
m.lcFilterString = this.columncontrolsource + ">" + ALLTRIM(TRANSFORM(this.text1.Value))
|
|
ENDIF
|
|
CASE m.lnFilterType = 5
|
|
IF INLIST(this.controlsourcetype, "D", "T")
|
|
m.lcFilterString = this.columncontrolsource + "<{" + ALLTRIM(TRANSFORM(this.text1.Value)) + "}"
|
|
ELSE
|
|
m.lcFilterString = this.columncontrolsource + "<" + ALLTRIM(TRANSFORM(this.text1.Value))
|
|
ENDIF
|
|
CASE m.lnFilterType = 6
|
|
IF INLIST(this.controlsourcetype, "D", "T")
|
|
m.lcFilterString = "Between(" + this.columncontrolsource + ",{" + ALLTRIM(TRANSFORM(this.text1.Value)) + "},{" + ALLTRIM(TRANSFORM(this.text2.Value)) + "})"
|
|
ELSE
|
|
m.lcFilterString = "Between(" + this.columncontrolsource + "," + ALLTRIM(TRANSFORM(this.text1.Value)) + "," + ALLTRIM(TRANSFORM(this.text2.Value)) + ")"
|
|
ENDIF
|
|
ENDCASE
|
|
ENDIF
|
|
|
|
*!* IF INLIST(m.tcFieldType, "C", "M")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Begins with", "CM", "Text1", "", 1)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "C", "M")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Contains", "CM", "Text1", "", 2)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "C", "M", "N", "Y", "L", "D", "T")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Equals", "CMNYLDT", "Text1", "", 3)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Greater than", "NYDT", "Text1", "", 4)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Less than", "NYDT", "Text1", "", 5)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Between", "NYDT", "Text1", "Text2", 6)
|
|
*!* ENDIF
|
|
|
|
RETURN m.lcFilterString
|
|
ENDPROC
|
|
|
|
PROCEDURE operatorchanged
|
|
LOCAL lcControlOne, lcControlTwo
|
|
IF !EOF(this.uniquecursorname) AND this.combo1.ListIndex != 1
|
|
m.lcControlOne = EVALUATE(this.uniquecursorname + ".ctrlone")
|
|
m.lcControlTwo = EVALUATE(this.uniquecursorname + ".ctrlTwo")
|
|
this.text1.Visible = !Empty(m.lcControlOne)
|
|
this.text2.Visible = !Empty(m.lcControlTwo)
|
|
ELSE
|
|
this.text1.Visible = .F.
|
|
this.text2.Visible = .F.
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROCEDURE selectall
|
|
*!* IF !thisform.check1.value ;
|
|
*!* AND this.combo1.listindex > 1
|
|
*!* thisform.check1.value = .T.
|
|
*!* thisform.check1.valid()
|
|
*!* ENDIF
|
|
ENDPROC
|
|
|
|
PROCEDURE setup
|
|
LPARAMETERS tcFieldCaption, tcFieldType, tcColumnControlSource
|
|
**** adaugat de mine 23.04.09
|
|
*!* EXTERNAL ARRAY tacriterii
|
|
*!* DIMENSION this.acriterii(ALEN(tacriterii,1),6)
|
|
*!* DIMENSION this.acriteriiuns(ALEN(tacriterii,1),5)
|
|
*!* ACOPY(tacriterii,this.acriteriiuns)
|
|
*!* FOR x=1 TO ALEN(this.acriterii,1)
|
|
*!* FOR i = 1 TO 5
|
|
*!* this.acriterii(x,i)=tacriterii(x,i)
|
|
*!* ENDFOR
|
|
*!* this.acriterii(x,6)=x
|
|
*!* ENDFOR
|
|
*!* ncontor=0
|
|
*!* ncontorcols=1
|
|
*!* nrlines=Ceiling(ALEN(this.acriterii,1)/7)
|
|
*!* ASORT(this.acriterii)
|
|
|
|
*!* FOR n = 1 TO ALEN(this.acriterii,1)
|
|
*!* ncontor=ncontor+1
|
|
|
|
*!* this.combo1.AddItem(this.acriterii(n,1))
|
|
*!* IF ncontor=nrlines
|
|
*!* ncontor=0
|
|
*!* ncontorcols=ncontorcols+1
|
|
*!* ENDIF
|
|
*!* ENDFOR
|
|
**** adaugat de mine 23.04.09
|
|
|
|
|
|
LOCAL lcUniqueCursorName
|
|
this.columncontrolsource = m.tcColumnControlSource
|
|
m.lcUniqueCursorName = SYS(2015)
|
|
THIS.uniquecursorname = m.lcUniqueCursorName
|
|
CREATE CURSOR (m.lcUniqueCursorName) (usrcaption C(30), datatypes C(30), ctrlone C(30), ctrltwo C(30), criteria I)
|
|
m.tcFieldType = UPPER(m.tcFieldType)
|
|
INSERT INTO (m.lcUniqueCursorName) VALUES ("", "", "", "", 0)
|
|
*!* MARIUS
|
|
*!* IF INLIST(m.tcFieldType, "C", "M")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Begins with", "CM", "Text1", "", 1)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "C", "M")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Contains", "CM", "Text1", "", 2)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "C", "M", "N", "Y", "L", "D", "T")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Equals", "CMNYLDT", "Text1", "", 3)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Greater than", "NYDT", "Text1", "", 4)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Less than", "NYDT", "Text1", "", 5)
|
|
*!* ENDIF
|
|
*!* IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
*!* INSERT INTO (m.lcUniqueCursorName) VALUES ("Between", "NYDT", "Text1", "Text2", 6)
|
|
*!* ENDIF
|
|
IF INLIST(m.tcFieldType, "C", "M", "V")
|
|
INSERT INTO (m.lcUniqueCursorName) VALUES ("Incepe cu", "CMV", "Text1", "", 1)
|
|
ENDIF
|
|
IF INLIST(m.tcFieldType, "C", "M", "V")
|
|
INSERT INTO (m.lcUniqueCursorName) VALUES ("Contine", "CMV", "Text1", "", 2)
|
|
ENDIF
|
|
IF INLIST(m.tcFieldType, "C", "M", "V", "N", "Y", "L", "D", "T")
|
|
INSERT INTO (m.lcUniqueCursorName) VALUES ("Egal cu", "CMVNYLDT", "Text1", "", 3)
|
|
ENDIF
|
|
IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
INSERT INTO (m.lcUniqueCursorName) VALUES ("Mai mare decat", "NYDT", "Text1", "", 4)
|
|
ENDIF
|
|
IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
INSERT INTO (m.lcUniqueCursorName) VALUES ("Mai mic decat", "NYDT", "Text1", "", 5)
|
|
ENDIF
|
|
IF INLIST(m.tcFieldType, "N", "Y", "D", "T")
|
|
INSERT INTO (m.lcUniqueCursorName) VALUES ("Intre", "NYDT", "Text1", "Text2", 6)
|
|
ENDIF
|
|
*!* MARIUS ^
|
|
GO TOP IN (m.lcUniqueCursorName)
|
|
this.controlsourcetype = m.tcFieldType
|
|
this.combo1.RowSourceType = 2
|
|
this.combo1.RowSource = m.lcUniqueCursorName
|
|
*!* this.combo1.ColumnCount = 5
|
|
*!* this.combo1.ColumnWidths = TRANSFORM(this.Width) + ",0,0,0,0"
|
|
this.combo1.ListIndex = 2
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Combo1.InteractiveChange
|
|
LOCAL lnListIndexWas
|
|
IF this.parent.InteractiveChangeComboFiring
|
|
RETURN
|
|
ENDIF
|
|
this.parent.InteractiveChangeComboFiring = .T.
|
|
m.lnListIndexWas = this.listindex
|
|
This.Parent.OperatorChanged()
|
|
this.parent.SelectAll()
|
|
this.listindex = m.lnListIndexWas
|
|
this.refresh()
|
|
this.parent.InteractiveChangeComboFiring = .F.
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Combo1.ProgrammaticChange
|
|
this.InteractiveChange()
|
|
ENDPROC
|
|
|
|
PROCEDURE Text1.InteractiveChange
|
|
this.Parent.SelectAll()
|
|
ENDPROC
|
|
|
|
PROCEDURE Text2.InteractiveChange
|
|
This.Parent.selectall()
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS gridextra AS custom
|
|
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: addjoiner
|
|
*m: applyfilter
|
|
*m: applysort
|
|
*m: ascending_assign
|
|
*m: bindcolumnevents
|
|
*m: bindheaderevents
|
|
*m: cautacontroller
|
|
*m: clearfilter
|
|
*m: clearheadersortimages
|
|
*m: columnmoved
|
|
*m: columnresize
|
|
*m: createcombocursor
|
|
*m: createscreenreference
|
|
*m: exportgrid
|
|
*m: getcolumnobject
|
|
*m: getcombocursorname
|
|
*m: getheaderobject
|
|
*m: getsortexpression
|
|
*m: getuserapplicationdatapath
|
|
*m: getwindowproc
|
|
*m: headerclick
|
|
*m: headerrightclick
|
|
*m: positionform
|
|
*m: restorecolumnfilters
|
|
*m: restorecolumnsort
|
|
*m: restorecustomcolumnfilters
|
|
*m: restoregridpreferences
|
|
*m: saveacolumnfilters
|
|
*m: savecolumnsort
|
|
*m: savecustomcolumnfilters
|
|
*m: savegridpreferences
|
|
*m: search
|
|
*m: setheaderimages
|
|
*m: setup
|
|
*m: templateapply
|
|
*m: templatedelete
|
|
*m: templatelocate
|
|
*m: templatesave
|
|
*p: allowgridexport
|
|
*p: allowgridfilter
|
|
*p: allowgridpreferences
|
|
*p: allowgridsort
|
|
*p: ascending
|
|
*p: casesensitive
|
|
*p: cfiltrufin
|
|
*p: columnobject
|
|
*p: combocursorcollection
|
|
*p: companyname
|
|
*p: currentcolumn
|
|
*p: currentcombocursorname
|
|
*p: delimiter
|
|
*p: globalarrayname
|
|
*p: gridexportobject
|
|
*p: gridexpression
|
|
*p: gridobject
|
|
*p: gridpreferencefile
|
|
*p: headerascendingimage
|
|
*p: headerdescendingimage
|
|
*p: headerfilterimage
|
|
*p: headernosortimage
|
|
*p: indexfile
|
|
*p: indextag
|
|
*p: ocoll
|
|
*p: originalfilter
|
|
*p: pagenumber
|
|
*p: parentfield
|
|
*p: parenttable && Reference to the parent XMLTable object (only one XMLAdapter or ParentTable property can be set).
|
|
*p: productname
|
|
*p: searchandfilterform
|
|
*p: templatetable
|
|
*a: acolumnfilters[1,3]
|
|
*a: colfilter[5,1]
|
|
*a: customcolumnfilters[1,5]
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
allowgridexport = .T.
|
|
allowgridfilter = .T.
|
|
allowgridpreferences = .T.
|
|
allowgridsort = .T.
|
|
ascending = .F.
|
|
casesensitive = .F.
|
|
cfiltrufin =
|
|
columnobject = .NULL.
|
|
combocursorcollection = .NULL.
|
|
companyname = MyCompany
|
|
currentcolumn = .NULL.
|
|
currentcombocursorname =
|
|
delimiter = ||
|
|
globalarrayname =
|
|
gridexportobject = .NULL.
|
|
gridexpression = Thisform.Grid1
|
|
gridobject = .NULL.
|
|
gridpreferencefile = gridprefs.tmp
|
|
headerascendingimage = ascendingsort12.bmp
|
|
headerdescendingimage = descendingsort12.bmp
|
|
headerfilterimage = filter12.bmp
|
|
headernosortimage = nosort12.bmp
|
|
indexfile =
|
|
indextag =
|
|
Name = "gridextra"
|
|
ocoll = null
|
|
originalfilter =
|
|
pagenumber = 0
|
|
parentfield =
|
|
parenttable =
|
|
productname = MyProduct
|
|
searchandfilterform = .NULL.
|
|
templatetable = gridextras.dbf
|
|
*</PropValue>
|
|
|
|
PROCEDURE addjoiner
|
|
LPARAMETERS tcCurrentFilter, tcFilterNewPart
|
|
LOCAL lcReturn, lcCurrentFilterPart
|
|
m.lcReturn = ""
|
|
IF !EMPTY(m.tcFilterNewPart)
|
|
m.tcFilterNewPart = ALLTRIM(m.tcFilterNewPart)
|
|
m.tcCurrentFilter = ALLTRIM(m.tcCurrentFilter)
|
|
m.lcCurrentFilterPart = RIGHT(m.tcCurrentFilter,1)
|
|
IF m.lcCurrentFilterPart != "(" AND m.tcFilterNewPart != ")"
|
|
DO CASE
|
|
CASE m.tcFilterNewPart = "(" AND EMPTY(m.tcCurrentFilter)
|
|
m.lcReturn = m.tcFilterNewPart
|
|
CASE m.tcFilterNewPart = "(" AND !EMPTY(m.tcCurrentFilter)
|
|
m.lcReturn = " AND " + m.tcFilterNewPart
|
|
CASE m.lcCurrentFilterPart = ")"
|
|
m.lcReturn = " AND " + m.tcFilterNewPart
|
|
OTHERWISE
|
|
m.lcReturn = " OR " + m.tcFilterNewPart
|
|
ENDCASE
|
|
ELSE
|
|
m.lcReturn = m.tcFilterNewPart
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN m.lcReturn
|
|
ENDPROC
|
|
|
|
PROCEDURE applyfilter
|
|
PARAMETERS tcFiltru
|
|
this.cfiltrufin = tcFiltru
|
|
this.cautacontroller()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE applysort
|
|
LPARAMETERS tlIsCombobox, toColumnObject, tlTemplateAscending
|
|
LOCAL lcAliasWas, lcSafetyWas, lcSortExpression, ;
|
|
lcControlSource, lcParentField, loColumn, ;
|
|
lnTagNo, llNewColumn, loHeaderObject, ;
|
|
loExc AS EXCEPTION, lnChangedBufferFrom
|
|
|
|
IF PCOUNT() < 3
|
|
m.tlTemplateAscending = .F.
|
|
ENDIF
|
|
WITH THIS
|
|
IF TYPE("m.toColumnObject") = "O"
|
|
m.loColumn = m.toColumnObject
|
|
ELSE
|
|
m.loColumn = This.GetColumnObject()
|
|
ENDIF
|
|
IF TYPE("m.loColumn.PARENT.RECORDSOURCE") != "C"
|
|
RETURN .F.
|
|
ENDIF
|
|
IF !ISNULL(.currentcolumn) AND m.loColumn.NAME = .currentcolumn.NAME AND VARTYPE(m.toColumnObject) != "O"
|
|
m.llNewColumn = .F.
|
|
ELSE
|
|
m.llNewColumn = .T.
|
|
.currentcolumn = m.loColumn
|
|
RELEASE m.loColumn
|
|
m.loColumn = NULL
|
|
ENDIF
|
|
IF TYPE([This.CurrentColumn]) != "O" OR TYPE([This.CurrentColumn.ControlSource]) != "C"
|
|
m.loHeaderObject = .currentcolumn.CONTROLS(1)
|
|
THIS.ClearHeaderSortImages()
|
|
m.loHeaderObject.PICTURE = THIS.HeaderNoSortImage &&"navigate_no.png"
|
|
.currentcolumn = NULL
|
|
IF !EMPTY(m.lcAliasWas) AND ALIAS() != m.lcAliasWas
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
RETURN .F.
|
|
ENDIF
|
|
.currentcolumn.SETFOCUS()
|
|
m.lcControlSource = EVALUATE([This.CurrentColumn.ControlSource]) && EVALUATE([.CurrentColumn.] + .currentcolumn.CURRENTCONTROL + [.ControlSource])
|
|
m.lcParentField = JUSTEXT(m.lcControlSource) && IIF(AT("(",m.lcControlSource) = 0, JUSTEXT(m.lcControlSource), "")
|
|
m.lcAliasWas = ALIAS()
|
|
IF m.tlIsCombobox OR EMPTY(FIELD(m.lcParentField,.currentcolumn.PARENT.RECORDSOURCE))&& EMPTY(m.lcParentField) OR LOWER(ALLTRIM(.currentcolumn.PARENT.RECORDSOURCE)) != LOWER(ALLTRIM(JUSTSTEM(m.lcControlSource)))
|
|
m.lcParentField = m.lcControlSource
|
|
.PARENTTABLE = .currentcolumn.PARENT.RECORDSOURCE
|
|
SELECT (.PARENTTABLE)
|
|
m.lnTagNo = 0
|
|
ELSE
|
|
.PARENTTABLE = JUSTSTEM(m.lcControlSource)
|
|
SELECT (.PARENTTABLE)
|
|
m.lnTagNo = TAGNO(m.lcParentField)
|
|
ENDIF
|
|
IF !m.llNewColumn OR m.lnTagNo > 0 &&OR ORDER(.PARENTTABLE) == UPPER(m.lcParentField) OR (!EMPTY(.INDEXFILE) AND ORDER(.PARENTTABLE) == UPPER(JUSTSTEM(.INDEXFILE)))
|
|
IF !m.llNewColumn
|
|
.ASCENDING = !.ASCENDING
|
|
ELSE
|
|
.ASCENDING = m.tlTemplateAscending && set to .F. so field is indexed in Ascending Order
|
|
ENDIF
|
|
IF m.lnTagNo = 0 && we're dealing with an idx
|
|
m.lcParentField = JUSTSTEM(.INDEXFILE)
|
|
ENDIF
|
|
IF .ASCENDING
|
|
SET ORDER TO (m.lcParentField) IN (.PARENTTABLE) DESCENDING
|
|
ELSE
|
|
SET ORDER TO (m.lcParentField) IN (.PARENTTABLE) ASCENDING
|
|
ENDIF
|
|
ELSE
|
|
.ASCENDING = m.tlTemplateAscending && set to .F. so field is indexed in Ascending Order
|
|
m.lcSortExpression = THIS.GetSortExpression(m.lcParentField, m.tlIsCombobox)
|
|
IF !EMPTY(m.lcSortExpression)
|
|
m.lcSafetyWas = SET("Safety")
|
|
SET SAFETY OFF && If idx already exists, overwrite it silently
|
|
TRY
|
|
m.lnChangedBufferFrom = CURSORGETPROP("Buffering", .PARENTTABLE)
|
|
IF BETWEEN(m.lnChangedBufferFrom, 4, 5)
|
|
IF GETNEXTMODIFIED(0, .PARENTTABLE, .T.) = 0
|
|
CURSORSETPROP("Buffering", 3, .PARENTTABLE) && Must set tables and views to optimistic row buffering in order to create a temp index
|
|
ELSE
|
|
MESSAGEBOX("The system was unable to sort the selected column due to unsaved changes." + CHR(13) ;
|
|
+ "Save your changes and try again.", 64, "Unsaved Changes Detected - Save Required")
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
INDEX ON &lcSortExpression TO (.INDEXFILE)
|
|
IF .ASCENDING
|
|
SET ORDER TO (ORDER(.PARENTTABLE)) DESCENDING
|
|
ELSE
|
|
SET ORDER TO (ORDER(.PARENTTABLE)) ASCENDING
|
|
ENDIF
|
|
CATCH TO m.loExc
|
|
*!* MESSAGEBOX(TRANSFORM(m.loExc.lineno) + " " + m.loExc.Message)
|
|
m.loHeaderObject = .currentcolumn.CONTROLS(1)
|
|
m.loHeaderObject.PICTURE = THIS.HeaderNoSortImage && "navigate_no.png"
|
|
.currentcolumn = NULL
|
|
FINALLY
|
|
IF USED(.PARENTTABLE)
|
|
IF BETWEEN(m.lnChangedBufferFrom, 4, 5) AND !BETWEEN(CURSORGETPROP("Buffering", .PARENTTABLE),4,5)
|
|
CURSORSETPROP("Buffering", m.lnChangedBufferFrom, .PARENTTABLE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDTRY
|
|
SET SAFETY &lcSafetyWas && set it back the way we found it
|
|
ENDIF
|
|
ENDIF
|
|
IF !ISNULL(.currentcolumn)
|
|
GO BOTTOM IN (.PARENTTABLE)
|
|
GO TOP IN (.PARENTTABLE)
|
|
.GridObject.REFRESH()
|
|
.currentcolumn.SETFOCUS()
|
|
ENDIF
|
|
.GridObject.REFRESH()
|
|
ENDWITH
|
|
IF !EMPTY(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE ascending_assign
|
|
LPARAMETERS vNewVal
|
|
DIMENSION aryShapePoints(3,2)
|
|
|
|
IF PCOUNT() = 0 OR TYPE("m.vNewVal") != "L"
|
|
m.vNewVal = this.ascending
|
|
ENDIF
|
|
|
|
This.ClearHeaderSortImages()
|
|
|
|
m.loHeaderObject = THIS.GetHeaderObject()
|
|
IF !ISNULL(m.loHeaderObject)
|
|
IF m.vNewVal && Descending
|
|
m.loHeaderObject.picture = This.HeaderDescendingImage && "navigate_open.png"
|
|
ELSE && Ascending
|
|
m.loHeaderObject.picture = This.HeaderAscendingImage && "navigate_close.png"
|
|
ENDIF
|
|
ENDIF
|
|
THIS.ASCENDING = m.vNewVal
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE bindcolumnevents
|
|
LPARAMETERS toColumnObject
|
|
BINDEVENT(m.toColumnObject,"Moved",This,"ColumnMoved")
|
|
BINDEVENT(m.toColumnObject,"Resize",This,"ColumnResize")
|
|
ENDPROC
|
|
|
|
PROCEDURE bindheaderevents
|
|
LPARAMETERS toHeaderObject
|
|
BINDEVENT(m.toHeaderObject,"Click",This,"HeaderClick")
|
|
BINDEVENT(m.toHeaderObject,"RightClick",This,"HeaderRightClick")
|
|
ENDPROC
|
|
|
|
PROCEDURE cautacontroller
|
|
ENDPROC
|
|
|
|
PROCEDURE clearfilter
|
|
LOCAL lcFilter
|
|
m.lcFilter = This.originalfilter
|
|
IF USED(this.gridobject.recordsource)
|
|
SET FILTER TO &lcFilter IN (this.gridobject.recordsource)
|
|
GO TOP IN (this.gridobject.recordsource)
|
|
ENDIF
|
|
this.gridobject.refresh()
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE clearheadersortimages
|
|
LOCAL loHeaderObject, lnCounter, loColumn, lcHeaderImage
|
|
IF TYPE("THIS.currentcolumn") = "O"
|
|
FOR m.lnCounter = 1 TO THIS.currentcolumn.parent.columncount
|
|
m.loColumn = THIS.currentcolumn.parent.columns(m.lnCounter)
|
|
m.loHeaderObject = m.loColumn.controls(1)
|
|
m.lcHeaderImage = UPPER(JUSTFNAME(m.loHeaderObject.picture))
|
|
IF !EMPTY(m.lcHeaderImage) AND INLIST(m.lcHeaderImage, UPPER(this.HeaderAscendingImage), UPPER(This.HeaderDescendingImage), UPPER(This.HeaderNoSortImage))
|
|
m.loHeaderObject.picture = ""
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE columnmoved
|
|
This.savegridpreferences(this.GridObject)
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE columnresize
|
|
This.savegridpreferences(this.GridObject)
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE createcombocursor
|
|
LPARAMETERS tcTempCursorName, toComboBox
|
|
|
|
LOCAL lnCounter, lcControlSourceType, lcAliasWas
|
|
m.lcAliasWas = ALIAS()
|
|
CREATE CURSOR (m.tcTempCursorName) (disptext V(99), fkid V(99))
|
|
FOR m.lnCounter = 1 TO m.toComboBox.listcount
|
|
IF this.casesensitive
|
|
INSERT INTO (m.tcTempCursorName) ;
|
|
VALUES (m.toComboBox.list(m.lnCounter,1), m.toComboBox.list(m.lnCounter, m.toComboBox.boundcolumn))
|
|
ELSE
|
|
INSERT INTO (m.tcTempCursorName) ;
|
|
VALUES (UPPER(m.toComboBox.list(m.lnCounter,1)), m.toComboBox.list(m.lnCounter, m.toComboBox.boundcolumn))
|
|
ENDIF
|
|
ENDFOR
|
|
m.lcControlSourceType = TYPE(m.toComboBox.controlsource)
|
|
IF !INLIST(m.lcControlSourceType, "C", "M")
|
|
IF m.lcControlSourceType = "N"
|
|
m.lcControlSourceType = m.lcControlSourceType + "(16,4)"
|
|
ENDIF
|
|
ALTER table (m.tcTempCursorName) ALTER COLUMN fkid &lcControlSourceType
|
|
ENDIF
|
|
SELECT(m.tcTempCursorName)
|
|
INDEX on fkid TAG fkid
|
|
|
|
IF m.lcAliasWas != ALIAS() AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE createscreenreference
|
|
IF TYPE("_GEScr") = "U"
|
|
PUBLIC _GEScr
|
|
ENDIF
|
|
IF VARTYPE(_GEScr) != "O"
|
|
_GEScr = _Screen
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Destroy
|
|
Local lcAliasWas, lcCursorName
|
|
Try
|
|
Unbindevents(This)
|
|
If Vartype(This.gridobject)="O"
|
|
Unbindevents(This.gridobject)
|
|
Endif
|
|
Removeproperty(_Screen, This.GlobalArrayName)
|
|
Use In Select(This.GlobalArrayName)
|
|
Unbindevents(0)
|
|
If File(This.IndexFile)
|
|
m.lcAliasWas = Alias()
|
|
Select (This.ParentTable)
|
|
Set Index To
|
|
If !Empty(m.lcAliasWas)
|
|
Select (m.lcAliasWas)
|
|
Endif
|
|
Erase (This.IndexFile)
|
|
If Used(m.lcAliasWas)
|
|
Select (m.lcAliasWas)
|
|
Endif
|
|
Endif
|
|
If Vartype(This.combocursorcollection) = "O"
|
|
For Each m.lcCursorName In This.combocursorcollection
|
|
If Vartype(m.lcCursorName) = "C" And Used(m.lcCursorName)
|
|
Use In Select(m.lcCursorName)
|
|
Endif
|
|
Next
|
|
Endif
|
|
Store Null To This.gridobject, This.currentcolumn, This.columnobject, This.GridExportObject, This.combocursorcollection
|
|
Catch
|
|
Endtry
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE exportgrid
|
|
ENDPROC
|
|
|
|
PROCEDURE getcolumnobject
|
|
LOCAL ARRAY laObject(1,4)
|
|
LOCAL loObject, lcBaseClass
|
|
*!* =AMOUSEOBJ(m.laObject)
|
|
*!* m.loObject = m.laObject(1,1)
|
|
AEVENTS(m.laObject,0)
|
|
m.loObject = m.laObject[1]
|
|
IF varTYPE(m.loObject) = 'O'
|
|
m.lcBaseClass = UPPER(m.loObject.baseclass)
|
|
DO case
|
|
CASE m.lcBaseClass = "COLUMN"
|
|
*!* Do nothing as m.loObject is the column
|
|
CASE m.lcBaseClass = "HEADER"
|
|
m.loObject = m.loObject.Parent
|
|
OTHERWISE
|
|
m.loObject = NULL
|
|
ENDCASE
|
|
ELSE
|
|
m.loObject = NULL
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*!* IF TYPE("m.loObject.baseclass") = "C"
|
|
*!* m.lcBaseClass = UPPER(m.loObject.baseclass)
|
|
*!* DO case
|
|
*!* CASE m.lcBaseClass = "COLUMN"
|
|
*!* *!* Do nothing as m.loObject is the column
|
|
*!* CASE m.lcBaseClass = "HEADER"
|
|
*!* m.loObject = m.loObject.Parent
|
|
*!* OTHERWISE
|
|
*!* m.loObject = NULL
|
|
*!* ENDCASE
|
|
*!* ELSE
|
|
*!* m.loObject = NULL
|
|
*!* ENDIF
|
|
This.columnobject = m.loObject
|
|
RETURN m.loObject
|
|
ENDPROC
|
|
|
|
PROCEDURE getcombocursorname
|
|
LPARAMETERS toComboBox
|
|
LOCAL lnKeyIndex, lcTempCursorName
|
|
IF VARTYPE(this.combocursorcollection) != "O"
|
|
This.combocursorcollection = CREATEOBJECT("collection")
|
|
ENDIF
|
|
m.lcTempCursorName = ""
|
|
m.lnKeyIndex = This.combocursorcollection.getkey(m.toComboBox.parent.name)
|
|
IF m.lnKeyIndex = 0
|
|
m.lcTempCursorName = SYS(2015)
|
|
This.combocursorcollection.add(m.lcTempCursorName, m.toComboBox.parent.name)
|
|
ELSE
|
|
m.lcTempCursorName = This.combocursorcollection.Item(m.lnKeyIndex)
|
|
ENDIF
|
|
IF !USED(m.lcTempCursorName) AND !EMPTY(m.lcTempCursorName)
|
|
this.createcombocursor(m.lcTempCursorName, m.toComboBox)
|
|
ENDIF
|
|
This.currentcombocursorname = m.lcTempCursorName
|
|
RETURN m.lcTempCursorName
|
|
ENDPROC
|
|
|
|
PROCEDURE getheaderobject
|
|
LOCAL loObject
|
|
m.loObject = this.GetColumnObject()
|
|
IF !ISNULL(m.loObject) AND TYPE("m.loObject.baseclass") = "C" AND UPPER(m.loObject.baseclass) = "COLUMN"
|
|
m.loObject = m.loObject.Controls(1) && Get header control
|
|
ENDIF
|
|
RETURN m.loObject
|
|
ENDPROC
|
|
|
|
PROCEDURE getsortexpression
|
|
LPARAMETERS tcFieldName, tlIsCombobox
|
|
LOCAL lcType, lcSortExpression
|
|
m.lcType = TYPE(m.tcFieldName)
|
|
IF PCOUNT() < 2
|
|
m.tlIsCombobox = .F.
|
|
ENDIF
|
|
IF m.tlIsCombobox
|
|
m.lcSortExpression = this.currentcombocursorname + [.disptext FOR SEEK(&tcFieldName, "] + this.currentcombocursorname + [","fkid")]
|
|
ELSE
|
|
DO CASE
|
|
CASE m.lcType $ "CM"
|
|
m.lcSortExpression = [UPPER(LEFT(NVL(] + m.tcFieldName + [,""), 99))]
|
|
CASE lcType = "N"
|
|
m.lcSortExpression = [NVL(] + m.tcFieldName + [, 0)]
|
|
CASE m.lcType $ "D"
|
|
m.lcSortExpression = [NVL(] + m.tcFieldName + [, {})]
|
|
CASE m.lcType $ "T"
|
|
m.lcSortExpression = [NVL(] + m.tcFieldName + [, {/:})]
|
|
CASE m.lcType == "L"
|
|
m.lcSortExpression = [NVL(] + m.tcFieldName + [, .F.)]
|
|
CASE m.lcType == "Y"
|
|
m.lcSortExpression = [NVL(] + m.tcFieldName + [, $0.00)]
|
|
OTHERWISE
|
|
m.lcSortExpression = ""
|
|
ENDCASE
|
|
ENDIF
|
|
|
|
RETURN m.lcSortExpression
|
|
ENDPROC
|
|
|
|
PROCEDURE getuserapplicationdatapath
|
|
#Define CSIDL_APPDATA 0x001a
|
|
|
|
Local m.lcSpecialFolderPath, m.lcApplicationDataPath
|
|
m.lcSpecialFolderPath = Space(255)
|
|
|
|
Declare SHGetSpecialFolderPath In SHELL32.Dll ;
|
|
LONG hwndOwner, ;
|
|
STRING @cSpecialFolderPath, ;
|
|
LONG nWhichFolder
|
|
|
|
SHGetSpecialFolderPath(0, @m.lcSpecialFolderPath, CSIDL_APPDATA)
|
|
m.lcApplicationDataPath = Alltrim(m.lcSpecialFolderPath)
|
|
m.lcApplicationDataPath = Substr(m.lcApplicationDataPath,1, Len(m.lcApplicationDataPath)-1)
|
|
m.lcApplicationDataPath = Addbs(m.lcApplicationDataPath) + This.CompanyName
|
|
If !Directory(m.lcApplicationDataPath)
|
|
Mkdir (m.lcApplicationDataPath)
|
|
Endif
|
|
m.lcApplicationDataPath = Addbs(m.lcApplicationDataPath) + This.ProductName
|
|
If !Directory(m.lcApplicationDataPath)
|
|
Mkdir (m.lcApplicationDataPath)
|
|
Endif
|
|
Return Addbs(m.lcApplicationDataPath)
|
|
ENDPROC
|
|
|
|
PROCEDURE getwindowproc
|
|
LPARAMETERS tnHWND
|
|
#DEFINE GWL_WNDPROC -4
|
|
LOCAL lnReturn
|
|
DECLARE INTEGER GetWindowLong IN Win32API ;
|
|
INTEGER HWND, INTEGER nIndex
|
|
m.lnReturn = GetWindowLong(m.tnHWND, GWL_WNDPROC)
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE headerclick
|
|
|
|
LOCAL loObject, lnLeft, lnTop, loActiveControlInColumn, lcColumnCursorName, llIsCombobox
|
|
this.currentcombocursorname = ""
|
|
m.llIsCombobox = .F.
|
|
IF this.allowgridsort
|
|
m.loObject = This.GetHeaderObject()
|
|
IF !ISNULL(m.loObject)
|
|
m.loActiveControlInColumn = EVALUATE("m.loObject.parent." + m.loObject.parent.currentcontrol)
|
|
IF LOWER(ALLTRIM(m.loActiveControlInColumn.Baseclass)) = "combobox"
|
|
m.lcColumnCursorName = this.getcombocursorname(m.loActiveControlInColumn)
|
|
m.llIsCombobox = .T.
|
|
ENDIF
|
|
this.applysort(m.llIsCombobox)
|
|
this.setheaderimages(this.ocoll)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE headerrightclick
|
|
LOCAL loObject, lnLeft, lnTop
|
|
this.currentcombocursorname = ""
|
|
IF this.Allowgridfilter
|
|
m.loObject = This.GetHeaderObject()
|
|
IF !ISNULL(m.loObject)
|
|
This.searchandfilterform = CREATEOBJECT("gridextraform", m.loObject.parent, this,this.ocoll,@tacriterii)
|
|
IF TYPE("This.searchandfilterform.Caption") = "C"
|
|
this.positionform(This.searchandfilterform, m.loObject)
|
|
This.searchandfilterform.Show()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
This.GlobalArrayName = SYS(2015)
|
|
ADDPROPERTY(_screen, this.GlobalArrayName+"[1,1]",.F.)
|
|
THIS.indexfile = ADDBS(SYS(2023)) + This.GlobalArrayName + ".IDX"
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE positionform
|
|
LPARAMETERS toSearchAndFilterForm, toHeader
|
|
LOCAL lnTop
|
|
IF TYPE("m.toSearchAndFilterForm.name") = "C" AND TYPE("m.toHeader.caption") = "C"
|
|
WITH m.toSearchAndFilterForm
|
|
m.lnTop = OBJTOCLIENT(m.toHeader, 1 ) + IIF(THISFORM.TITLEBAR=1,SYSMETRIC(9),0) + m.toHeader.PARENT.PARENT.HEADERHEIGHT + ;
|
|
IIF(THISFORM.BORDERSTYLE = 3, SYSMETRIC(4), SYSMETRIC(13)) + ;
|
|
IIF(THISFORM.SHOWWINDOW = 2, THISFORM.TOP, OBJTOCLIENT(THISFORM, 1 )) + 1 && thanks to Vassilis Aggelakos for the Titlebar=1 fix/idea
|
|
.LEFT = OBJTOCLIENT(m.toHeader, 2) + IIF(THISFORM.BORDERSTYLE = 3, SYSMETRIC(3), ;
|
|
SYSMETRIC(12)) + IIF(THISFORM.SHOWWINDOW = 2, THISFORM.LEFT, OBJTOCLIENT( THISFORM, 2 )) - 1
|
|
IF ((m.lnTop + .HEIGHT) > SYSMETRIC(2))
|
|
m.lnTop = m.lnTop - .HEIGHT - m.toHeader.PARENT.PARENT.HEADERHEIGHT - (2 * SYSMETRIC(13)) + 4
|
|
ENDIF
|
|
.TOP = m.lnTop - 2
|
|
ENDWITH
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE restorecolumnfilters
|
|
LPARAMETERS tnTemplatePkID
|
|
LOCAL lcAliasWas, lnCounter, lcGlobalArrayNameWas, lcGlobalArrayNameIs, lcGlobalArray
|
|
LOCAL ARRAY _GEAColumn(1)
|
|
LOCAL ARRAY _GEAGlobal(1)
|
|
m.lcAliasWas = ALIAS()
|
|
m.lcGlobalArray = [_GEScr.] + this.GlobalArrayName
|
|
IF This.TemplateLocate(m.tnTemplatePkID)
|
|
RESTORE From Memo FilterCol ADDITIVE
|
|
RESTORE From Memo FilterGlob ADDITIVE
|
|
m.lcGlobalArrayNameWas = ALLTRIM(globala)
|
|
m.lcGlobalArrayNameIs = this.globalarrayname
|
|
FOR m.lnCounter = 1 TO ALEN(_GEAColumn, 1)
|
|
IF TYPE("_GEAColumn(m.lnCounter, 1)") = "C"
|
|
_GEAColumn(m.lnCounter, 1) = STRTRAN(_GEAColumn(m.lnCounter, 1), m.lcGlobalArrayNameWas, m.lcGlobalArrayNameIs, -1, -1, 1)
|
|
ENDIF
|
|
ENDFOR
|
|
this.clearfilter()
|
|
IF (ALEN(_GEAGlobal,1) > 0 AND ALEN(_GEAGlobal,2) > 0)
|
|
DIMENSION &lcGlobalArray(ALEN(_GEAGlobal,1), ALEN(_GEAGlobal,2))
|
|
=ACOPY(_GEAGlobal, &lcGlobalArray)
|
|
IF (ALEN(_GEAColumn,1) > 0 AND ALEN(_GEAColumn,2) > 0)
|
|
*DIMENSION this.acolumnfilters(ALEN(_GEAColumn,1), ALEN(_GEAColumn,2))
|
|
*=ACOPY(_GEAColumn, this.acolumnfilters)
|
|
DIMENSION this.colFilter(ALEN(_GEAColumn,1), ALEN(_GEAColumn,2))
|
|
=ACOPY(_GEAColumn, this.colFilter)
|
|
ENDIF
|
|
ELSE
|
|
*DIMENSION this.acolumnfilters(1, 3)
|
|
*STORE .F. TO this.acolumnfilters
|
|
DIMENSION this.colFilter(3, 1)
|
|
STORE .F. TO this.colFilter
|
|
ENDIF
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE restorecolumnsort
|
|
LPARAMETERS tnTemplatePkID, tlSortAscending
|
|
LOCAL lcAliasWas, loColumnObject
|
|
m.lcAliasWas = ALIAS()
|
|
IF This.TemplateLocate(m.tnTemplatePkID) AND !EMPTY(colname)
|
|
This.currentcolumn = EVALUATE("this.GridObject." + ALLTRIM(colname))
|
|
m.tlSortAscending = sortasc
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE restorecustomcolumnfilters
|
|
LPARAMETERS tnTemplatePkID
|
|
LOCAL lcAliasWas
|
|
LOCAL ARRAY _GEACustom(1)
|
|
m.lcAliasWas = ALIAS()
|
|
IF This.TemplateLocate(m.tnTemplatePkID)
|
|
RESTORE From Memo FilterCusT ADDITIVE
|
|
IF (ALEN(_GEACustom,1) > 0 AND ALEN(_GEACustom,2) > 0)
|
|
*DIMENSION this.customcolumnfilters(ALEN(_GEACustom,1),ALEN(_GEACustom,2))
|
|
*=ACOPY(_GEACustom, this.customcolumnfilters)
|
|
DIMENSION this.colFilter(ALEN(_GEACustom,1),ALEN(_GEACustom,2))
|
|
=ACOPY(_GEACustom, this.colFilter)
|
|
ENDIF
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE restoregridpreferences
|
|
LPARAMETERS toGridObject
|
|
Local lcGridHierarchy, lcString, lcPrefs, lcPrefFileContents, lcBeginPrefs, lcEndPrefs, lcPrefFile, ;
|
|
loColumn, lnCounter, lnMax, loExc as Exception
|
|
IF this.allowgridpreferences
|
|
m.lcPrefFile = This.GetUserApplicationDataPath() + This.GridPreferenceFile
|
|
m.lcPrefFileContents = ""
|
|
If File(m.lcPrefFile)
|
|
Try
|
|
m.lcPrefFileContents = Filetostr(m.lcPrefFile)
|
|
m.lcGridHierarchy = Sys(1272, m.toGridObject)
|
|
m.lcBeginPrefs = m.lcGridHierarchy + "("
|
|
m.lcEndPrefs = ")"
|
|
m.lcPrefs = Strextract(m.lcPrefFileContents,m.lcBeginPrefs,m.lcEndPrefs,1,1)
|
|
If !Empty(m.lcPrefs)
|
|
=Alines(laPrefs, m.lcPrefs, 7, ",")
|
|
m.lnMax = Min(m.toGridObject.ColumnCount * 2, Alen(laPrefs))
|
|
For m.lnCounter = 1 To m.lnMax Step 2
|
|
m.loColumn = m.toGridObject.Columns((m.lnCounter + 1)/2)
|
|
If Type("m.loColumn.columnorder") = "N"
|
|
m.loColumn.ColumnOrder = Val(laPrefs(m.lnCounter))
|
|
m.loColumn.Width = Val(laPrefs(m.lnCounter + 1))
|
|
Endif
|
|
Endfor
|
|
Endif
|
|
CATCH TO m.loExc
|
|
Endtry
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROCEDURE saveacolumnfilters
|
|
LPARAMETERS tnTemplatePkID
|
|
LOCAL lcAliasWas, lcGlobalArray
|
|
LOCAL ARRAY _GEAColumn(1)
|
|
LOCAL ARRAY _GEAGlobal(1)
|
|
m.lcAliasWas = ALIAS()
|
|
m.lcGlobalArray = [_GEScr.] + this.GlobalArrayName
|
|
IF This.TemplateLocate(m.tnTemplatePkID)
|
|
=ACOPY(this.colFilter, _GEAColumn)
|
|
*=ACOPY(this.acolumnfilters, _GEAColumn)
|
|
SAVE to Memo FilterCol ALL LIKE _GEAColumn
|
|
=ACOPY(&lcGlobalArray, _GEAGlobal)
|
|
SAVE to Memo FilterGlob ALL LIKE _GEAGlobal
|
|
replace globala WITH this.globalarrayname
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE savecolumnsort
|
|
LPARAMETERS tnTemplatePkID
|
|
LOCAL lcAliasWas
|
|
m.lcAliasWas = ALIAS()
|
|
IF TYPE("this.currentcolumn.name") = "C" AND This.TemplateLocate(m.tnTemplatePkID)
|
|
replace colname WITH this.currentcolumn.name, sortasc WITH this.ascending
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE savecustomcolumnfilters
|
|
LPARAMETERS tnTemplatePkID
|
|
LOCAL lcAliasWas
|
|
LOCAL ARRAY _GEACustom(1)
|
|
m.lcAliasWas = ALIAS()
|
|
IF This.TemplateLocate(m.tnTemplatePkID)
|
|
=ACOPY(this.colFilter, _GEACustom)
|
|
*=ACOPY(this.customcolumnfilters, _GEACustom)
|
|
SAVE to Memo FilterCust ALL LIKE _GEACustom
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE savegridpreferences
|
|
LPARAMETERS toGridObject
|
|
Local lcGridHierarchy, lcString, lcPrefs, lcPrefFileContents, ;
|
|
lcBeginPrefs, lcEndPrefs, lcPrefFile, loColumn, lnCounter, loExc as Exception
|
|
IF this.allowgridpreferences
|
|
m.lcGridHierarchy = Sys(1272, m.toGridObject)
|
|
m.lcBeginPrefs = m.lcGridHierarchy + "("
|
|
m.lcEndPrefs = ")"
|
|
m.lcPrefFile = This.GetUserApplicationDataPath() + This.GridPreferenceFile
|
|
m.lcPrefFileContents = ""
|
|
If File(m.lcPrefFile)
|
|
m.lcPrefFileContents = Filetostr(m.lcPrefFile)
|
|
Endif
|
|
m.lcPrefs = Strextract(m.lcPrefFileContents,m.lcBeginPrefs,m.lcEndPrefs,1,5)
|
|
m.lcString = ""
|
|
Try
|
|
For m.lnCounter = 1 To m.toGridObject.ColumnCount
|
|
m.loColumn = m.toGridObject.Columns(m.lnCounter)
|
|
m.lcString = m.lcString + Transform(m.loColumn.ColumnOrder) + ","
|
|
m.lcString = m.lcString + Transform(m.loColumn.Width) + ","
|
|
Endfor
|
|
CATCH TO m.loExc
|
|
ENDTRY
|
|
If !Empty(m.lcString)
|
|
m.lcString = m.lcBeginPrefs + m.lcString + m.lcEndPrefs
|
|
If Empty(m.lcPrefs) Or m.lcString != m.lcPrefs
|
|
If Empty(m.lcPrefs)
|
|
m.lcPrefFileContents = m.lcPrefFileContents + m.lcString + Chr(13) + Chr(10)
|
|
Else
|
|
m.lcPrefFileContents = Strtran(m.lcPrefFileContents, m.lcPrefs, m.lcString, 1, 1, 1)
|
|
Endif
|
|
Set Safety Off
|
|
=Strtofile(m.lcPrefFileContents, m.lcPrefFile, 0)
|
|
Endif
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROCEDURE search
|
|
LPARAMETERS tcSearchPhrase, tlFindNext, lcSearchCommand
|
|
LOCAL lcRecordSource, lcAliasWas, lcControlSource, lcSearchValue, llLockScreenWas, loActiveControlInColumn, lcCurrentComboCursorName
|
|
LOCAL ARRAY aTemp(1)
|
|
aTemp(1) = Null
|
|
m.lcRecordSource = This.gridobject.recordsource
|
|
If Used(m.lcRecordSource) AND TYPE("This.ColumnObject.Name") = "C"
|
|
m.lcAliasWas = Alias()
|
|
m.lcControlSource = This.ColumnObject.ControlSource
|
|
m.loActiveControlInColumn = EVALUATE("This.ColumnObject." + This.ColumnObject.CurrentControl)
|
|
IF LOWER(m.loActiveControlInColumn.BaseClass) = "combobox" and m.loActiveControlInColumn.BoundColumn != 1
|
|
If This.casesensitive
|
|
m.lcSearchCommand = [At(] && m.lcSearchValue, Transform(&lcControlSource)) > 0]
|
|
ELSE
|
|
m.lcSearchCommand = [Atc(]
|
|
ENDIF
|
|
m.lcSearchCommand = m.lcSearchCommand + [Alltrim(Transform(m.tcSearchPhrase)), disptext)>0]
|
|
m.lcCurrentComboCursorName = this.currentcombocursorname
|
|
SELECT fkid FROM (m.lcCurrentComboCursorName) WHERE &lcSearchCommand INTO ARRAY aTemp
|
|
IF ISNULL(aTemp(1)) OR _tally < 1
|
|
m.lcSearchCommand = [.F.]
|
|
ELSE
|
|
IF _tally > 1
|
|
m.lcSearchCommand = [Ascan(aTemp, &lcControlSource)>0]
|
|
ELSE
|
|
m.lcSearchCommand = [&lcControlSource = aTemp(1)]
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
m.lcSearchValue = Alltrim(Transform(m.tcSearchPhrase))
|
|
If This.casesensitive
|
|
m.lcSearchCommand = [At(] && m.lcSearchValue, Transform(&lcControlSource)) > 0]
|
|
ELSE
|
|
m.lcSearchCommand = [Atc(]
|
|
ENDIF
|
|
m.lcSearchCommand = m.lcSearchCommand + [m.lcSearchValue,Transform(&lcControlSource))>0]
|
|
ENDIF
|
|
|
|
Select (m.lcRecordSource)
|
|
If m.tlFindNext
|
|
If !Eof(m.lcRecordSource)
|
|
Skip 1 In (m.lcRecordSource)
|
|
ELSE
|
|
GO TOP IN (m.lcRecordSource)
|
|
ENDIF
|
|
ELSE
|
|
GO TOP IN (m.lcRecordSource)
|
|
ENDIF
|
|
Locate Rest For &lcSearchCommand
|
|
If !Found()
|
|
Go Top In (m.lcRecordSource)
|
|
IF m.tlFindNext
|
|
IF MESSAGEBOX("Search has reached the last record without finding another match. Do you want to continue searching from the first record?",36,"Continue Searching from the Beginning?") = 6
|
|
Locate Rest For &lcSearchCommand
|
|
IF !FOUND()
|
|
MESSAGEBOX("A matching record could not be found.",64,"Unable to Locate Search Phrase")
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
MESSAGEBOX("A matching record could not be found.",64,"Unable to Locate Search Phrase")
|
|
ENDIF
|
|
ENDIF
|
|
*!* work around to allow highlighting/row update to show correctly in grid being searched as record pointer is moved
|
|
m.llLockScreenWas = thisform.lockscreen
|
|
thisform.lockscreen = .T.
|
|
this.gridobject.setfocus()
|
|
this.gridobject.refresh()
|
|
this.searchandfilterform.cmdSearch.setfocus()
|
|
thisform.lockscreen = m.llLockScreenWas
|
|
If m.lcAliasWas != Alias() And Used(m.lcAliasWas)
|
|
Select (m.lcAliasWas)
|
|
Endif
|
|
Endif
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setheaderimages
|
|
LPARAMETERS toCol
|
|
LOCAL loColumnObject, loHeaderObject, lcHeaderImage, llCustomFilterEnforced, lnCustomFilterIndex, lnItems
|
|
DIMENSION this.colFilter(5,This.GridObject.ColumnCount)
|
|
*!* lnItems = toCol.count
|
|
*!* FOR i=1 TO lnItems
|
|
*!* lcKey = toCol.GetKey(i)
|
|
*!* loItem = toCol.Item(lcKey)
|
|
*!* IF !EMPTY(loItem.filter)
|
|
*!* this.colFilter(1,i) = ALLTRIM(lcKey)
|
|
*!* ELSE
|
|
*!* this.colFilter(1,i) = ""
|
|
*!* ENDIF
|
|
*!* ENDFOR
|
|
FOR EACH m.loColumnObject IN This.GridObject.Columns
|
|
m.llCustomFilterEnforced = .F.
|
|
m.loHeaderObject = m.loColumnObject.Controls(1)
|
|
m.lcHeaderImage = UPPER(JUSTFNAME(m.loHeaderObject.picture))
|
|
m.lnCustomFilterIndex = ASCAN(this.colFilter,ALLTRIM(m.loColumnObject.Name),-1,-1,-1,1)
|
|
|
|
IF m.lnCustomFilterIndex > 0 AND !EMPTY(this.colFilter(1,m.lnCustomFilterIndex))
|
|
m.llCustomFilterEnforced = .T.
|
|
ENDIF
|
|
IF m.llCustomFilterEnforced OR ASCAN(this.colFilter,ALLTRIM(m.loColumnObject.name),-1,-1,-1,1) > 0
|
|
IF !INLIST(m.lcHeaderImage, UPPER(this.HeaderAscendingImage), UPPER(This.HeaderDescendingImage), UPPER(This.HeaderNoSortImage))
|
|
m.loHeaderObject.picture = this.headerfilterimage
|
|
ENDIF
|
|
ELSE
|
|
IF !EMPTY(m.lcHeaderImage) AND !INLIST(m.lcHeaderImage, UPPER(this.HeaderAscendingImage), UPPER(This.HeaderDescendingImage), UPPER(This.HeaderNoSortImage))
|
|
m.loHeaderObject.picture = ""
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setup
|
|
LOCAL loGridObject, loColumnObject, loHeaderObject, lcClassLib, lcGlobalArray, lcGridExportObjectName, lnGridExportAnchorValue
|
|
|
|
STORE Null TO This.GridObject, m.loColumnObject, m.loHeaderObject
|
|
UNBINDEVENTS(this)
|
|
this.CreateScreenReference()
|
|
m.lcGlobalArray = [_GEScr.] + this.GlobalArrayName
|
|
DIMENSION &lcGlobalArray.(1,1)
|
|
STORE .F. TO &lcGlobalArray
|
|
m.lcClassLib = LOWER(JUSTFNAME(this.ClassLibrary))
|
|
IF OCCURS(JUSTSTEM(m.lcClassLib),LOWER(SET("Classlib"))) = 0
|
|
IF FILE(this.ClassLibrary)
|
|
SET CLASSLIB TO (this.ClassLibrary) ADDITIVE
|
|
ELSE
|
|
SET CLASSLIB TO (LOCFILE(m.lcClassLib)) ADDITIVE
|
|
ENDIF
|
|
ENDIF
|
|
This.GridObject = EVALUATE(this.gridexpression)
|
|
IF TYPE("This.GridObject.Name") = "C"
|
|
this.restoregridpreferences(This.GridObject)
|
|
this.ocoll = CREATEOBJECT("collection")
|
|
FOR EACH m.loColumnObject IN This.GridObject.Columns
|
|
This.BindColumnEvents(m.loColumnObject)
|
|
This.BindHeaderEvents(m.loColumnObject.Controls(1))
|
|
loItem = CREATEOBJECT("empty")
|
|
ADDPROPERTY(loItem,"filter","")
|
|
this.ocoll.add(loItem,m.loColumnObject.Name)
|
|
ENDFOR
|
|
|
|
this.originalfilter = FILTER(this.gridobject.recordsource)
|
|
this.originalfilter = IIF(!EMPTY(this.originalfilter), "(" + this.originalfilter + ")", "")
|
|
IF this.allowgridexport
|
|
m.lcGridExportObjectName = SYS(2015)
|
|
This.GridObject.parent.AddObject(m.lcGridExportObjectName,"GridExtraExport",this)
|
|
this.GridExportObject = EVALUATE("This.GridObject.parent." + m.lcGridExportObjectName)
|
|
this.GridExportObject.GridObject = this.gridobject
|
|
BINDEVENT(this.gridobject,"zorder",this.GridExportObject,"zorderupdate",1)
|
|
BINDEVENT(this.gridobject,"resize",this.GridExportObject,"resizeupdate",1)
|
|
IF TYPE("this.GridExportObject.Name") = "C"
|
|
m.lnGridExportAnchorValue = 0
|
|
IF BITTEST(This.GridObject.anchor,3)
|
|
m.lnGridExportAnchorValue = BITSET(m.lnGridExportAnchorValue, 3)
|
|
ELSE
|
|
IF BITTEST(This.GridObject.anchor,7)
|
|
m.lnGridExportAnchorValue = BITSET(m.lnGridExportAnchorValue, 7)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF BITTEST(This.GridObject.anchor,2)
|
|
m.lnGridExportAnchorValue = BITSET(m.lnGridExportAnchorValue, 2)
|
|
ELSE
|
|
IF BITTEST(This.GridObject.anchor,6)
|
|
m.lnGridExportAnchorValue = BITSET(m.lnGridExportAnchorValue, 6)
|
|
ENDIF
|
|
ENDIF
|
|
this.GridExportObject.GridRecordSource = ALLTRIM(SYS(1272, this.GridObject))
|
|
this.GridExportObject.GridRecordSource = "Thisform" + SUBSTR(this.GridExportObject.GridRecordSource,AT(".", this.GridExportObject.GridRecordSource,1)) + ".RecordSource"
|
|
this.GridExportObject.Anchor = 0
|
|
this.GridExportObject.Left = (This.GridObject.Left + This.GridObject.Width - 19)
|
|
this.GridExportObject.Top = (This.GridObject.Top + This.GridObject.Height - 18)
|
|
this.GridExportObject.Anchor = m.lnGridExportAnchorValue
|
|
this.GridExportObject.visible = .T.
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE templateapply
|
|
LPARAMETERS tnTemplatePkID
|
|
LOCAL lcAliasWas, loActiveControlInColumn, llIsCombobox, llLockScreenWas, loHeaderObject, llAscendingSort
|
|
m.lcAliasWas = ALIAS()
|
|
IF This.TemplateLocate(m.tnTemplatePkID)
|
|
m.llLockScreenWas = thisform.LockScreen
|
|
thisform.LockScreen = .T.
|
|
This.RestoreColumnFilters(m.tnTemplatePkID)
|
|
this.RestoreCustomColumnFilters(m.tnTemplatePkID)
|
|
this.RestoreColumnSort(m.tnTemplatePkID, @m.llAscendingSort)
|
|
*this.applyfilter()
|
|
this.cautacontroller()
|
|
m.llIsCombobox = .F.
|
|
IF TYPE("this.currentcolumn") = "O" AND TYPE("this.currentcolumn.currentcontrol") = "C" AND !EMPTY(this.currentcolumn.currentcontrol)
|
|
m.loActiveControlInColumn = EVALUATE("this.currentcolumn." + this.currentcolumn.currentcontrol)
|
|
IF LOWER(ALLTRIM(m.loActiveControlInColumn.Baseclass)) = "combobox"
|
|
m.llIsCombobox = .T.
|
|
ENDIF
|
|
this.applysort(m.llIsCombobox, this.currentcolumn, m.llAscendingSort)
|
|
ENDIF
|
|
this.setheaderimages()
|
|
IF TYPE("this.currentcolumn") = "O" AND TYPE("this.currentcolumn.currentcontrol") = "C" AND !EMPTY(this.currentcolumn.currentcontrol)
|
|
m.loHeaderObject = this.currentcolumn.Controls(1)
|
|
IF m.llAscendingSort && Descending
|
|
m.loHeaderObject.picture = This.HeaderDescendingImage && "navigate_open.png"
|
|
ELSE && Ascending
|
|
m.loHeaderObject.picture = This.HeaderAscendingImage && "navigate_close.png"
|
|
ENDIF
|
|
ENDIF
|
|
thisform.LockScreen = m.llLockScreenWas
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE templatedelete
|
|
LPARAMETERS tnTemplatePkID
|
|
LOCAL lcAliasWas
|
|
m.lcAliasWas = ALIAS()
|
|
IF This.TemplateLocate(m.tnTemplatePkID)
|
|
DELETE
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE templatelocate
|
|
Lparameters tnTemplatePkID
|
|
Local lcTemplateTable, lcTemplateTableJustStem, lcTemplateGrid, lcTemplateName, llReturn, lcTempPath
|
|
m.llReturn = .F.
|
|
SET STEP ON
|
|
If Type("gcTempPath")<>"U"
|
|
lcTempPath = gcTempPath
|
|
Else
|
|
lcTempPath = Addbs(Sys(2023))
|
|
Endif
|
|
m.lcTemplateTable = lcTempPath + This.templatetable
|
|
m.lcTemplateTableJustStem = Juststem(m.lcTemplateTable)
|
|
If !File(m.lcTemplateTable)
|
|
CREATE table (m.lcTemplateTable) (pkid I(4) Autoinc,template C(50),gridname C(254),sortasc L(1),colname C(50),filtercust M(4),filtercol M(4),filterglob M(4),globala C(10))
|
|
Index On pkid Tag pkid
|
|
Use In (m.lcTemplateTable)
|
|
Endif
|
|
If Type("m.lcTemplateTable") = "C" And File(m.lcTemplateTable)
|
|
If !Used(m.lcTemplateTableJustStem)
|
|
Use (m.lcTemplateTable) In 0 Shared
|
|
Endif
|
|
Select (m.lcTemplateTableJustStem)
|
|
If Type("m.tnTemplatePkID") = "N"
|
|
m.llReturn = (m.tnTemplatePkID = Evaluate( m.lcTemplateTableJustStem + ".pkid") Or Seek(m.tnTemplatePkID, m.lcTemplateTableJustStem, "pkid"))
|
|
Else
|
|
If Type("m.tnTemplatePkID") = "C"
|
|
m.tnTemplatePkID = Upper(Alltrim(m.tnTemplatePkID))
|
|
m.lcTemplateGrid = Getwordnum(m.tnTemplatePkID, 1, ":")
|
|
m.lcTemplateName = Getwordnum(m.tnTemplatePkID, 2, ":")
|
|
m.llReturn = (Upper(Alltrim(m.lcTemplateGrid)) == Upper(Alltrim(gridname)) And ;
|
|
UPPER(Alltrim(m.lcTemplateName)) == Upper(Alltrim(template)))
|
|
If !m.llReturn
|
|
Locate For m.lcTemplateGrid == Upper(Alltrim(gridname)) And m.lcTemplateName == Upper(Alltrim(template))
|
|
m.llReturn = Found(m.lcTemplateTableJustStem)
|
|
Endif
|
|
Endif
|
|
Endif
|
|
Endif
|
|
Return m.llReturn
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE templatesave
|
|
LPARAMETERS tcGridName, tcTemplateName
|
|
LOCAL lcAliasWas, lnTemplatePkID
|
|
m.lcAliasWas = ALIAS()
|
|
IF !This.TemplateLocate(m.tcGridName + ":" + m.tcTemplateName)
|
|
APPEND BLANK
|
|
replace template WITH m.tcTemplateName, gridname WITH m.tcGridName
|
|
m.lnTemplatePkID = pkid
|
|
this.saveacolumnfilters(m.lnTemplatePkID)
|
|
this.savecustomcolumnfilters(m.lnTemplatePkID)
|
|
this.savecolumnsort(m.lnTemplatePkID)
|
|
ELSE
|
|
m.lnTemplatePkID = pkid
|
|
this.saveacolumnfilters(m.lnTemplatePkID)
|
|
this.savecustomcolumnfilters(m.lnTemplatePkID)
|
|
this.savecolumnsort(m.lnTemplatePkID)
|
|
ENDIF
|
|
IF ALIAS() != m.lcAliasWas AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS gridextraexport AS image
|
|
*< CLASSDATA: Baseclass="image" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: resizeupdate
|
|
*m: zorderupdate
|
|
*p: gridextrasobject
|
|
*p: gridobject
|
|
*p: gridrecordsource
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
Anchor = 12
|
|
gridextrasobject = .NULL.
|
|
gridobject = .NULL.
|
|
gridrecordsource = this.parent.grid1.recordsource
|
|
Height = 16
|
|
Name = "gridextraexport"
|
|
Picture = ..\graphics\table_sql_view16.png
|
|
Stretch = 1
|
|
Visible = .F.
|
|
Width = 18
|
|
*</PropValue>
|
|
|
|
PROCEDURE Click
|
|
LOCAL loGridUtils
|
|
m.loGridUtils = CREATEOBJECT("gridutils", thisform, this.gridobject, this.gridextrasobject)
|
|
m.loGridUtils.Show(1)
|
|
|
|
*!* Local lcGridSource, lcAliasWas, lcXLSFile, lcAction, lcFileName, lcPath
|
|
*!* lcGridSource = Evaluate(This.gridrecordsource)
|
|
*!* If Used(lcGridSource)
|
|
*!* lcAliasWas = Alias()
|
|
*!* Select (lcGridSource)
|
|
*!* lcXLSFile = Putfile("Excel Filename",Sys(2015) + ".xls", "XLS")
|
|
*!* If !Empty(lcXLSFile)
|
|
*!* Copy To (lcXLSFile) Type Xls
|
|
*!* GO TOP IN (m.lcGridSource)
|
|
*!* If File(lcXLSFile)
|
|
*!* lcFileName = Justfname(lcXLSFile)
|
|
*!* If Messagebox("The File " + lcFileName + Chr(13) + "was successfully exported." + Chr(13) +;
|
|
*!* "Would you like to open it now?",36,"EXCEL EXPORT SUCCESSFUL") = 6
|
|
*!* Declare Integer ShellExecute In shell32.Dll ;
|
|
*!* INTEGER hndWin, ;
|
|
*!* STRING cAction, ;
|
|
*!* STRING cFileName, ;
|
|
*!* STRING cParams, ;
|
|
*!* STRING cDir, ;
|
|
*!* INTEGER nShowWin
|
|
*!* lcAction = "open"
|
|
*!* lcPath=Justpath(lcXLSFile)
|
|
*!* ShellExecute(0,lcAction,lcFileName,lcPath,"",1)
|
|
*!* Endif
|
|
*!* Endif
|
|
*!* ENDIF
|
|
*!* IF USED(m.lcAliasWas)
|
|
*!* SELECT(m.lcAliasWas)
|
|
*!* ENDIF
|
|
*!* Else
|
|
*!* Messagebox("Record source for grid does not appear to be open or a table",16,"Unable to Export")
|
|
*!* Endif
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
LPARAMETERS toGridExtras
|
|
this.gridextrasobject = m.toGridExtras
|
|
this.ZOrder(0)
|
|
ENDPROC
|
|
|
|
PROCEDURE resizeupdate
|
|
LOCAL lnAnchorWas
|
|
m.lnAnchorWas = this.Anchor
|
|
this.Anchor = 0
|
|
this.Left = (This.GridObject.Left + This.GridObject.Width - 19)
|
|
this.Top = (This.GridObject.Top + This.GridObject.Height - 18)
|
|
this.Anchor = m.lnAnchorWas
|
|
this.ZOrder(0)
|
|
ENDPROC
|
|
|
|
PROCEDURE zorderupdate
|
|
LPARAMETERS tnzOrder
|
|
|
|
this.zorder(0)
|
|
*!* this.zorder(Max(0, This.GridObject.zOrder - 1))
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS gridextraform AS form
|
|
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="shpSplitter" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="cmdFilter" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Gridcustomfilter1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="cmdExit" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="cmdClearFilter" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="tmrCheckform" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="tmrFadeform" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="But_criterii1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="lblMore" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Image1" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: buildfilter
|
|
*m: clearfilter
|
|
*m: retrievepreviouschecks
|
|
*m: retrievepreviouscustomfilter
|
|
*m: search
|
|
*m: setup
|
|
*m: showfilteroptions
|
|
*p: casesensitive
|
|
*p: cfiltru
|
|
*p: columncontrolsource
|
|
*p: columnobject
|
|
*p: delimiter
|
|
*p: findnext
|
|
*p: globalarrayname
|
|
*p: gridextraobject
|
|
*p: gridrecordsource
|
|
*p: idcamp
|
|
*p: idvalue
|
|
*p: indexcustomcolumnfilter
|
|
*p: ocol
|
|
*p: rundeactivaterelease
|
|
*p: uniquecursorname
|
|
*a: acriterii[1,5]
|
|
*a: filtersettings[5,1]
|
|
*p: _fade
|
|
*p: _infademode
|
|
*p: _inform
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
AlwaysOnTop = .T.
|
|
BackColor = 255,255,255
|
|
BorderStyle = 3
|
|
Caption = ""
|
|
casesensitive = .T.
|
|
cfiltru =
|
|
columncontrolsource =
|
|
columnobject = NULL
|
|
delimiter = ||
|
|
Desktop = .T.
|
|
DoCreate = .T.
|
|
findnext = .F.
|
|
globalarrayname = .F.
|
|
gridextraobject = NULL
|
|
gridrecordsource =
|
|
Height = 194
|
|
idcamp =
|
|
idvalue =
|
|
indexcustomcolumnfilter = 0
|
|
Left = 0
|
|
Name = "gridextraform"
|
|
ocol = NULL
|
|
rundeactivaterelease = .T.
|
|
ShowTips = .T.
|
|
TitleBar = 0
|
|
Top = 0
|
|
uniquecursorname =
|
|
Width = 228
|
|
WindowType = 0
|
|
_fade = 255
|
|
_infademode = .T.
|
|
_inform = .T.
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'But_criterii1' AS but_criterii WITH ;
|
|
cvar_afisata = , ;
|
|
Left = 197, ;
|
|
Name = "But_criterii1", ;
|
|
TabIndex = 3, ;
|
|
Top = 88, ;
|
|
Visible = .F.
|
|
*< END OBJECT: ClassLib="gridextras.vcx" BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'cmdClearFilter' AS commandbutton WITH ;
|
|
Anchor = 3, ;
|
|
Caption = "", ;
|
|
Height = 26, ;
|
|
Left = 168, ;
|
|
Name = "cmdClearFilter", ;
|
|
Picture = clearfilter16.bmp, ;
|
|
PicturePosition = 4, ;
|
|
TabIndex = 6, ;
|
|
ToolTipText = "Sterge filtrul existent", ;
|
|
Top = 4, ;
|
|
Width = 28
|
|
*< END OBJECT: BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'cmdExit' AS commandbutton WITH ;
|
|
Anchor = 3, ;
|
|
Caption = "", ;
|
|
Height = 26, ;
|
|
Left = 196, ;
|
|
Name = "cmdExit", ;
|
|
Picture = close16.bmp, ;
|
|
PicturePosition = 4, ;
|
|
TabIndex = 5, ;
|
|
ToolTipText = "Renunta si inchide", ;
|
|
Top = 4, ;
|
|
Width = 28
|
|
*< END OBJECT: BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'cmdFilter' AS commandbutton WITH ;
|
|
Caption = "Filtreaza", ;
|
|
Height = 26, ;
|
|
Left = 144, ;
|
|
Name = "cmdFilter", ;
|
|
Picture = addfilter16.bmp, ;
|
|
PicturePosition = 4, ;
|
|
TabIndex = 4, ;
|
|
ToolTipText = "Aplica filtrul si inchide", ;
|
|
Top = 149, ;
|
|
Width = 80
|
|
*< END OBJECT: BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Gridcustomfilter1' AS gridcustomfilter WITH ;
|
|
Anchor = 3, ;
|
|
Left = 4, ;
|
|
Name = "Gridcustomfilter1", ;
|
|
TabIndex = 2, ;
|
|
Top = 62, ;
|
|
Combo1.Left = 1, ;
|
|
Combo1.Name = "Combo1", ;
|
|
Text1.Height = 23, ;
|
|
Text1.Left = 21, ;
|
|
Text1.Name = "Text1", ;
|
|
Text1.Top = 27, ;
|
|
Text1.Width = 170, ;
|
|
Text2.Height = 23, ;
|
|
Text2.Left = 21, ;
|
|
Text2.Name = "Text2", ;
|
|
Text2.Top = 52, ;
|
|
Text2.Width = 170
|
|
*< END OBJECT: ClassLib="gridextras.vcx" BaseClass="container" />
|
|
|
|
ADD OBJECT 'Image1' AS image WITH ;
|
|
Anchor = 3, ;
|
|
Height = 16, ;
|
|
Left = 7, ;
|
|
Name = "Image1", ;
|
|
Picture = showfilters16.bmp, ;
|
|
Top = 36, ;
|
|
Width = 16
|
|
*< END OBJECT: BaseClass="image" />
|
|
|
|
ADD OBJECT 'lblMore' AS label WITH ;
|
|
Anchor = 3, ;
|
|
AutoSize = .F., ;
|
|
BackStyle = 0, ;
|
|
Caption = "Mai mult...", ;
|
|
ForeColor = 128,128,255, ;
|
|
Height = 17, ;
|
|
Left = 28, ;
|
|
Name = "lblMore", ;
|
|
TabIndex = 1, ;
|
|
Top = 37, ;
|
|
Width = 72
|
|
*< END OBJECT: BaseClass="label" />
|
|
|
|
ADD OBJECT 'shpSplitter' AS shape WITH ;
|
|
Anchor = 11, ;
|
|
Height = 1, ;
|
|
Left = 0, ;
|
|
Name = "shpSplitter", ;
|
|
SpecialEffect = 0, ;
|
|
Top = 56, ;
|
|
Width = 235
|
|
*< END OBJECT: BaseClass="shape" />
|
|
|
|
ADD OBJECT 'tmrCheckform' AS checkform WITH ;
|
|
Left = 42, ;
|
|
Name = "tmrCheckform", ;
|
|
Top = 150
|
|
*< END OBJECT: ClassLib="gridextras.vcx" BaseClass="timer" />
|
|
|
|
ADD OBJECT 'tmrFadeform' AS fadeform WITH ;
|
|
Left = 72, ;
|
|
Name = "tmrFadeform", ;
|
|
Top = 150
|
|
*< END OBJECT: ClassLib="gridextras.vcx" BaseClass="timer" />
|
|
|
|
PROCEDURE buildfilter
|
|
Dimension This.gridextraobject.colFilter(5,Alen(This.acriterii,1))
|
|
Local lcTipCriteriu, luValoareCriteriu, lnIdValue, lcvaloare, lcvaloare2, lnIdCamp, lcNumeCriteriu, lcSir, lcLogic, lcExpresie, lcThislogic
|
|
lcLogic ='AND'
|
|
*lcTipCriteriu = Thisform.acriterii(Thisform.ColumnObject.ColumnOrder,3)
|
|
lcTipCriteriu = Thisform.acriterii(Ascan(Thisform.acriterii, This.ColumnObject.Name,-1,-1,-1,15),3)
|
|
If At('|', lcTipCriteriu) > 0
|
|
lcTipCriteriu = Left(lcTipCriteriu, At('|', lcTipCriteriu) -1) && tipul criteriului N|GetMask(12,gnPA)
|
|
Endif
|
|
|
|
luValoareCriteriu = Thisform.gridcustomfilter1.text1.Value
|
|
lcExpresie = Alltrim(Thisform.gridcustomfilter1.Combo1.List(Thisform.gridcustomfilter1.Combo1.ListIndex))
|
|
|
|
Do Case
|
|
Case lcTipCriteriu = "D"
|
|
lcvaloare = luValoareCriteriu &&Alltrim(Ttoc(luValoareCriteriu,1)) &&dtos
|
|
lcvaloare2 = Thisform.gridcustomfilter1.text2.Value
|
|
Case lcTipCriteriu = "N"
|
|
lcvaloare = Alltrim(Transform(luValoareCriteriu))
|
|
Otherwise
|
|
lcvaloare = Strtran(Alltrim(luValoareCriteriu),"'",[''])
|
|
Endcase
|
|
|
|
If Inlist(lcTipCriteriu,[D],[N],[E],[A],[D1])
|
|
criteriustring = Alltrim(Thisform.acriterii(Ascan(Thisform.acriterii, This.ColumnObject.Name,-1,-1,-1,15),2))
|
|
Else
|
|
criteriustring = [ UPPER(] + Alltrim(Thisform.acriterii(Ascan(Thisform.acriterii, This.ColumnObject.Name,-1,-1,-1,15),2)) + [) ]
|
|
Endif
|
|
If Empty(lcvaloare)
|
|
criteriustring = ""
|
|
Endif
|
|
|
|
Thisform.clearfilter()
|
|
|
|
If lcTipCriteriu = "D"
|
|
Do Case
|
|
Case lcExpresie = "Egal cu"
|
|
criteriustring = criteriustring + [= To_Date('] + ALLTRIM(TTOC(lcvaloare,1)) + [','YYYYMMDDhh24miss')]
|
|
Case lcExpresie = "Mai mic decat"
|
|
criteriustring = criteriustring + [< To_Date('] + ALLTRIM(TTOC(lcvaloare,1)) + [','YYYYMMDDhh24miss')]
|
|
Case lcExpresie = "Mai mare decat"
|
|
criteriustring = criteriustring + [> To_Date('] + ALLTRIM(TTOC(lcvaloare,1)) + [','YYYYMMDDhh24miss')]
|
|
Case lcExpresie = "Intre"
|
|
criteriustring = criteriustring + [>= To_Date('] + ALLTRIM(TTOC(lcvaloare,1)) + [','YYYYMMDDhh24miss') and ] + criteriustring + [<= To_Date('] + ALLTRIM(TTOC(lcvaloare2,1)) + [','YYYYMMDDhh24miss')]
|
|
Endcase
|
|
Else
|
|
Do Case
|
|
Case lcExpresie="Incepe cu"
|
|
criteriustring= criteriustring + [LIKE '] + Upper(lcvaloare) + [%']
|
|
Case lcExpresie="Egal cu"
|
|
criteriustring= criteriustring + [='] + Upper(lcvaloare) + [']
|
|
Case lcExpresie="Contine"
|
|
criteriustring= criteriustring + [LIKE '%] + Upper(lcvaloare) + [%']
|
|
*****criterii numerice*****
|
|
Case lcExpresie="Egal cu"
|
|
criteriustring = criteriustring + [=]+Iif(lcvaloare="","0",lcvaloare)
|
|
Case lcExpresie="Mai mic decat"
|
|
criteriustring = criteriustring + [<]+Iif(lcvaloare="","0",lcvaloare)
|
|
Case lcExpresie="Mai mare decat"
|
|
criteriustring = criteriustring + [>]+Iif(lcvaloare="","0",lcvaloare)
|
|
Endcase
|
|
Endif
|
|
|
|
Thisform.ocol(Thisform.ColumnObject.Name).Filter = criteriustring
|
|
For Each loItem In Thisform.ocol
|
|
If (loItem.Filter)#""
|
|
If Inlist(lcTipCriteriu,[D],[N],[E],[A])
|
|
Thisform.cfiltru = Thisform.cfiltru + [ ] + lcLogic + [ ] + loItem.Filter
|
|
Else
|
|
Thisform.cfiltru = Thisform.cfiltru + [ ] + lcLogic + [ ] + loItem.Filter
|
|
Endif
|
|
Endif
|
|
Endfor
|
|
lnItems = This.ocol.Count
|
|
For i=1 To lnItems
|
|
lcKey = This.ocol.GetKey(i)
|
|
loItem =This.ocol.Item(lcKey)
|
|
If !Empty(loItem.Filter)
|
|
This.gridextraobject.colFilter(1,i) = Alltrim(lcKey)
|
|
Else
|
|
This.gridextraobject.colFilter(1,i) = ""
|
|
Endif
|
|
Endfor
|
|
With This.gridextraobject
|
|
.colFilter(2,Ascan(This.gridextraobject.colFilter, This.ColumnObject.Name,-1,-1,-1,1)) = This.gridcustomfilter1.Combo1.ListIndex
|
|
.colFilter(3,Ascan(This.gridextraobject.colFilter, This.ColumnObject.Name,-1,-1,-1,1)) = This.gridcustomfilter1.text1.Value
|
|
.colFilter(4,Ascan(This.gridextraobject.colFilter, This.ColumnObject.Name,-1,-1,-1,1)) = This.gridcustomfilter1.text2.Value
|
|
.colFilter(5,Ascan(This.gridextraobject.colFilter, This.ColumnObject.Name,-1,-1,-1,1)) = criteriustring
|
|
Endwith
|
|
|
|
Thisform.cfiltru = Alltrim(Thisform.cfiltru)
|
|
If At("AND", Thisform.cfiltru) = 1
|
|
Thisform.cfiltru = Substr(Thisform.cfiltru, 4)
|
|
Endif && curatare AND/OR de la inceputul conditiei
|
|
If At("OR", Thisform.cfiltru) = 1
|
|
Thisform.cfiltru = Substr(Thisform.cfiltru, 3)
|
|
Endif && curatare AND/OR de la inceputul conditiei
|
|
Thisform.cfiltru= Alltrim(Thisform.cfiltru)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE clearfilter
|
|
this.ocol(this.columnobject.Name).filter = ""
|
|
this.gridextraobject.colFilter(5,ASCAN(this.GridExtraObject.colFilter, this.columnobject.name,-1,-1,-1,1)) = ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Deactivate
|
|
IF !thisform.RunDeactivateRelease
|
|
RETURN
|
|
ENDIF
|
|
thisform.Release()
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
LPARAMETERS toColumnObject, toGridExtraObject,toGridExtraColl, tacriterii
|
|
EXTERNAL ARRAY tacriterii
|
|
DIMENSION this.acriterii(alen(tacriterii,1),5)
|
|
ACOPY(tacriterii,this.acriterii)
|
|
This.ColumnObject = m.toColumnObject
|
|
This.GridExtraObject = m.toGridExtraObject
|
|
this.ocol = m.toGridExtraColl
|
|
IF TYPE("This.ColumnObject.Name") != "C" OR TYPE("This.GridExtraObject.Name") != "C"
|
|
RETURN .F.
|
|
ENDIF
|
|
IF !EMPTY(this.acriterii(Ascan(Thisform.acriterii, This.ColumnObject.Name,-1,-1,-1,15),5))
|
|
this.but_criterii1.Visible= .t.
|
|
ENDIF
|
|
|
|
m.toGridExtraObject.CreateScreenReference()
|
|
this.casesensitive = This.GridExtraObject.casesensitive
|
|
this.UniqueCursorName = m.toGridExtraObject.GlobalArrayName
|
|
This.GlobalArrayName = m.toGridExtraObject.GlobalArrayName
|
|
this.Height = this.shpSplitter.Top
|
|
this.MinHeight = this.Height
|
|
this.MaxHeight = this.Height
|
|
this.MaxWidth = this.width
|
|
this.MinWidth = this.Width
|
|
This.Setup()
|
|
IF OS() < "Windows 5.00"
|
|
RETURN
|
|
ENDIF
|
|
|
|
DECLARE SetWindowLong In Win32Api AS _Sol_SetWindowLong Integer, Integer, Integer
|
|
DECLARE SetLayeredWindowAttributes In Win32Api AS _Sol_SetLayeredWindowAttributes Integer, String, Integer, Integer
|
|
_Sol_SetWindowLong(THISFORM.hWnd, -20, 0x00080000)
|
|
_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, 255, 2)
|
|
|
|
This.tmrCheckForm.Interval = 200
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE retrievepreviouschecks
|
|
ENDPROC
|
|
|
|
PROCEDURE retrievepreviouscustomfilter
|
|
LOCAL lnIndexCustomColumnFilter
|
|
m.lnIndexCustomColumnFilter = ASCAN(this.GridExtraObject.colFilter, this.columnobject.name,-1,-1,-1,1)
|
|
IF m.lnIndexCustomColumnFilter > 0
|
|
this.gridcustomfilter1.combo1.ListIndex = this.GridExtraObject.colFilter(2,m.lnIndexCustomColumnFilter)
|
|
this.gridcustomfilter1.text1.Value = this.GridExtraObject.colFilter(3,m.lnIndexCustomColumnFilter)
|
|
this.gridcustomfilter1.text2.Value = this.GridExtraObject.colFilter(4,m.lnIndexCustomColumnFilter)
|
|
this.gridcustomfilter1.combo1.refresh()
|
|
this.gridcustomfilter1.text1.refresh()
|
|
this.gridcustomfilter1.text2.refresh()
|
|
ENDIF
|
|
*thisform.indexcustomcolumnfilter = m.lnIndexCustomColumnFilter
|
|
ENDPROC
|
|
|
|
PROCEDURE search
|
|
Local lcControlSource, lcRecordSource, lcAliasWas, lcSearchValue
|
|
If Thisform.txtSearch.FontItalic
|
|
Thisform.txtSearch.SetFocus()
|
|
ELSE
|
|
this.gridextraobject.Search(this.txtSearch.Value, this.findnext)
|
|
this.findnext = .T.
|
|
Endif
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setup
|
|
LOCAL lcRecordSource, lcControlSource, lcCursorName, ;
|
|
lcControlSourceJustStem, loActiveControlInColumn, ;
|
|
lcColumnCursorName, llActiveControlIsCombobox, lcOrderByClause
|
|
m.lcRecordSource = ALLTRIM(this.columnobject.parent.recordsource)
|
|
m.lcControlSource = ALLTRIM(this.columnobject.controlsource) && ALLTRIM(IIF(AT(".",this.columnobject.controlsource) > 0, JUSTEXT(this.columnobject.controlsource), this.columnobject.controlsource))
|
|
this.gridrecordsource = m.lcRecordSource
|
|
this.columncontrolsource = m.lcControlSource
|
|
m.lcCursorName = This.UniqueCursorName
|
|
IF AT(".",m.lcControlSource) > 0
|
|
m.lcControlSourceJustStem = JUSTSTEM(m.lcControlSource)
|
|
IF UPPER(ALLTRIM(m.lcControlSourceJustStem)) != UPPER(ALLTRIM(m.lcRecordSource)) AND USED(m.lcControlSourceJustStem)
|
|
m.lcRecordSource = m.lcControlSourceJustStem
|
|
ENDIF
|
|
ENDIF
|
|
m.loActiveControlInColumn = EVALUATE("this.columnobject." + this.columnobject.currentcontrol)
|
|
m.llActiveControlIsCombobox = (LOWER(m.loActiveControlInColumn.BaseClass) = "combobox" AND m.loActiveControlInColumn.BoundColumn > 1)
|
|
IF m.llActiveControlIsCombobox
|
|
this.gridcustomfilter1.Visible = .F.
|
|
ENDIF
|
|
m.lcOrderByClause = ""
|
|
m.lcDistinct = ""
|
|
IF TYPE(m.lcControlSource) != "M"
|
|
m.lcOrderByClause = "ORDER BY 2"
|
|
m.lcDistinct = "Distinct"
|
|
ENDIF
|
|
IF !this.casesensitive AND TYPE(m.lcControlSource) = "C"
|
|
IF m.llActiveControlIsCombobox
|
|
m.lcColumnCursorName = this.gridextraobject.GetComboCursorName(m.loActiveControlInColumn)
|
|
IF USED(m.lcColumnCursorName)
|
|
SELECT &lcDistinct .T. as checked, UPPER(disptext) as fldvalues, TRANSFORM(fkid) as actvalues;
|
|
FROM (m.lcRecordSource) WITH (Buffering = .T.) INNER JOIN &lcColumnCursorName ON &lcControlSource = &lcColumnCursorName..fkid ;
|
|
&lcOrderByClause ;
|
|
INTO CURSOR &lcCursorName READWRITE
|
|
ENDIF
|
|
ELSE
|
|
SELECT &lcDistinct .T. as checked, UPPER(&lcControlSource) as fldvalues, UPPER(&lcControlSource) as actvalues ;
|
|
FROM (m.lcRecordSource) WITH (Buffering = .T.) ;
|
|
&lcOrderByClause ;
|
|
INTO CURSOR &lcCursorName READWRITE
|
|
ENDIF
|
|
ELSE
|
|
IF m.llActiveControlIsCombobox
|
|
m.lcColumnCursorName = this.gridextraobject.GetComboCursorName(m.loActiveControlInColumn)
|
|
IF USED(m.lcColumnCursorName)
|
|
SELECT &lcDistinct .T. as checked, disptext as fldvalues, TRANSFORM(fkid) as actvalues ;
|
|
FROM (m.lcRecordSource) WITH (Buffering = .T.) INNER JOIN &lcColumnCursorName ON &lcControlSource = &lcColumnCursorName..fkid ;
|
|
&lcOrderByClause ;
|
|
INTO CURSOR &lcCursorName READWRITE
|
|
ENDIF
|
|
ELSE
|
|
SELECT &lcDistinct .T. as checked, &lcControlSource as fldvalues, &lcControlSource as actvalues ;
|
|
FROM (m.lcRecordSource) WITH (Buffering = .T.) ;
|
|
&lcOrderByClause ;
|
|
INTO CURSOR &lcCursorName READWRITE
|
|
ENDIF
|
|
ENDIF
|
|
this.gridcustomfilter1.Setup(this.columnobject.controls(1).caption, TYPE(m.lcRecordSource + '.' + m.lcControlSource), m.lcControlSource)
|
|
this.retrievepreviouscustomfilter()
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE showfilteroptions
|
|
LPARAMETERS tlShowFilterOptions
|
|
IF m.tlShowFilterOptions
|
|
this.MaxHeight = -1
|
|
this.MaxWidth = -1
|
|
this.Width = this.cmdFilter.Left + this.cmdFilter.Width + 4
|
|
this.Height = this.cmdFilter.Top + this.cmdFilter.Height + 4
|
|
*!* this.grid1.Anchor = 15
|
|
this.cmdFilter.Anchor = 12
|
|
ELSE
|
|
*!* this.grid1.Anchor = 0
|
|
this.cmdFilter.Anchor = 0
|
|
this.Width = this.cmdExit.Left + this.cmdExit.Width + 4
|
|
this.Height = this.shpSplitter.Top
|
|
this.MaxHeight = this.Height
|
|
this.MaxWidth = this.width
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE But_criterii1.Click
|
|
thisform.RunDeactivateRelease=.f.
|
|
|
|
m.loPartener= goCautareController.List()
|
|
*!* lcVarText = loPartener.nume
|
|
*!* lnVarId = loPartener.id_part
|
|
|
|
If !Isnull(m.loPartener)
|
|
If !Empty(loPartener.nume)
|
|
This.Parent.idValue = loPartener.id_part
|
|
Thisform.gridcustomfilter1.text1.Value=loPartener.nume
|
|
Thisform.gridcustomfilter1.text1.Enabled=.F.
|
|
Thisform.gridcustomfilter1.combo1.ListIndex=4
|
|
*this.cvar_afisata = loPartener.nume
|
|
ELSE
|
|
Thisform.gridcustomfilter1.text1.Enabled=.T.
|
|
Thisform.gridcustomfilter1.text1.Value=""
|
|
Thisform.gridcustomfilter1.combo1.ListIndex=1
|
|
Endif
|
|
Endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE cmdClearFilter.Click
|
|
IF thisform.gridcustomfilter1.combo1.ListIndex != 1
|
|
thisform.gridcustomfilter1.combo1.ListIndex = 1
|
|
thisform.gridcustomfilter1.combo1.InteractiveChange()
|
|
ENDIF
|
|
|
|
thisform.gridcustomfilter1.text1.Value = ""
|
|
thisform.gridcustomfilter1.text2.Value = ""
|
|
thisform.BuildFilter()
|
|
thisform.gridextraobject.pagenumber = 1
|
|
thisform.gridextraobject.applyfilter(thisform.cfiltru)
|
|
thisform.gridextraobject.setheaderimages(thisform.ocol)
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE cmdExit.Click
|
|
thisform.Release()
|
|
ENDPROC
|
|
|
|
PROCEDURE cmdFilter.Click
|
|
Thisform.RunDeactivateRelease = .F.
|
|
thisform.BuildFilter()
|
|
thisform.gridextraobject.pagenumber = 1
|
|
thisform.gridextraobject.applyfilter(thisform.cfiltru)
|
|
thisform.gridextraobject.setheaderimages(thisform.ocol)
|
|
thisform.Release()
|
|
ENDPROC
|
|
|
|
PROCEDURE Image1.MouseEnter
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
this.Parent.lblMore.MouseEnter(nButton, nShift, nXCoord, nYCoord)
|
|
ENDPROC
|
|
|
|
PROCEDURE Image1.MouseLeave
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
this.Parent.lblMore.MouseLeave(nButton, nShift, nXCoord, nYCoord)
|
|
ENDPROC
|
|
|
|
PROCEDURE lblMore.Click
|
|
IF this.Caption = "Mai mult..."
|
|
this.Caption = "Mai putin..."
|
|
Thisform.ShowFilterOptions(.T.)
|
|
ELSE
|
|
this.Caption = "Mai mult..."
|
|
Thisform.ShowFilterOptions(.F.)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE lblMore.MouseEnter
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
this.FontUnderline = .T.
|
|
this.ForeColor = RGB(0,0,255)
|
|
ENDPROC
|
|
|
|
PROCEDURE lblMore.MouseLeave
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
this.FontUnderline = .F.
|
|
this.ForeColor = RGB(128,128,255)
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS gridutils AS form
|
|
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="Shape5" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Image1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Combo1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Command3" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Label1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Command4" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Command2" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Command1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Shape6" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: addtemplate
|
|
*m: copytoexcel
|
|
*m: deletetemplate
|
|
*m: gettemplates
|
|
*p: gridextrasobject
|
|
*p: gridhierarchy
|
|
*p: gridobject
|
|
*p: parentform
|
|
*p: templatecursorname
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
AlwaysOnTop = .T.
|
|
AutoCenter = .T.
|
|
Caption = "Template-uri tabel si Export"
|
|
DoCreate = .T.
|
|
gridextrasobject = .NULL.
|
|
gridhierarchy =
|
|
gridobject = .NULL.
|
|
Height = 250
|
|
Name = "gridutils"
|
|
parentform = .NULL.
|
|
templatecursorname =
|
|
Width = 434
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'Combo1' AS combobox WITH ;
|
|
Anchor = 3, ;
|
|
Height = 24, ;
|
|
Left = 109, ;
|
|
Name = "Combo1", ;
|
|
Style = 2, ;
|
|
TabIndex = 2, ;
|
|
Top = 74, ;
|
|
Width = 260
|
|
*< END OBJECT: BaseClass="combobox" />
|
|
|
|
ADD OBJECT 'Command1' AS commandbutton WITH ;
|
|
Anchor = 6, ;
|
|
Caption = "Exporta ", ;
|
|
Height = 32, ;
|
|
Left = 12, ;
|
|
Name = "Command1", ;
|
|
Picture = excel24.jpg, ;
|
|
PicturePosition = 4, ;
|
|
TabIndex = 5, ;
|
|
Top = 208, ;
|
|
Width = 84
|
|
*< END OBJECT: BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Command2' AS commandbutton WITH ;
|
|
Anchor = 12, ;
|
|
Caption = "Inchide ", ;
|
|
Height = 32, ;
|
|
Left = 336, ;
|
|
Name = "Command2", ;
|
|
Picture = exit.png, ;
|
|
PicturePosition = 4, ;
|
|
TabIndex = 6, ;
|
|
Top = 208, ;
|
|
Width = 84
|
|
*< END OBJECT: BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Command3' AS commandbutton WITH ;
|
|
Anchor = 3, ;
|
|
Caption = "", ;
|
|
Height = 26, ;
|
|
Left = 369, ;
|
|
Name = "Command3", ;
|
|
Picture = add16.png, ;
|
|
TabIndex = 3, ;
|
|
Top = 73, ;
|
|
Width = 26
|
|
*< END OBJECT: BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Command4' AS commandbutton WITH ;
|
|
Anchor = 3, ;
|
|
Caption = "", ;
|
|
Height = 26, ;
|
|
Left = 394, ;
|
|
Name = "Command4", ;
|
|
Picture = delete16.png, ;
|
|
TabIndex = 4, ;
|
|
Top = 73, ;
|
|
Width = 26
|
|
*< END OBJECT: BaseClass="commandbutton" />
|
|
|
|
ADD OBJECT 'Image1' AS image WITH ;
|
|
Height = 48, ;
|
|
Left = 18, ;
|
|
Name = "Image1", ;
|
|
Picture = table_sql_view.png, ;
|
|
Top = 16, ;
|
|
Width = 48, ;
|
|
ZOrderSet = 16
|
|
*< END OBJECT: BaseClass="image" />
|
|
|
|
ADD OBJECT 'Label1' AS label WITH ;
|
|
Anchor = 3, ;
|
|
AutoSize = .T., ;
|
|
BackStyle = 0, ;
|
|
Caption = "Template-uri filtre si sortari", ;
|
|
Height = 17, ;
|
|
Left = 109, ;
|
|
Name = "Label1", ;
|
|
TabIndex = 1, ;
|
|
Top = 57, ;
|
|
Width = 149
|
|
*< END OBJECT: BaseClass="label" />
|
|
|
|
ADD OBJECT 'Shape5' AS shape WITH ;
|
|
Anchor = 7, ;
|
|
BackColor = 255,255,255, ;
|
|
Height = 201, ;
|
|
Left = -2, ;
|
|
Name = "Shape5", ;
|
|
SpecialEffect = 0, ;
|
|
Top = -2, ;
|
|
Width = 89, ;
|
|
ZOrderSet = 15
|
|
*< END OBJECT: BaseClass="shape" />
|
|
|
|
ADD OBJECT 'Shape6' AS shape WITH ;
|
|
Anchor = 14, ;
|
|
BackStyle = 0, ;
|
|
Height = 56, ;
|
|
Left = -3, ;
|
|
Name = "Shape6", ;
|
|
SpecialEffect = 0, ;
|
|
Top = 197, ;
|
|
Width = 441, ;
|
|
ZOrderSet = 8
|
|
*< END OBJECT: BaseClass="shape" />
|
|
|
|
PROCEDURE addtemplate
|
|
LOCAL llReturn, lcTemplateName
|
|
m.llReturn = .F.
|
|
m.lcTemplateName = INPUTBOX("Template Name", "New Filter & Export Template", "")
|
|
IF !EMPTY(m.lcTemplateName)
|
|
thisform.gridextrasobject.templatesave(thisform.gridhierarchy, m.lcTemplateName)
|
|
m.llReturn = .T.
|
|
ENDIF
|
|
RETURN m.llReturn
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE copytoexcel
|
|
*!* LPARAMETERS tcXLSFile, tcSheet, tvWorkArea, tcExcelFieldList, tcTableFieldList, tcTableForExpr
|
|
#DEFINE ALPHANUMERICCHR "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz1234567890"
|
|
LOCAL lnCounter, loColumn, lcXLSFile, lcSheetName, lcAliasWas, lcGridAlias, ;
|
|
lcExcelFieldList, lcTableFieldList, lcTableForExpression, loHeaderObject, ;
|
|
lcFileName, lcAction, lcPath, loExcelApp, loWorkBook, lcKeyName
|
|
m.lcXLSFile = "C:\" + SYS(2015) + ".xls"
|
|
m.lcXLSFile = PUTFILE("Export to Excel:", m.lcXLSFile, "XLS;XLSX;XLSM;XLSB")
|
|
IF !EMPTY(m.lcXLSFile)
|
|
m.lcAliasWas = ALIAS()
|
|
m.lcGridAlias = THIS.gridobject.RECORDSOURCE
|
|
*!* m.lcTableForExpression = FILTER(this.gridobject.recordsource)
|
|
m.lcSheetName = "Sheet1"
|
|
STORE "" TO m.lcExcelFieldList, m.lcTableFieldList
|
|
FOR m.lnCounter = 1 TO THIS.gridobject.COLUMNCOUNT
|
|
m.loColumn = THIS.gridobject.COLUMNS(m.lnCounter)
|
|
IF m.loColumn.VISIBLE AND m.loColumn.WIDTH > 0
|
|
m.loHeaderObject = m.loColumn.CONTROLS(1)
|
|
m.lcExcelFieldList = m.lcExcelFieldList + IIF(!EMPTY(m.lcExcelFieldList), ',', '') ;
|
|
+ ALLTRIM(CHRTRAN(m.loHeaderObject.CAPTION,CHRTRAN(m.loHeaderObject.CAPTION,ALPHANUMERICCHR,""),""))
|
|
m.lcTableFieldList = m.lcTableFieldList + IIF(!EMPTY(m.lcTableFieldList), ',', '') ;
|
|
+ m.loColumn.CONTROLSOURCE
|
|
ENDIF
|
|
ENDFOR
|
|
*!* MARIUS
|
|
CopyToExcelSimple(m.lcXLSFile, m.lcSheetName, m.lcGridAlias, m.lcExcelFieldList, m.lcTableFieldList, FILTER(m.lcGridAlias))
|
|
*!* CopyToExcel(m.lcXLSFile, m.lcSheetName, m.lcGridAlias, m.lcExcelFieldList, m.lcTableFieldList, FILTER(m.lcGridAlias))
|
|
*!* MARIUS ^
|
|
IF FILE(m.lcXLSFile)
|
|
m.lcFileName = JUSTFNAME(m.lcXLSFile)
|
|
IF MESSAGEBOX('The File ' + m.lcFileName + CHR(13) + 'was successfully exported.' + CHR(13) +;
|
|
'Would you like to open it now?',36,'EXCEL EXPORT SUCCESSFUL') = 6
|
|
TRY
|
|
*!* MARIUS
|
|
*!* m.loExcelApp = CREATEOBJECT("EXCEL.APPLICATION")
|
|
*!* m.loWorkBook = m.loExcelApp.Workbooks.OPEN(m.lcXLSFile)
|
|
*!* m.loExcelApp.VISIBLE = .T.
|
|
OPEN_DEFAULT_APP(m.lcXLSFile)
|
|
*!* MARIUS ^
|
|
CATCH
|
|
MESSAGEBOX("The system encountered a problem opening the Excel document.",64,"Problem Encountered")
|
|
ENDTRY
|
|
ENDIF
|
|
ENDIF
|
|
IF m.lcAliasWas != ALIAS() AND USED(m.lcAliasWas)
|
|
SELECT (m.lcAliasWas)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE deletetemplate
|
|
LOCAL lcTemplateName
|
|
IF !EMPTY(thisform.combo1.DisplayValue)
|
|
IF MESSAGEBOX("Are you sure you want to delete the '" + ALLTRIM(thisform.combo1.DisplayValue) + "' template?",36,"Confirmation Required") = 6
|
|
m.lcTemplateName = UPPER(ALLTRIM(thisform.gridhierarchy)) + ":" + ALLTRIM(thisform.combo1.DisplayValue)
|
|
thisform.gridextrasobject.templatedelete(m.lcTemplateName)
|
|
ENDIF
|
|
thisform.gettemplates()
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE gettemplates
|
|
Local lcTemplateTable, lcTemplateTableJustStem
|
|
If Type("gcTempPath")<>"U"
|
|
lcTempPath = gcTempPath
|
|
Else
|
|
lcTempPath = Sys(2023)
|
|
Endif
|
|
m.lcTemplateTable = lcTempPath + This.gridextrasobject.templatetable
|
|
m.lcTemplateTableJustStem = Juststem(m.lcTemplateTable)
|
|
If !File(m.lcTemplateTable)
|
|
CREATE table (m.lcTemplateTable) (pkid I(4) Autoinc,template C(50),gridname C(254),sortasc L(1),colname C(50),filtercust M(4),filtercol M(4),filterglob M(4),globala C(10))
|
|
Index On pkid Tag pkid
|
|
Use In (m.lcTemplateTable)
|
|
Endif
|
|
If Type("m.lcTemplateTable") = "C" And File(m.lcTemplateTable)
|
|
If !Used(m.lcTemplateTableJustStem)
|
|
Use (m.lcTemplateTable) In 0 Shared
|
|
Endif
|
|
Thisform.combo1.RowSource = ""
|
|
Select template From (m.lcTemplateTableJustStem) Where .F. Into Cursor (Thisform.templatecursorname) Readwrite
|
|
Insert Into (Thisform.templatecursorname) Values ("")
|
|
Insert Into (Thisform.templatecursorname) ;
|
|
SELECT template From (m.lcTemplateTableJustStem) ;
|
|
WHERE !Deleted() And Upper(Alltrim(gridname)) == Upper(Alltrim(Thisform.gridhierarchy)) ;
|
|
ORDER By 1
|
|
Go Top In (Thisform.templatecursorname)
|
|
Thisform.combo1.RowSource = Thisform.templatecursorname
|
|
Thisform.combo1.RowSourceType = 2
|
|
Thisform.combo1.DisplayValue = ""
|
|
Thisform.combo1.Refresh()
|
|
Endif
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
LPARAMETERS toParentForm, toGridObject, toGridExtrasObject
|
|
thisform.TemplateCursorName = SYS(2015)
|
|
thisform.Icon = _screen.icon
|
|
thisform.parentform = m.toParentForm
|
|
thisform.gridobject = m.toGridObject
|
|
thisform.gridhierarchy = Sys(1272, m.toGridObject)
|
|
thisform.gridextrasobject = m.toGridExtrasObject
|
|
thisform.GetTemplates()
|
|
thisform.shape5.ZOrder(1)
|
|
thisform.shape6.ZOrder(1)
|
|
ENDPROC
|
|
|
|
PROCEDURE Load
|
|
SET PROCEDURE TO gridextrasprocs.prg ADDITIVE
|
|
ENDPROC
|
|
|
|
PROCEDURE Unload
|
|
USE IN SELECT(this.templatecursorname)
|
|
ENDPROC
|
|
|
|
PROCEDURE Combo1.InteractiveChange
|
|
IF !EMPTY(this.DisplayValue)
|
|
SET STEP ON
|
|
thisform.gridextrasobject.templateapply(UPPER(ALLTRIM(thisform.gridhierarchy)) + ":" + ALLTRIM(this.DisplayValue))
|
|
this.SetFocus()
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Command1.Click
|
|
thisform.copytoexcel()
|
|
ENDPROC
|
|
|
|
PROCEDURE Command2.Click
|
|
thisform.Release()
|
|
ENDPROC
|
|
|
|
PROCEDURE Command3.Click
|
|
SET STEP ON
|
|
IF thisform.addtemplate()
|
|
thisform.getTemplates()
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Command4.Click
|
|
IF thisform.combo1.ListIndex > 1
|
|
thisform.deletetemplate()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|