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 + -
显示快捷键?