dsprptinfo.prg

来自「功能模块:报关操作,运输操作,报关查询,运输查询」· PRG 代码 · 共 194 行

PRG
194
字号
*-- 程序名称:DspRptInfo.prg
*-- 程序功能:显示报表文件的信息
*-- 使用方法:DspRptInfo ( )
*  文件名不用带扩展名,系统自动以FRX做报表文件的扩展名
*-- 返  回:无数据返回,只是提示一个MESSAGEBOX对话框
*-- 原创作者:红虎 
*-- 编写日期:2001年1月 

Func DspRptInfo
para RptFileName
*-- 检查参数的正确性
if type("RptFileName")#"C"
messagebox("参数传递错误!",16,"错误")
retu .f.
endif
*-- 检查参数是否带扩展名
if at(".",RptFileName)=0
  RptFilename = RptFilename + ".frx"
endif
*-- 判断报表文件是否存在
if !file("&RptFilename")
  messagebox("报表文件 &RptFilename 不存在!",16,"错误")
retu .f.
endif  

*-- 当前工作区
nCur_alias= select() 

*-- 打开报表文件在一个新的工作区,并用一个专用的别名
use "&RptFilename"in 0 alias cRptTable share
*-- 从次报表文件中获取相关的打印信息
sele cRptTable
loca for ObjType = 1 and ObjCode = 53  && 这两个是记录报表信息的特定信息,一般在第一条记录
if found()
*-- 获得该报表信息并存放一个变量中
rptinfo = allt(expr)  
else
*-- 获取失败
rptinfo  = "报表文件读取失败!"
endif  
use  && 关闭报表文件 

*-- 因报表信息占据多行,因此里面一定会有换行,所以会有字符 chr(13)
if !(chr(13) $ rptinfo)
messagebox(rptinfo,16,"错误")
retu .f.
endif 

*-- 选择原有工作区
select(nCur_alias) 

*-- 定义数组用来存放打印信息
*共需获得报表的9项内容 :系统名,名称,值...
Dime NeedInfo(11,3)
*-- 设备名
NeedInfo(1,1)  = "DRIVER"
NeedInfo(2,1)  = "DEVICE"
NeedInfo(3,1)  = "OUTPUT"
NeedInfo(4,1)  = "PAPERSIZE"
NeedInfo(5,1)  = "ORIENTATION"
NeedInfo(6,1)  = "DEFAULTSOURCE"
NeedInfo(7,1)  = "PRINTQUALITY" 

NeedInfo(8,1)  = "YESSOLUTION"
NeedInfo(9,1)  = "TTOPTION"
NeedInfo(10,1)  = "PAPERLENGTH"
NeedInfo(11,1)  = "PAPERWIDTH"
*-- 对应中文名
NeedInfo(1,2)  = "驱 动"
NeedInfo(2,2)  = "打印机"
NeedInfo(3,2)  = "位 置"
NeedInfo(4,2)  = "纸大小"
NeedInfo(5,2)  = "纸方向"
NeedInfo(6,2)  = "纸来源"
NeedInfo(7,2)  = "分辨率" 

NeedInfo(8,2)  = "质 量"
NeedInfo(9,2)  = "品 质"
NeedInfo(10,2)  = "长 度"
NeedInfo(11,2)  = "宽 度" 

*-- 对11个设备名循环读取相应的信息,存放在数组的相应的第三维
For n=1 to 11
temp_name = ""  && 临时值赋空先
nPos = at(NeedInfo(n,1),rptinfo) + len(NeedInfo(n,1)) + 1  && 开始提取的内容的首字位置
do while nPos>0  && 在信息里的一行进行循环
*-- 提取当前设备的等号后的信息内容
one_byte = substr(rptinfo,nPos,1)  && 提取一个字节
if one_byte = chr(13)  && 如果这个字节是尾,即换行了
exit  && 退出循环,继续下一个设备
else
    temp_name = temp_name + one_byte
endif  
nPos = nPos + 1&& 位置往后加1继续循环得到后面的信息直到遇到换行符号
enddo
NeedInfo(n,3)= temp_name&& 一个信息得到,存放起来
Endfor 

*-- 上面所得到的信息有些只是些代码,需要继续对一些数据进行再处理,如纸的方向,大小等 

*-- 对纸的方向
Newvalue = NeedInfo(5,3)
do case
case Newvalue = "0"&& 纵向
 Newvalue = "纵向"
case Newvalue = "1"&& 横向
 Newvalue = "横向"
endcase
NeedInfo(5,3) = Newvalue 

*-- 对纸的大小
nPageno = Int(val(NeedInfo(4,3))) 

if nPageno = 256&& 自定义
NeedInfo(4,3) = "自定义尺寸: " + NeedInfo(10,3) + "*" + NeedInfo(11,3) +" mm"
else
if nPageno>=1 and nPageno<=41
dime paper_list(41)
paper_list(1)= "Letter, 8 1/2 x 11 in"
paper_list(2)= "Letter Small, 8 1/2 x 11 in"
paper_list(3)= "Tabloid, 11 x 17 in"
paper_list(4)= "Ledger, 17 x 11 in"
paper_list(5)= "Legal, 8 1/2 x 14 in"
paper_list(6)= "Statement, 5 1/2 x 8 1/2 in"
paper_list(7)= "Executive, 7 1/4 x 10 1/2 in"
paper_list(8)= "A3, 297 x 420 mm"
paper_list(9)= "A4, 210 x 297 mm"
paper_list(10)= "A4, Small 210 x 297 mm"
paper_list(11)= "A5, 148 x 210 mm"
paper_list(12)= "B4, 250 x 354 mm"
paper_list(13)= "B5, 182 x 257 mm"
paper_list(14)= "Folio, 8 1/2 x 13 in"
paper_list(15)= "Quarto, 215 x 275 mm"
paper_list(16)= "10 x 14 in"
paper_list(17)= "11 x 17 in"
paper_list(18)= "Note, 8 1/2 x 11 in"
paper_list(19)= "Envelope #9, 3 7/8 x 8 7/8 in"
paper_list(20)= "Envelope #10, 4 1/8 x 9 1/2 in"
paper_list(21)= "Envelope #11, 4 1/2 x 10 3/8 in"
paper_list(22)= "Envelope #12, 4 1/2 x 11 in"
paper_list(23)= "Envelope #14, 5 x 11 1/2 in"
paper_list(24)= "C size sheet"
paper_list(25)= "D size sheet"
paper_list(26)= "E size sheet"
paper_list(27)= "Envelope DL, 110 x 220 mm"
paper_list(28)= "Envelope C5, 162 x 229 mm"
paper_list(29)= "Envelope C3, 324 x 458 mm"
paper_list(30)= "Envelope C4, 229 x 324 mm"
paper_list(31)= "Envelope C6, 114 x 162 mm"
paper_list(32)= "Envelope C65, 114 x 229 mm"
paper_list(33)= "Envelope B4, 250 x 353 mm"
paper_list(34)= "Envelope B5, 176 x 250 mm"
paper_list(35)= "Envelope B6, 176 x 125 mm"
paper_list(36)= "Envelope, 110 x 230 mm"
paper_list(37)= "Envelope Monarch, 3 7/8 x 7.5 in"
paper_list(38)= "6 3/4 Envelope, 3 5/8 x 6 1/2 in"
paper_list(39)= "US Std Fanfold, 14 7/8 x 11 in"
paper_list(40)= "German Std Fanfold, 8 1/2 x 12 in"
paper_list(41)= "German Legal Fanfold, 8 1/2 x 13 in "

NeedInfo(4,3) = paper_list(nPageno)
else
*-- 其他
NeedInfo(4,3) = "其他类型纸张 ..."
endif
endif 

*-- 纸张来源
Newvalue = NeedInfo(6,3)
do case
case Newvalue = "8"
Newvalue = "进纸箱"
case Newvalue = "4"
Newvalue = "手动进纸"
case Newvalue = "265"
Newvalue = "送纸盒1"
case Newvalue = "266"
Newvalue = "送纸盒2"
endcase
NeedInfo(6,3) = Newvalue 

*-- 分别率
NeedInfo(7,3) = NeedInfo(7,3) + " x 180" 


rptinfo = ""&& 要提示的信息的内容 

for n = 1 to 7
rptinfo = rptinfo + NeedInfo(n,2) + ": " + NeedInfo(n,3) + iif(n=9,'',chr(13) +chr(13))
endfor 

messagebox(rptInfo,64,"报表信息: " + RptFileName)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?