函數(shù)名: f_dw_Zoom
Written by Vial.Z
參數(shù):
datawindow dw_print--> 要打印的數(shù)據(jù)窗口
integer nMinZoom --> 極限縮小比例(縮小范圍不能太大,否則不清晰)
返回值:
-1 error
0 找不到合適的值
>0 找到的合理值
作用:
紙張大小滿足數(shù)據(jù)窗口的要求,返回100;
當(dāng)數(shù)據(jù)窗口寬度太大,無(wú)法在一頁(yè)紙張上打印時(shí),該程序?qū)ふ乙粋€(gè)縮小比例值,
使得數(shù)據(jù)窗口的內(nèi)容恰好能在當(dāng)前設(shè)定的紙張下打印出來(lái)。
如窗口縮小到85%可以在一頁(yè)上打印時(shí),返回值為85
-------------------------------------------------------*/
if not IsValid(dw_print) then
return -1
end if
dw_print.object.datawindow.print.preview = true /*預(yù)覽模式必須打開*/
dw_print.SetRedraw(FALSE) /*調(diào)整放大比例過(guò)程中,停止重繪控件,節(jié)省程序時(shí)間*/
string ls_H_Page /*水平打印占據(jù)的頁(yè)數(shù)*/
string ls_zoom /*設(shè)定的縮小百分比整數(shù)值*/
Integer li_max = 100 /*從百分百大小開始測(cè)試*/
integer li_min /*極限縮小值,最多縮小到nn%*/
Integer li_use /*當(dāng)前測(cè)試值*/
Integer li_OK = 0 /*可用值*/
Integer li_count = 0 /*算法循環(huán)執(zhí)行的次數(shù)*/
li_min = nMinZoom /*賦最小測(cè)試值*/
li_use = li_max /*從原始大小(100)開始測(cè)試。逐漸縮小放大比例*/
do while li_min <= li_max
li_count ++
/*調(diào)整 zoom值,并測(cè)試當(dāng)前寬度打印時(shí)橫向所占的面數(shù)*/
ls_zoom = string(li_use)
dw_print.modify("datawindow.zoom = " + ls_zoom)
ls_H_Page = dw_print.describe( " evaluate('PageCountAcross()',"+string(dw_print.object.datawindow.firstrowonpage)+")" )
if Integer(ls_H_Page) = 1 then /*一頁(yè)足以打印出來(lái)*/
li_OK = li_use /*記錄這個(gè)可用的縮小比例*/
li_min = li_use + 1
else
li_max = li_use - 1
end if
choose case li_max - li_min
case IS < 0
exit
case 0
li_use = li_min
case 1
li_use = li_min
case else
li_use = Int((li_max + li_min)/2) /*小于等于的最小整數(shù)*/
end choose
loop
/*還原窗口原大小*/
if li_OK <> 100 then
dw_print.modify("datawindow.zoom = 100 " )
end if
dw_print.object.datawindow.print.preview = false
dw_print.SetRedraw(TRUE) /*恢復(fù)重繪控件*/
return li_OK
Written by Vial.Z
參數(shù):
datawindow dw_print--> 要打印的數(shù)據(jù)窗口
integer nMinZoom --> 極限縮小比例(縮小范圍不能太大,否則不清晰)
返回值:
-1 error
0 找不到合適的值
>0 找到的合理值
作用:
紙張大小滿足數(shù)據(jù)窗口的要求,返回100;
當(dāng)數(shù)據(jù)窗口寬度太大,無(wú)法在一頁(yè)紙張上打印時(shí),該程序?qū)ふ乙粋€(gè)縮小比例值,
使得數(shù)據(jù)窗口的內(nèi)容恰好能在當(dāng)前設(shè)定的紙張下打印出來(lái)。
如窗口縮小到85%可以在一頁(yè)上打印時(shí),返回值為85
-------------------------------------------------------*/
if not IsValid(dw_print) then
return -1
end if
dw_print.object.datawindow.print.preview = true /*預(yù)覽模式必須打開*/
dw_print.SetRedraw(FALSE) /*調(diào)整放大比例過(guò)程中,停止重繪控件,節(jié)省程序時(shí)間*/
string ls_H_Page /*水平打印占據(jù)的頁(yè)數(shù)*/
string ls_zoom /*設(shè)定的縮小百分比整數(shù)值*/
Integer li_max = 100 /*從百分百大小開始測(cè)試*/
integer li_min /*極限縮小值,最多縮小到nn%*/
Integer li_use /*當(dāng)前測(cè)試值*/
Integer li_OK = 0 /*可用值*/
Integer li_count = 0 /*算法循環(huán)執(zhí)行的次數(shù)*/
li_min = nMinZoom /*賦最小測(cè)試值*/
li_use = li_max /*從原始大小(100)開始測(cè)試。逐漸縮小放大比例*/
do while li_min <= li_max
li_count ++
/*調(diào)整 zoom值,并測(cè)試當(dāng)前寬度打印時(shí)橫向所占的面數(shù)*/
ls_zoom = string(li_use)
dw_print.modify("datawindow.zoom = " + ls_zoom)
ls_H_Page = dw_print.describe( " evaluate('PageCountAcross()',"+string(dw_print.object.datawindow.firstrowonpage)+")" )
if Integer(ls_H_Page) = 1 then /*一頁(yè)足以打印出來(lái)*/
li_OK = li_use /*記錄這個(gè)可用的縮小比例*/
li_min = li_use + 1
else
li_max = li_use - 1
end if
choose case li_max - li_min
case IS < 0
exit
case 0
li_use = li_min
case 1
li_use = li_min
case else
li_use = Int((li_max + li_min)/2) /*小于等于的最小整數(shù)*/
end choose
loop
/*還原窗口原大小*/
if li_OK <> 100 then
dw_print.modify("datawindow.zoom = 100 " )
end if
dw_print.object.datawindow.print.preview = false
dw_print.SetRedraw(TRUE) /*恢復(fù)重繪控件*/
return li_OK