📄 bb.prg
字号:
do createtempfrx
PROCEDURE createtempfrx
LOCAL lnmargin,;
lcreport,;
loreport,;
lopageheader,;
lodetail,;
losummary,;
lnnumberofgroups,;
lni,;
lofield,;
lnwidth,;
lafields[1],;
lnselectedfields,;
lcfieldname,;
lccolumn,;
lcField,;
lcpicture,;
lnalign,;
lcfontname,;
lnfontsize,;
lnfieldwidth,;
llgroupcount,;
lctotal,;
logroup,;
loobject,;
logroupfooter,;
lnlengthofstring,;
lnhpos,;
lnvpos,;
lnj,;
lnpagenowidth,;
lovariable,;
lopagefooter
* WITH THIS
IF TYPE('.oFieldsCollection')<>'O' OR ISNULL(.ofieldscollection)
RETURN .F.
ENDIF
lnmargin = IIF(TYPE('.nMargin')='N', .nmargin, 0)
IF EMPTY(.ctempfrxname)
.ctempfrxname = .tempfile('FRX','')
ENDIF
lcreport = .ctempfrxname
loreport = CREATEOBJECT('itReportFile')
loreport.creportfile = lcreport
loreport.lsummaryband = .T.
loreport.nleftmargin = lnmargin
lopageheader = loreport.getreportband('Page Header')
lopageheader.nheight = 8
*-- ?????
lodetail = loreport.getreportband('Detail')
lodetail.nheight = 1.5
lodetail.conentry = 'loReport.OnEntryDetail()'
losummary = loreport.getreportband('Summary')
losummary.nheight = 3
lnnumberofgroups = 0
lnwidth = 0
IF .ofieldscollection.COUNT>0
.ofieldscollection.getfieldarray(@lafields)
ENDIF
lnselectedfields = .ofieldscollection.COUNT
FOR lni = 1 TO lnselectedfields
lcfieldname = lafields(lni,2)
lofield = .ofieldscollection.ITEM(lcfieldname)
lnfieldwidth = lofield.nwidth
IF lnfieldwidth>0
lccolumn = lofield.ccaption
lcField = UPPER(ALLTRIM(lofield.cfieldexpr))
IF .lstripalias
lcField = STRTRAN(lcField, UPPER(lofield.calias)+'.')
ENDIF
lcpicture = IIF(EMPTY(lofield.cformat), '', '@'+lofield.cformat+' ')+lofield.cinputmask
IF lofield.cfieldtype$'NFIBY' AND '$'$lofield.cformat
lcpicture = STRTRAN(lcpicture, '9', '99', 1, 1)
lnfieldwidth = lnfieldwidth+IIF('$'$lofield.cformat, 1, 0)
ENDIF
lnalign = lofield.nfontalign
lcfontname = IIF(EMPTY(lofield.cfontname), .cfontname, lofield.cfontname)
lnfontsize = IIF(EMPTY(lofield.nfontsize), .nfontsize, lofield.nfontsize)
lctotal = lofield.ctotaltype
DO CASE
CASE lnalign=0
lcalign = 'LEFT'
CASE lnalign=1
lcalign = 'RIGHT'
CASE lnalign=2
lcalign = 'CENTER'
ENDCASE
*-- ????
lnhpos = IIF(lofield.nhposition=-1, lnwidth, lofield.nhposition)
loobject = lopageheader.ADDITEM('Text')
loobject.cexpression = lccolumn
loobject.nvposition = 6.8
loobject.nhposition = lnhpos+1
loobject.lfontbold = .T.
IF lnalign=1
loobject.nhposition = lnhpos+MAX(lnfieldwidth-LEN(lccolumn), 0)
ENDIF
loobject.calignment = lcalign
loobject.cfontname = lcfontname
loobject.nfontsize = lnfontsize
*******************************
*-- ?????
loobject = lopageheader.ADDITEM('Line')
loobject.nvposition = 5.8
loobject.nhposition = lnhpos
loobject.lvertical = .T.
loobject.nheight = 2.5
*******************************
*-- ?????
loobject = lodetail.ADDITEM('Field')
loobject.cexpression = lcField
loobject.nwidth = lnfieldwidth
loobject.nvposition = 0.3
loobject.nhposition = lnhpos +0.5
loobject.calignment = lcalign
loobject.cpicture = lcpicture
loobject.lfontbold = lofield.lfontbold
loobject.lfontitalic = lofield.lfontitalic
loobject.lfontunderline = lofield.lfontunderline
loobject.cfontname = lcfontname
loobject.nfontsize = lnfontsize
loobject.nforecolor = lofield.nforecolor
loobject.nbackcolor = lofield.nbackcolor
loobject.lprintrepeats = NOT lofield.lsuppress
loobject.lstretch = .T.
lnwidth = lnhpos+lnfieldwidth+1
*******************************
*-- ?????
loobject = lodetail.ADDITEM('Line')
loobject.nvposition = -0.1
loobject.nhposition = lnhpos
loobject.lvertical = .T.
loobject.nheight = 1.6
loobject.lstretch = .T.
*******************************
ENDIF
ENDFOR
lnwidth = MAX(lnwidth-1, 0)
loobject = lopageheader.ADDITEM('Field')
loobject.cexpression = 'iif(type("loReport.cHeader") = "C", '+'loReport.cHeader, "")'
loobject.nwidth = lnwidth
loobject.nhposition = 0
loobject.nvposition = 1
loobject.calignment = 'LEFT'
loobject.lfontbold = .T.
loobject.cfontname = "??_GB2312"
loobject.nfontsize = 16
loobject = lopageheader.ADDITEM('Field')
loobject.cexpression = 'iif(type("loReport.dReportDate") $ "DT", '+'loReport.dReportDate, date())'
ldreportdate = .dreportdate
loobject.nwidth = IIF(TYPE("ldreportdate")='D', 10, 22)
loobject.nhposition = 0
loobject.nvposition = 3
loobject.lfontbold = .T.
loobject.cfontname = .cfontname
loobject.nfontsize = .nfontsize
lnpagenowidth = 3
loobject = lopageheader.ADDITEM('Text')
loobject.cexpression = '??:'
loobject.nvposition = 2
loobject.nhposition = MAX(lnwidth-(lnpagenowidth+4), 10)
loobject.lfontbold = .T.
loobject.cfontname = .cfontname
loobject.nfontsize = .nfontsize
loobject = lopageheader.ADDITEM('Field')
loobject.cexpression = '_pageno'
loobject.nwidth = lnpagenowidth
loobject.nvposition = 2
loobject.nhposition = MAX(lnwidth-lnpagenowidth, 15)
loobject.calignment = 'Right'
loobject.lfontbold = .T.
loobject.cfontname = .cfontname
loobject.nfontsize = .nfontsize
loobject = lopageheader.ADDITEM('BOX')
loobject.nwidth = lnwidth+2
loobject.nvposition = 5.8
loobject.nhposition = 0
*************************************************
*-- ?????
loobject = lodetail.ADDITEM('BOX')
loobject.nwidth = lnwidth+2
loobject.nheight = 1.6
loobject.nvposition = -0.1
loobject.nhposition = 0
loobject.lstretch = .T.
*************************************************
loobject = losummary.ADDITEM('Text')
loobject.cexpression = '?'
loobject.nvposition = 2
loobject.nhposition = 0
loobject.lfontbold = .T.
loobject.cfontname = .cfontname
loobject.nfontsize = .nfontsize
loobject = losummary.ADDITEM('Field')
loobject.cexpression = 'ltrim(str(lnCount)) + iif(lnCount = 1, "'+'???'+'", "'+'???'+'") + "'+'"'
loobject.nwidth = 21
loobject.nvposition = 2
loobject.nhposition = 8
loobject.lfontbold = .T.
loobject.cfontname = .cfontname
loobject.nfontsize = .nfontsize
lovariable = loreport.createvariable()
lovariable.cname = 'lnCount'
lovariable.cvalue = '1'
lovariable.cinitialvalue = '0'
lovariable.ctotaltype = 'Sum'
lopagefooter = loreport.getreportband('Page Footer')
lopagefooter.nheight = 1
loobject = lopagefooter.ADDITEM('Field')
loobject.cexpression = 'iif(type("loReport.cFooter") = "C", '+'loReport.cFooter, "")'
loobject.nwidth = lnwidth
loobject.nvposition = 0
loobject.nhposition = 0
loobject.calignment = 'Center'
loobject.lfontbold = .T.
loobject.cfontname = .cfontname
loobject.nfontsize = .nfontsize
loreport.SAVE()
.checkwidth(loreport)
loreport.RELEASE()
* ENDWITH
RETURN
ENDPROC
PROCEDURE releasemembers
LOCAL loobject
loobject = THIS.ofieldscollection
IF TYPE("loObject")='O'
this.ofieldscollection = .NULL.
ENDIF
DoDefault()
ENDPROC
PROCEDURE Destroy
LOCAL lcAlias, lcfrtfile
WITH THIS
lcAlias = SUBSTR(.ctempfrxname, RAT('\', .ctempfrxname)+1)
lcAlias = LEFT(lcAlias, RAT('.', lcAlias)-1)
IF USED(lcAlias)
USE IN (lcAlias)
ENDIF
IF FILE(.ctempfrxname)
ERASE (.ctempfrxname)
ENDIF
lcfrtfile = STRTRAN(UPPER(.ctempfrxname), '.FRX', '.FRT')
IF FILE(lcfrtfile)
ERASE (lcfrtfile)
ENDIF
ENDWITH
DoDefault()
ENDPROC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -