hur.cn - 华软网

 热门搜索

数据窗口打印问题

  作者:未知    来源:网络    更新时间:2018/10/12
一个数据窗口很宽,横向打印需打二页。但记录很少,一张纸高度方向足够打几份。整个表格就象一把横放的直尺,现在打印这把“直尺”需用二张纸,我希望把“直尺”打印在一张上,即左半“直尺”打印在纸的上半部,右半“直尺”打印在下半部。不知怎样措置惩罚,请高手指点,谢谢!
------华软网友回答------
能够再做两个datawindow,一个保存左半“直尺”,一个保存右半“直尺”,然后用“两个数据窗口打印到一张纸上”的技术。
------华软网友回复------
up
------华软网友回复------
数据窗口的print属性的上边距下边距调大点,剩下的不用设置,pb就给完成了
------华软网友回复------
设置横向打印不行吗?
另外还能够把数据窗口作成freeform的随便怎么放都行的
------华软网友回复------
想现成的解决是没有措施的拉,想一些傻措施吧
------华软网友回复------
设置纸张打印高度,将纸张高度设置为原来的一半或小与一半的巨细,打印的时候它就自然会打印在统一张纸上!
------华软网友回复------
谢谢列位朋友的指点。实际上我打印的“直尺”型的报表,是一个大表中的一个分组,各个分组的记录数是不同的,我希望记录少的组打在一张纸上,记录多的组打在二张纸上,不知大家有什么措施,谢谢!!!
------华软网友回复------
期待,学习ing

------华软网友回复------
你能够试试直接打印控制
------华软网友回复------
http://www.softserai.com/bbs/viewthread.php?tid=21&fpage=1
------华软网友回复------
帮顶!
------华软网友回复------
http://www.softserai.com/bbs/viewthread.php?tid=21&fpage=1
------华软网友回复------
braversmmu 
能够再做两个datawindow,一个保存左半“直尺”,一个保存右半“直尺”,然后用“两个数据窗口打印到一张纸上”的技术。

能讲讲“两个数据窗口打印到一张纸上”的技术。吗?
___________________________________________________
he1106
把数据窗口的print属性的上边距下边距调大点,剩下的不用设置,pb就给完成了

我想你的方法用于“竖向”打印时大概能行,我的表格已经设置“横向”打印了。试下来不行
_________________________________________________________
hylaeion
设置横向打印不行吗?
另外还能够把数据窗口作成freeform的随便怎么放都行的

表格已经是横向打印了!!!
Freeform的格式是一条记录一张表,和我的要求不一样。
___________________________________________________
hangzhou6274
想现成的解决是没有措施的拉,想一些傻措施吧

傻措施怎样做?

__________________________________________________
lvjunyu(天翔)
设置纸张打印高度,将纸张高度设置为原来的一半或小与一半的巨细,打印的时候它就自然会打印在统一张纸上!
我想你的方法用于“竖向”打印时大概能行,我的表格已经设置“横向”打印了。试下来不行

________________________________________________
whchen(土龙)
你能够试试直接打印控制

如何直接打印控制?

------华软网友回复------
一个表格线里放两个字段怎么样?
------华软网友回复------
whchen(土龙)
一个表格线里放两个字段怎么样?

格式不对
一个表格线里放两个字段和Freeform一样是显示完一条记录的二行后显示第二条记录
格式要求是显示完所有记录的第一行后再显示所有记录的第二行。

------华软网友回复------
不知道你打印用的纸张是否是固定的,如果不是,你能够换成合适的纸张
------华软网友回复------
用组合报表能够实现两个数据窗口打印到一张纸上
------华软网友回复------
另有一种方法:

数据窗口一般都是打印一个就走一张纸,很难实现统一张纸上打印两个数据窗口,当然也并非完全不能够,但有限制。原理:
第一个DW最好为FREEFORM的气概,第二个DW不能为GRID气概,例如将第一个数据窗口的DETAIL区的一条记录加入到第二个数据窗的HEADER区中,再打印第二个数据窗口,以实现两个数据窗口的合并打印。

代码

//这里用到两个函数f_print_dw()与f_print_dw_describe()

1、打印按纽代码

//将dw_1中数据与dw_2中数据合并打印
f_print_dw(dw_1,dw_2)

2、f_print_dw(fp_dw_key[datawindow],fp_dw[datawindow])函数说明

///////////////////////////////
//参数一定要为传址形式       //
//fp_dw_key → reference   //
//fp_dw → reference       //
/////////////////////////////

//fp_dw_key必需为一自由格式的DATAWINDOW
//本函数实现在统一页纸上打印两个DATAWINDOW
//实现方法
//先把一个数据窗口作为文本对象加入到另一个数据窗口中,然后打印,打印完后再恢复数据窗口
string l_attr_list //数据窗口对象的语法
string l_error
string l_object_list // DWO对象列表,以TAB键分开
string l_object
int l_new_field
int l_pos, l_start
int l_dw_height // 数据窗口fp_dw中header区的高度
int l_dw_key_height // 数据窗口fp_dw_key中detail区的高度

l_dw_key_height = integer(fp_dw_key.describe("datawindow.detail.height"))
l_dw_height = integer((fp_dw.describe("datawindow.header.height")))
//增加DW中HEADER区的尺寸,为DW_key上的东西设置空间
//modify()成功前往空字符串
l_error = fp_dw.modify("datawindow.header.height=" + &
string(l_dw_key_height + l_dw_height))
if l_error <> "" then
    l_object = "header"
    //发生毛病时程序转移
    goto Error_City
