Initial: flux text FoxBin2Prg (git urmareste .??2 in-arbore, binarele VFP git-ignored)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
267
clase/gridsort.vc2
Normal file
267
clase/gridsort.vc2
Normal file
@@ -0,0 +1,267 @@
|
||||
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
|
||||
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
*< FOXBIN2PRG: Version="1.21" SourceFile="gridsort.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
|
||||
*
|
||||
*
|
||||
DEFINE CLASS gridsort AS custom
|
||||
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
|
||||
|
||||
*<DefinedPropArrayMethod>
|
||||
*m: delidx && Delete IDX files if you use a Table
|
||||
*m: gridsort && Sort the column Ascending and Descending
|
||||
*m: readme && Read Me First
|
||||
*m: settooltip
|
||||
*m: showmenu && show a menu containing the name of all column and let user choose to see what he/she wants
|
||||
*p: ctooltip
|
||||
*p: isdelidx
|
||||
*p: ocolumnreference
|
||||
*</DefinedPropArrayMethod>
|
||||
|
||||
*<PropValue>
|
||||
ctooltip =
|
||||
isdelidx = .T.
|
||||
Name = "gridsort"
|
||||
ocolumnreference = .NULL.
|
||||
Tag = ""
|
||||
*</PropValue>
|
||||
|
||||
PROCEDURE delidx && Delete IDX files if you use a Table
|
||||
***************************************************
|
||||
* Method........: DelIdx
|
||||
* Description...: This method automatically delete Idx files if you use thisa class with a table and set isdelidx to .T.
|
||||
* Date..........: 10 January 2006
|
||||
* Author........: Ali Mohammad Hosein zadeh
|
||||
***************************************************
|
||||
RETURN
|
||||
|
||||
fnum=Adir(fnames,'*.idx')
|
||||
For i=1 To fnum
|
||||
If 'THISFORM'$Upper(fnames(i,1))
|
||||
Delete File Fullpath(fnames(i,1))
|
||||
Endif
|
||||
Endfor
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Destroy
|
||||
If This.isdelidx
|
||||
This.delidx
|
||||
Endif
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE gridsort && Sort the column Ascending and Descending
|
||||
***************************************************
|
||||
* Method........: GridSort
|
||||
* Description...: This method sort the column that you click
|
||||
* Date..........: 02 October 2005
|
||||
* Update........: 10 December 2005
|
||||
* Author........: Ali Mohammad Hosein zadeh
|
||||
***************************************************
|
||||
Parameters ocolumn
|
||||
Private cobj,fname,fldname,ccount,cstr,nstr,cname
|
||||
*!* Procces to get the path to form
|
||||
LOCAL lcFname, llReorder
|
||||
llReorder = .F.
|
||||
|
||||
*!* 21.11.2006
|
||||
*!* mutu.marius
|
||||
&& daca nu se transmite nimic - se ordoneaza dupa ultima coloana ordonata
|
||||
IF (PCOUNT() = 0 OR TYPE('oColumn') # 'O') AND !ISNULL(this.oColumnreference)
|
||||
oColumn = this.oColumnreference
|
||||
llReorder = .T.
|
||||
ENDIF
|
||||
|
||||
IF TYPE('oColumn') # 'O'
|
||||
RETURN
|
||||
ENDIF
|
||||
|
||||
IF ISNULL(oColumn)
|
||||
RETURN
|
||||
ENDIF
|
||||
|
||||
&& se retine ultima coloana ordonata
|
||||
this.oColumnreference = oColumn
|
||||
|
||||
cstr='ocolumn.'
|
||||
nstr=''
|
||||
cname=''
|
||||
Do While .T.
|
||||
cstr=cstr+'parent.'
|
||||
nstr=cstr+'baseclass'
|
||||
If &nstr='Form'
|
||||
Exit
|
||||
Else
|
||||
nstr=cstr+'name'
|
||||
cname=&nstr+'.'+cname
|
||||
Endif
|
||||
Enddo
|
||||
*!* Make a temporary name for Idx file
|
||||
cobj='ThisForm.'+cname+ocolumn.Name+"."+ocolumn.CurrentControl+".ControlSource"
|
||||
fname = Strtran(cobj,'.','')
|
||||
lcfname=ADDBS(SYS(2023)) + fname
|
||||
*!* Assign field name to fldname
|
||||
fldname=&cobj
|
||||
*!* Assign The number or columns to ccount
|
||||
cobj="ThisForm."+cname+"COLUMNCOUNT"
|
||||
ccount=&cobj
|
||||
*!* CLEAR any column's picture
|
||||
For i=1 To ccount
|
||||
cobj="ThisForm."+cname+"columns("+Alltrim(Str(i))+").header1.picture=''"
|
||||
&cobj
|
||||
ENDFOR
|
||||
*!* Find out if it's first click or DESCENDING order
|
||||
If Empty(ocolumn.Tag) OR (ocolumn.Tag="Down" AND !llReorder) OR (llReorder AND ocolumn.Tag="Up")
|
||||
*!* INDEX ON field
|
||||
IF TYPE(fldname) = 'C'
|
||||
lcIndexName = 'left(' + fldname + ', 90)'
|
||||
INDEX on &lcIndexName To (lcfname)
|
||||
ELSE
|
||||
Index On &fldname To (lcfname)
|
||||
ENDIF
|
||||
*!* SAVE order of column
|
||||
ocolumn.Tag="Up"
|
||||
*!* Assign the picture
|
||||
cobj="ThisForm."+cname+ocolumn.Name+".header1.picture='up.bmp'"
|
||||
&cobj
|
||||
*!* FINALLY set order
|
||||
Set Order To (fname)
|
||||
Else
|
||||
*!* INDEX ON field
|
||||
IF TYPE(fldname) = 'C'
|
||||
lcIndexName = 'left(' + fldname + ', 90)'
|
||||
INDEX on &lcIndexName To (lcfname)
|
||||
ELSE
|
||||
Index On &fldname To (lcfname)
|
||||
ENDIF
|
||||
*!* SAVE order of column
|
||||
ocolumn.Tag="Down"
|
||||
*!* Assign the picture
|
||||
cobj="ThisForm."+cname+ocolumn.Name+".header1.picture='down.bmp'"
|
||||
&cobj
|
||||
*!* FINALLY set order
|
||||
Set Order To (fname) Descending
|
||||
Endif
|
||||
*!* Refresh the grid
|
||||
Go Top
|
||||
cobj="ThisForm."+cname+"Refresh"
|
||||
&cobj
|
||||
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Init
|
||||
*!* Set Classlib To Locfile('wizbtns','vcx')
|
||||
*!* Set Procedure To Locfile('gridproc','prg')
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE readme && Read Me First
|
||||
* **********************************************************************************************
|
||||
* GridSort.vcx - Ali Mohammad Hosein Zadeh - info@binyazprograms.com - 10 January 2006 *
|
||||
* **********************************************************************************************
|
||||
* Updated : 10 January 2006
|
||||
* Updated : 10 December 2005
|
||||
* **********************************************************************************************
|
||||
* Description:
|
||||
* ------------
|
||||
* A class for Visual FoxPro 8.0,9.0 that do many things for your grid.
|
||||
*
|
||||
* Class exposes the following methods :
|
||||
* ------------------------------------
|
||||
* GridSort - Sort the columns ascending or descending automatically
|
||||
* SetToolTip - Sets the column's tooltip to it's ControlSource
|
||||
* ShowMenu - Show the main menu that you can hide or show colums and you can filter the table or cursor
|
||||
* DelIdx - For internal use.Delete Idx files if you use this class with a table and set isdelidx=.T.
|
||||
*
|
||||
* How to use :
|
||||
* ------------
|
||||
* Grid Sort :
|
||||
* It's enough to write this line in the header's click event:
|
||||
* ThisForm.gridsort1.gridsort(This.Parent)
|
||||
* SetToolTip :
|
||||
* It's enough to write this line in the MouseMove of the column you want :
|
||||
* ThisForm.gridsort1.settooltip(This,nXCoord,nYCoord)
|
||||
* ShowMenu :
|
||||
* It's enough to write this line in the RightClick of the grid you want :
|
||||
* Thisform.gridsort1.showmenu(This)
|
||||
*
|
||||
* Limitations & Disclaimer:
|
||||
* -------------------------
|
||||
* I authorize gridsort.vcx to be used by anyone for anything in which you would like to use it.
|
||||
* Feel free to modify, hack, fold, spindle, mutilate or otherwise alter this class library
|
||||
* any way you see fit. You may freely distribute this class library and may even tell
|
||||
* your boss that you wrote it, just please don't post it back to the web with your name on it.
|
||||
* This class library appears to function correctly but has not been extensively tested.
|
||||
*
|
||||
* Please E-Mail me if you have any questions, comments, improvements, suggestions, bugs found,
|
||||
* bugs fixed or just to say "looky, I'm using it!".
|
||||
*
|
||||
* **********************************************************************************************
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE settooltip
|
||||
***************************************************
|
||||
* Method........: SetToolTip
|
||||
* Description...: This method sets the column's tooltip that you pass
|
||||
* Date..........: 10 January 2006
|
||||
* Author........: Ali Mohammad Hosein zadeh
|
||||
***************************************************
|
||||
Lparameters ocolumn,x,Y
|
||||
Local nRelRow_Out, nRelCol_Out,nWhere_Out
|
||||
ocolumn.Parent.SetFocus()
|
||||
ocolumn.Parent.Gridhittest(x,Y,@nWhere_Out,@nRelRow_Out,@nRelCol_Out)
|
||||
ocolumn.Parent.ActivateCell(nRelRow_Out, nRelCol_Out)
|
||||
If This.ctooltip<>Eval("ocolumn." + ocolumn.CurrentControl + ".value")
|
||||
This.ctooltip=ocolumn.Parent.ToolTipText
|
||||
ocolumn.Parent.ToolTipText=Eval("alltrim(ocolumn." + ocolumn.CurrentControl + ".value)")
|
||||
Endif
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE showmenu && show a menu containing the name of all column and let user choose to see what he/she wants
|
||||
***************************************************
|
||||
* Method........: ShowMenu
|
||||
* Description...: Show the main menu
|
||||
* Date..........: 10 January 2006
|
||||
* Author........: Ali Mohammad Hosein zadeh
|
||||
***************************************************
|
||||
Parameters ogrid
|
||||
If Type("ogrid")<>"O"
|
||||
Return
|
||||
ENDIF
|
||||
|
||||
Dimension nmenus(ogrid.ColumnCount,2)
|
||||
|
||||
For i=1 To ogrid.ColumnCount
|
||||
nmenus(i,1)=ogrid.Columns(i).header1.Caption
|
||||
nmenus(i,2)=ogrid.Columns(i).Visible
|
||||
ENDFOR
|
||||
|
||||
Define Popup popmenus SHORTCUT Relative From Mrow(),Mcol()
|
||||
|
||||
Define Bar 1 Of popmenus Prompt "All"
|
||||
Define Bar 2 Of popmenus Prompt "Costum"
|
||||
Define Bar 3 Of popmenus Prompt "\-"
|
||||
|
||||
Set Mark Of Bar 1 Of popmenus Empty(Filter())
|
||||
Set Mark Of Bar 2 Of popmenus !Empty(Filter())
|
||||
|
||||
On Selection Bar 1 Of popmenus Do All In gridproc
|
||||
On Selection Bar 2 Of popmenus Do custom_filter In gridproc
|
||||
|
||||
For i=4 To Alen(nmenus,1)+3
|
||||
Define Bar i Of popmenus Prompt nmenus(i-3,1)
|
||||
Set Mark Of Bar i Of popmenus To nmenus(i-3,2)
|
||||
cstr="ogrid.Columns("+Alltrim(Str(i-3))+").visible=!ogrid.Columns("+Alltrim(Str(i-3))+").visible"
|
||||
On Selection Bar i Of popmenus &cstr
|
||||
ENDFOR
|
||||
|
||||
ogrid.Refresh
|
||||
|
||||
Activate Popup popmenus
|
||||
|
||||
ENDPROC
|
||||
|
||||
ENDDEFINE
|
||||
Reference in New Issue
Block a user