www.pudn.com > jq_transfile.ARJ > SDKRPT.PRG
*ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
*º º
*º ÎļþÃû³Æ: SDKRpt º
*º ¹¦ ÄÜ: SDK for FoxProµÄ±¨±íÉú³É³ÌÐò º
*º °æ Ȩ: ±±¾©Ï£Íû¸ß¼¼Êõ¼¯ÍÅ º
*º ×÷ Õß: Âí¿Æ º
*º °æ±¾ÀúÊ·: ÐÞ¸ÄÈÕÆÚ ÐÞ¸ÄÕß ËµÃ÷ º
*º ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ º
*º 1996.06.08 Âí¿Æ ³ÌÐòµÚÒ»°æ º
*º º
*º Èë¿Ú²ÎÊý: RptName ©¤ ±¨±íÎļþÃû³Æ º
*º º
*ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ
para RptName
priv all like p*
if dbf()==""
do _Error in MisTool with "ÇëÏÈ´ò¿ªÄ³Ò»Êý¾Ý¿â!"
retu
endi
pcColor='N/W,W+/B,W+/W,W+/B,W/B,W+/B,W+/W,W/B,N/W,N+/W'
if !type("RPTNAME")=='C'
RptName=GetFileName()
if at('.',right(RptName,4))=0
RptName=RptName+".DBF"
endi
else
if at('.',right(RptName,4))=0
RptName=RptName+".DBF"
endi
if !file(RptName)
RptName=GetFileName()
endi
endi
if RptName==''
retu
endi
pnArea=sele(0)
sele 0
if !file(RptName)
pSafe=set("SAFE")
set safe off
crea TABLE &RptName (RPTHEAD M, RPTFOOT M, PAGEHEAD M,PAGEFOOT M,FIELDS M)
appe blan
set safe &pSafe
endi
use &RptName
pRptAlias=alias()
set memo to 1024
pcRptHead=RptHead
pcRptFoot=RptFoot
pcPageHead=PageHead
pcPageFoot=PageFoot
pnSelFldNum=iif(meml(FIELDS)=0,0,meml(FIELDS)-1)
if pnSelFldNum!=0
dime pSelFldLst[pnSelFldNum]
for pI=1 to pnSelFldNum
pSelFldLst[pI]=mline(FIELDS,pI)
endf
endi
pcColor='N/W,W+/B,W+/W,W+/B,W/B,W+/B,W+/W,W/B,N/W,N+/W'
=DefiWind("FLDSEL",1,1,24,78,"colo (pcColor) titl '±¨±í¸ñʽÉè¼Æ'")
=ActiWind("FLDSEL")
defi popu SFldPop mover mult scro mark "" colo (pcColor)
for pI=1 to pnSelFldNum
defi bar pI of SFldPop prom " * "+pSelFldLst[pI]+": "+ChnField(pSelFldLst[pI])
endf
pnBarNo=pnSelFldNum
sele (pnArea)
do DefiFldBar
pcRela=set("RELA")
if !pcRela==""
for pI=1 to occu(" INTO ",pcRela)
pnPos1=at(" INTO ",pcRela,pI)+6
? pnPos1
pnLen=at(",",subs(pcRela,pnPos1))
if pnLen=0
pnLen=len(subs(pcRela,pnPos1))+1
endi
pcDBF=subs(pcRela,pnPos1,pnLen-1)
? pnLen
? pcDBF
wait
sele (pcDBF)
do DefiFldBar
endf
endi
sele (pnArea)
pcEnter=on("KEY","ENTER")
pcSpaceBar=on("KEY","SPACEBAR")
*on key label Enter do EnterHandle
pnDsnOp=1
pnSFldSel=1
on key label ENTER do MarkBar
on key label SPACEBAR do MarkBar
do whil pnDsnOp<=2
=cls()
if pnDsnOp=1
do BodyDesign
else
do LayoutDesign
endi
=GetCtrl(21,6,14,3, "pnDsnOp","func '*H \><>º
\*º º
\*ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ
pTmpName=sys(3)
\do _OutReport in MisTool with "<>","±¨±í"
\retu
\
\proc <>
pnSelFldNum=iif(meml(FIELDS)=0,0,meml(FIELDS)-1)
if pnSelFldNum!=0
dime pSelFldLst[pnSelFldNum,3]
for pI=1 to pnSelFldNum
pSelFldLst[pI,1]=mline(FIELDS,pI)
pSelFldLst[pI,2]=ChnField(pSelFldLst[pI,1])
pSelFldLst[pI,2]=subs(pSelFldLst[pI,2],at(".",pSelFldLst[pI,2])+1)
if len(pSelFldLst[pI,2])>GetSize(pSelFldLst[pI,1])
pSelFldLst[pI,3]=len(pSelFldLst[pI,2])
else
pSelFldLst[pI,3]=GetSize(pSelFldLst[pI,1])
endi
endf
endi
\go top
for pI=1 to meml(RptHead)
\? "<>"
endf
\pPageHead=.t.
\pLineNo=<>
if pnSelFldNum!=0
\do whil !eof()
\ if pPageHead
\ pPageHead=.f.
for pI=1 to meml(PageHead)
\ ? "<>"
endf
pTopStr="Ú"
pSepStr="Ã"
pBotStr="À"
for pI=1 to pnSelFldNum
pTopStr=pTopStr+repl('Ä',pSelFldLst[pI,3])+"Â"
pSepStr=pSepStr+repl('Ä',pSelFldLst[pI,3])+"Å"
pBotStr=pBotStr+repl('Ä',pSelFldLst[pI,3])+"Á"
endf
pTopStr=left(pTopStr,len(pTopStr)-1)+"¿"
pSepStr=left(pSepStr,len(pSepStr)-1)+"´"
pBotStr=left(pBotStr,len(pBotStr)-1)+"Ù"
\ ? "<>"
pFldStr="³"
for pI=1 to pnSelFldNum
pFldStr=pFldStr+repl(' ',iif(pSelFldLst[pI,3]>len(pSelFldLst[pI,2]),;
(pSelFldLst[pI,3]-len(pSelFldLst[pI,2]))/2,0));
+pSelFldLst[pI,2]+;
repl(' ',iif(pSelFldLst[pI,3]>len(pSelFldLst[pI,2]),;
(pSelFldLst[pI,3]-len(pSelFldLst[pI,2]))/2+0.5,0))+"³"
endf
\ ? "<>"
\ endi
\ if pLineNo<_PLENGTH
\ pLineNo=pLineNo+2
\ ? "<>"
pStr="³"
for pI=1 to pnSelFldNum
if pSelFldLst[pI,3]>GetSize(pSelFldLst[pI,1])
pStr=pStr+repl(' ',(pSelFldLst[pI,3]-GetSize(pSelFldLst[pI,1]))/2)
endi
if pI=1
\ ? "<>"
else
\ ?? "<>"
endi
\ ?? <>
if pSelFldLst[pI,3]>GetSize(pSelFldLst[pI,1])
pStr=repl(' ',(pSelFldLst[pI,3]-GetSize(pSelFldLst[pI,1]))/2+0.5)
else
pStr=""
endi
pStr=pStr+"³"
endf
\ ?? "<>"
\ else
\ pLineNo=<>
\ pPageHead=.t.
\ ? "<>"
for pI=1 to meml(PageFoot)
\ ? "<>"
endf
\ if !eof()
\ eject
\ endi
\ endi
\ skip
\endd
\if !pPageHead
\ ? "<>"
\endi
endi
for pI=1 to meml(RptFoot)
\? "<>"
endf
\ejec
\retu
set text to
set text off
set cons &pCons
retu
*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
*³ Function: GetSize ³
*³ Description: ³
*³ ³
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
func GetSize
para pFldName
retu fsize(subs(pFldName,at(".",pFldName)+1),left(pFldName,at(".",pFldName)-1))
*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
*³ Function: GetFileName ³
*³ Description: ³
*³ ³
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
func GetFileName
priv pFileName
pFileName=repl(' ',128)
=DefiWind("GetName",4,15,12,64,"colo &pcColor titl '×¢ Òâ'")
=ActiWind("GetName")
@2,3 say "ÇëÊäÈ뱨±íÎļþÃû:"
=Get(2,21,'pFileName',"pict repl('X',128) vali !pFileName=='' size 1,24")
=GetCtrl(5,10,12,6,"pOpSel","func '*H \