end if
//将对象移到DW中的开阔区域
// 取得以TAB字符分离的数据窗口fp_dw中DWO对象的列表
l_object_list = fp_dw.describe("datawindow.objects")
l_pos = 0
do // 假定列表不为空
    l_start = l_pos
    l_pos = pos(l_object_list, "~t", l_start + 1)
    if l_pos = 0 then l_pos = 9999
    l_object = mid(l_object_list, l_start + 1, l_pos - l_start - 1)
    //将header区的所有对象都向下移
    if fp_dw.describe(l_object + ".band") = "header" then
        //行控件对照特殊,它是X1,X2,Y1,Y2
        if fp_dw.describe(l_object+".type")="line" then
            fp_dw.modify(l_object + ".y1 ='" + &
            string(integer(fp_dw.describe(l_object+".y1")) + &
            l_dw_key_height) + "'")
            fp_dw.modify(l_object+".y2='" + fp_dw.describe(l_object+".y1") +"'")
        else
            fp_dw.modify(l_object + ".y ='" + &
            string(integer(fp_dw.describe(l_object+".y")) + &
            l_dw_key_height) + "'")
        end if
    end if
loop until l_pos = 9999
//把数据窗口fp_dw_key中的对象以TEXT的形式 COPY 到数据窗口fp_dw中的header区
//取得以TAB字符分离的数据窗口fp_dw_key中DWO对象的列表
l_object_list = fp_dw_key.describe("datawindow.objects")
l_pos = 0
l_new_field = 0
do // 假定列表不为空
    l_start = l_pos
    l_pos = pos(l_object_list, "~t", l_start + 1)
    if l_pos = 0 then l_pos = 9999
    l_object = mid(l_object_list, l_start + 1, l_pos - l_start - 1)
    l_attr_list = f_print_dw_describe(fp_dw_key, l_object)
    if l_attr_list = "" then return false
    l_new_field = l_new_field + 1
    l_error = fp_dw.modify("create text (" + &
    l_attr_list + " name = hdr" + string(l_new_field) + ")")
    if l_error <> "" then goto Error_City
loop until l_pos = 9999
// 打印
print(fp_dw)
//如果没有打印机,能够将以下部份RETURN TRUE之前的代码屏障起来,就能够看到转变后的后果了
// 恢复数据窗口
// 去除新增加的FIELD
//for l_pos = 1 to l_new_field
//    fp_dw.modify("destroy hdr" + string(l_pos))
//next
//// 移动列
//l_object_list = fp_dw.describe("datawindow.objects")
//l_pos = 0
//do
//    l_start = l_pos
//    l_pos = pos(l_object_list, "~t", l_start + 1)
//    if l_pos = 0 then l_pos = 9999
//    l_object = mid(l_object_list, l_start + 1, l_pos - l_start - 1)
//    if fp_dw.describe(l_object + ".band") = "header" then
//        fp_dw.modify(l_object + ".y ='" + &
//        string(integer(fp_dw.describe(l_object+".y")) - &
//        l_dw_key_height) + "'")
//    end if
//loop until l_pos = 9999
//
//// 收宿数据窗口header区
//fp_dw.modify("datawindow.header.height=" + string(l_dw_key_height))
//
return true
////////////////////
Error_City:
    messagebox("Error in col " + l_object, l_error)
    return false

3、f_print_dw_describe(fp_dw[datawindow],fp_col[string])

//////////////////////////////////////////////
//fp_dw → reference 传值 //
//fp_col → value 传直 //
// 目的: 描写各列的属性,前往给f_print_dw //
//////////////////////////////////////////////

string l_error
string l_bg_color, l_color, l_fontface, l_height, l_text, l_x, l_y, l_width
string l_fontheight

l_bg_color = fp_dw.describe(fp_col + ".background.color")
if l_bg_color = "!" then
    l_error = "bg_color"
    goto Error_City
end if
l_color = fp_dw.describe(fp_col + ".color")
if l_color = "!" then
    l_error = "color"
    goto Error_City
end if
l_fontface = fp_dw.describe(fp_col + ".font.face")
if l_fontface = "!" then
    l_error = "fontface"
    goto Error_City
end if
l_fontheight = fp_dw.describe(fp_col + ".font.height")
if l_fontface = "!" then
    l_error = "fontheight"
    goto Error_City
end if
l_height = fp_dw.describe(fp_col + ".height")
if l_height = "!" then
    l_error = "height"
    goto Error_City
end if
l_width = fp_dw.describe(fp_col + ".width")
if l_width = "!" then
    l_error = "width"
    goto Error_City
end if
l_x = fp_dw.describe(fp_col + ".x")
if l_x = "!" then
    l_error = "x"
    goto Error_City
end if
l_y = fp_dw.describe(fp_col + ".y")
if l_y = "!" then
    l_error = "y"
    goto Error_City
end if
choose case left(fp_dw.describe(fp_col + ".coltype"), 5)
    case "char("
        l_text = fp_dw.getitemstring(1, fp_col)
    case "datet"
        l_text = string(fp_dw.getitemdatetime(1, fp_col))
    case "numbe"
        l_text = string(fp_dw.getitemnumber(1,(fp_col)))
    case "!" // 假定为text
        l_text = fp_dw.describe(fp_col + ".text")
end choose
l_color = "33554432"
l_bg_color = "1086374080"
return " band = header " + &
" color = '" + l_color + "'" + &
" background.color = '" + l_bg_color + "'" + &
" font.face = '" + l_fontface + "'" + &
" font.height = '" + l_fontheight + "'" + &
" height = '" + l_height + "'" + &
" text = '" + l_text + "'" + &
" width = '" + l_width + "'" + &
" x = '" + l_x + "'" + &
" y = '" + l_y + "'"

Error_City:
    messagebox("Error in col " + fp_col, l_error)
    return ""      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。