欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 358

点击:23141[回复顶层] [树状] [简明]


头衔: 总工
文章数: 539
积分: 5390
注册时间: 2005/9/5
[回复留言] [回复(需要先登录)] [引用(需要先登录)]精品第 1 楼
文章id: 353
dp2circulation最近的一些新功能和改进

作者: xietao


本文介绍一下dp2circulation最近的一些新功能,一些改进之处。

1) 快速装载

主窗口的工具条上,有一个文本输入域,那是用来输入读者证条码或册条码的地方,用于快速装载读者记录或册记录到窗口中。

原来这个功能是什么样的我就不说了,现在有改进:

文本输入域右边绿色箭头和文字(通常一开始为“自动”),文字表示装载的方式。再右边有一个很小的向下三角,这是一个菜单,可以设置装载方式。

一共有三种装载方式:装载读者记录、装载册记录、自动判断类型并装载。意思很直白。

如果dp2libraryws服务器的library.xml文件中配置了条码识别的脚本函数,则自动装载功能有效。也就是说,你可以随便扫入什么条码,软件会自动判断并装入适当的窗口。如果有用户发现自己的dp2libraryws服务器没有条码识别脚本函数,或者函数功能不正确,请和我们联系,我们可为您编写这个函数,以便您能够用上自动识别条码类型的功能。

如果没有上述条码识别脚本函数,一个折中的办法就是在扫入条码前,人自己判断好了,预先用上述菜单设置好装载方式,软件也可以正确装入适当的窗口。如果装载方式设置不正确,装入的时候软件会报错。

这个功能常用在什么地方呢?

在刚刚打开种册管理窗的时候,用户想通过册条码调出册记录和相关的种(书目)记录,原来的时候,在“册”属性页中,有一个“册条码”文本输入域,把它右边的按钮改变为“检索”(在按钮上点右鼠标键并选上下文菜单适当命令),在这里输入条码,就可以调出想要的册记录了。

后来在这里软件进行了改动,当打开了一个空白的种册管理窗的时候,由于这个窗口还没有指定任何记录路径,所以软件并不知道窗口该不该有册方面的功能。因为有些书目库就是可以不定义实体库的,因而也就没有册方面的功能。所以软件就仅仅在空白的种册管理窗里面提供了一个“对象”属性页。这样一来,原来习惯在空白种册管理窗上用“册”属性页来装载第一条记录的用户,就感到很大的不方便了。

变通的操作办法,就是利用装载书目模板的功能,装载一个即将要调入的册所从属的书目库的模板,来迫使软件显示出“册”属性页。但是用户觉得这样操作太麻烦,平白多了一步,就呼吁空白的种册管理窗要像原来那样出现“册”属性页。

亲爱的用户,这样是不行的。原来空白的种册管理窗不小心出现了“册”属性页,这是一个失误,虽然它歪打正着符合了想利用它调入第一条册记录的愿望。为什么说它是一个失误呢?因为如果你在这个“册”属性页中真的输入几个册信息,然后再保存,发现因为没有种记录路径而保存不了,然后只有重新装载模板,并且刚刚输入的册信息又被洗白了,你会感到很不爽。

(当然,话说到这里,我突然发现这时候MARC编辑器可以输入东西,这也会造成感情浪费的 -- 以后再想办法改进吧)

所以,现在的做法是向着正确的方向前进。至于改进后丢失掉的“册”属性页,它本来就是不该在这个时候存在的。

这时候,上面谈到的工具条快速装载册的功能,就能派上用场了。不必再找种册管理窗“册”属性页,直接到工具条上扫入条码,就可装入当前种册管理窗。这个快速装载的功能,是先看当前有没有已经打开的种册管理窗,如果有,优先占用它;如果没有,则会自动新开一个种册管理窗并装入记录。

拓展视野,其实从什么都没有打开的时候想要装入一条册记录,标准的流程应当是打开一个实体查询窗,选定册条码检索途径,然后扫入册条码检索出记录,然后在浏览框中双击装入到种册管理窗。噢对了,最近实体查询窗进行了改进,在它的浏览框中双击是把记录装入到种册管理窗了,而不是以前的装入实体窗。实体窗没有什么用,一般用户都喜欢更全面反映信息的种册管理窗。

当然,这个利用实体查询窗的操作办法步骤比较繁琐,还是工具条上的快速装载来得省事一些。



发表时间: 2008-12-05 04:30:11





头衔: 总工
文章数: 539
积分: 5390
注册时间: 2005/9/5
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 2 楼
文章id: 354
获得检索点字符串

作者: xietao


2) 请告诉我现在数据中有哪些批次号?

很早就有用户建议有一个功能,显示出当前所有的批次号。

我能理解,他的原因很简单:不可能谁的记性都很好,记得住批次号用到几号了。拿着一个一个的批次号去试探检索,也不是一个办法。一个一个翻看数量庞大的册记录,则更不是个办法。

这个功能其实是要求软件能够列出批次号检索点字符串内容,而不是原有的根据批次号检索出记录id来。从dp2系统的体系结构来说,应当是数据库内核具有这个功能,而这个功能一直欠着没有开发出来。

最近我们开发出了相关的功能。首先rmsws升级了,才能具有相关的新功能。dp2libraryws也升级了。两者都要升级,缺一不可。

在dp2circulation前端中,打开实体查询窗,这里我用册记录内的批次号,也就是验收或者移交批次号为例进行说明。这里提醒一下,所谓批次号是一个泛泛的概念,软件里面有好几个地方好几种批次号,例如订购批次号、编目批次号。要具体所指的时候,请不要泛泛说“批次号”。

你会发现实体查询窗的检索按钮变样了。变成了一个绿色的按钮,向右的箭头。看起来和刚刚讲过的工具条上快速装载的按钮一样。这个检索按钮的右边,有一个小小的向下的三角,点它会展开一个菜单,上面有个命令“获得检索点”,就是它了。

你选检索途径为“批次号”,检索词保持空,点“获得检索点”命令,浏览框中会出现全部批次号,显示为两栏,左边是批次号字符串,右边是左边字符串的数量。当然如果你的实体库中什么记录都没有,或者根本没有输入过批次号,那是获得不了任何内容的。

如果你操作的时候遇到提示信息说需要升级rmsws和dp2libraryws的最新版本,...,那,它说的是实话。

好了,浏览框中列出了用过的批次号字符串。想看看某个字符串到底对应哪些册记录呢?一个办法是传统的检索功能,也就是原来就有的检索功能,你老老实实在检索词那里输入这个字符串,然后点绿色检索按钮进行检索。现在有另外一个更方便的办法,就是你在这个批次号字符串浏览行上双击,软件会立即给你检索出该批次号所从属的所有记录来。你可以仔细对照一下,软件刚才显示出来的记录个数是不是准确的,两者之间。

这时候你可能想退回到刚才命中批次号字符串的那个浏览画面,继续看看其他批次号的数量。在检索按钮的右边,有两个左右方向的箭头按钮,左箭头就是退回到上次的浏览画面了。

如果你不想“左来右去”的,还有一种选择,就是你在批次号字符串的浏览画面的时候,在浏览框内点右鼠标键弄出上下文菜单,选“在新开的实体查询窗内检索”,这样就不会打扰当前浏览框的内容,新的检索将在新开的实体查询窗中进行,不想要新开的那个窗口了可以关闭它,回到刚才这个实体查询窗。这就是“开来关去”的了。

有了这个新功能后,我们就可以对数据中的批次号进行有效的管理。比方说看到有些奇怪的字符串,我们可以把涉及它的册记录都调出来看看,是不是输入错误?

不过,我在这里还是给大家一个忠告,图书馆的业务管理有时候还是要靠纸笔,不是要完全依赖计算机的。在工作中使用的批次号,部门主任有责任规划好,大家整齐划一地使用,不要弄错。很有必要准备一个纸本的笔记本(而不是什么笔记本电脑),把每批的编号和细节情况概要记载下来,便于以后查对。这是很好的工作习惯。有人说那软件为什么不准备一个每批给批注的功能呢?这个主意很好,我们过一段会实现这个功能。但是这类功能并不属于软件特别擅长、体现计算机优势的功能,采用传统的办法有时候效果更好,还更有人情味。现在我能这么说,是因为显示出所有批次号的功能已经做出来了,要不然还有人会以为我在找借口推卸开发这个软件功能呢。

上面讲的是如何用实体查询窗来观察批次号字符串。

在典藏移交窗中,按钮“根据批次号检索装载”,会打开一个对话框,原来这里的“批次号”文字域是不带有下拉菜单的普通输入框,而现在改进为一个组合框。你点向下的三角,里面会检索显示出原来用过的所有验收(移交)批次号。

类似的,打印订单窗口,验收窗口,打印验收单窗口,册统计窗,书目统计窗,也都具备了列出特定批次号的功能。



发表时间: 2008-12-05 05:08:45
最后修改时间: 2008-12-05 05:15:35





头衔: 总工
文章数: 539
积分: 5390
注册时间: 2005/9/5
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 3 楼
文章id: 355
押金

作者: xietao


dp2circulation的读者信息窗中,工具条增加了一个“创建交费请求”的下拉菜单,里面有一项“交押金”。使用这个命令,可以为该读者创建一个押金的缴费记录,也就是在读者记录的<overdues>元素内创建一个<overdue>元素。

这个“交押金”命令仅仅在读者记录里面创建了一个可交费的事项,但是并不等于立即交费。如果要交费,还需去“交费窗”,在那里进行交费。

创建交费请求和交费分开,是为了管理上的严密考虑的,因为这两种操作所需要的权限是不同的,后者需要的权限更高一些。

读者记录中有了押金需交费的信息后,如果读者不履行交费手续,就无法借书,这和读者记录中超期违约金信息但是没有缴纳的时候类似。
 
当在交费窗中交费成功后,读者记录中会出现一个<foregift>元素,里面有押金的当前余额。如果多次交押金,<foregift>元素中的余额会自动累加。撤回交费时,读者记录内<foregift>元素内的余额会自动减掉最近一次所交的值。当然,如果交费的记录经过结帐后,就不能撤回了。
 
读者记录中通过<foregift>元素保留余额值的处理办法,和租金不一样。租金在读者记录中是看不出当前额度的,在读者记录中只能看到交费时间和失效期。在读者记录中看不到也没有问题,因为在违约金库中可以查到。而在押金处理中,考虑到操作效率,在读者记录中冗余设计了这个<foregift>元素,从概念上说,违约金库中的相关记录和读者记录中<foregift>元素的值,应当是可以互相对照的。
 
创建押金交费记录的操作不能简单重复。当读者记录的<overdues>元素中有“押金”类型的未交费信息时候,服务器会警告,不让前端重复创建缴费记录。
 
但读者一旦缴费后,当相关信息从读者<overdues>元素中消失后,创建押金交费记录的操作就可以重复进行了,而不管当前读者是不是还有押金没有用完,都可以重复创建。不过这个问题可以通过相关脚本函数上增加功能来防范,后面会提到。
 
每次创建押金交费具体是多少金额?这由dp2libraryws服务器端的library.xml文件中的新增一个脚本函数GetForegift()来决定。这个函数很重要,如果没有配置这个函数,创建押金缴费记录的操作就不能成功。
 
// parameters:
//     strAction 为foregift和return之一
public int GetForegift(
    string strAction,
    XmlDocument readerdom,
    string strExistPrice,
    out string strPrice,
    out string strError)
{
    strPrice = "";
    strError = "";
 
    if (strAction == "foregift")
        strPrice = "CNY100.00";
    else if (strAction == "return")
    {
        // 将形如"-123.4+10.55-20.3"的价格字符串反转正负号
        // parameters:
        // bSum 是否要顺便汇总? true表示要汇总
        int nRet = PriceUtil.NegativePrices(strExistPrice,
            true,
            out strPrice,
            out strError);
        if (nRet == -1)
            return -1;
 
        return 0;
 
        // strPrice = "%return_foregift_price%";
    }
    else {
        strError = "无法识别的strAction参数值 '" + strAction + "'";
        return -1;
    }
 
    return 0;
}


这里是一个示范的函数,编写得很简单。

参数strAction的值表示需要执行何种操作。如果为"foregift",表示为创建押金交费记录;如果为"return",表示为创建押金退费记录。

函数在每次需要创建交费记录的时候一律给出一个100元的金额。但是如果要防止多次创建交费记录,函数里面可以根据strExistPrice参数传递过来的读者记录中<foregift>元素内的最后余额,给出合理的判断,例如金额在某个值以上,就提示说不必交费了,在这个值以下,才允许创建交费记录,而且也不一定每次都是100元。这个函数还可以根据读者记录(readerdom)内的其他信息进行判断,例如根据读者类型的不同,要求交费的额度不同。
 
函数在每次需要创建退费记录的时候,将参数strExistPrice中的金额值反转为负数,也就是创建一个金额为负数的交费记录,也就是退费的意思了。由于strExistPrice参数值可能为一个若干单个金额值用加减号连起来的复杂字符串,所以要用PriceUtil.NegativePrices()函数进行处理。

创建退费记录的时候,函数也可以直接为strPrice参数设置值 "%return_foregift_price%",这是一个宏字符串,表示用当前的读者记录内的<foregift>元素内的金额值反转为负数的意思,系统会自动处理。

~

为了让押金信息发挥一定的作用,在library.xml中,根元素下,新增了以下配置内容:
 
<foregift borrowStyle="" />
 
这是和押金用途有关的配置。当borrowStyle属性的值(一个逗号分割的字符串)包含checkSum的时候,系统就会针对借阅图书启动检查册价格总额是否高于读者押金当前余额的功能,缺省情况下是不启用的。也就是说,虽然读者数据中有了押金相关信息,但是如果不在这里配置一下,相关功能是不启用的。
 
但,一旦借书时册价格总额检查功能启用了,如果一个读者记录里面没有<foregift>字段,那么该读者就无法借书,直到这个读者创建了押金缴费记录并且去缴费了才行。
 
目前读者记录中的<foregift>字段是通过创建押金交费记录、然后读者交费,间接由服务器创建的,图书馆工作人员没有其他手段去直接创建这个元素。即便目前读者信息窗界面上看到了字段的文字框,并且似乎其值可以修改,但是保存后你会发现<foregift>元素的值其实并没有被修改。
 
~
 
目前的押金相关功能,要求library.xml中决定押金金额的脚本函数GetForegift(),必须创建带有CNY一种币种的金额字符串。并且册记录中的<price>元素内的价格字符串,也必须是CNY一种币种,或者前缀为空的纯数字也行。尚不能支持两种以上的币种混合。
 
如果出现多币种的情况,服务器会拒绝借书,而不是允许借书。如果出现这样的情况,需要对相关数据进行必要的修改,统一币种。
 
对于册记录中价格字符串为空的,当作0处理,不报错。读者记录中缺<foregift>元素的,也当作押金余额为0处理。
 
~
 
为了加快程序处理速度,读者记录中<borrow>元素中的已经借阅图书的信息中,这次扩充了一个price属性,就是从册信息中每次复制来的<price>元素内容。当计算读者借阅的当前图书价格和以前借阅的其他册图书价格的总和的时候,以前的册的价格,是从读者记录的<borrow>元素中获得,而不是直接去找那些册记录。

这种机制有一定的副作用:如果发现读者在借的册价格不正确,光修改册记录中的<price>元素内容是不够的,还需要直接修改读者记录中缓存的价格。不过,这种修改只能由系统管理员利用dp2rms工具才能完成了。
 
~

目前押金金额除了可以用来在借书的时候对所借册的总价格进行限制外,还没有开发其他的用途。读者在交纳违约金的时候,还不能从押金中进行扣款。



发表时间: 2008-12-05 05:11:25
最后修改时间: 2008-12-16 20:51:53





头衔: 总工
文章数: 539
积分: 5390
注册时间: 2005/9/5
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 4 楼
文章id: 356
台上几分钟,台下十年功

作者: xietao


经常有用户抱怨数字平台这里的,或者丹诚公司那里的论坛冷冷清清,没有“人气”;或者抱怨我们公司的人不能每天都发几个帖子,大张旗鼓弄出点动静来。

我能够理解这些用户的想法,在这里,我感谢他们拔高敝公司形象和能力的善意了。他们真的很好、很善良。

但是我们多角度看问题,反过来说,一个致力于图书馆软件的公司,如果不去讨论软件本身的事情,把专业做好,而是把论坛弄成像“天涯”那样热闹的“文字集贸市场”,恐怕又是另外一个故障了。

就图书馆软件话题而言,我不相信能弄成许多用户想象的那么热闹。是不是有这样的可能,软件有一万个故障,每天用户踊跃反映出一千个、发出一千个帖子?那叫“变态”了。其实,安静本身就是一种很自然的状态,那本是和我们当前的客观状态吻合的么。

所以,有屁就放屁,没屁就安静,这是正常。我见过一些网站,为了弄出点浮夸的热闹,站长不停去抄网上各种文章,比方说喜欢文学的,弄出各种“美文”来充斥页面,我觉得那样才很傻 -- 虽然他们自己乐在其中。而且这些抄的人,一点不尊重人家的劳动和版权,掐头去尾,看不出原作者是谁。以至于现在许多人在论坛上发文章,都有一个习惯,在标题上注明“[原创]”。这世道真是颠倒了。我一般是不注明的,就是原创,我要偶尔转载人家的东西,才会特意注明“[转贴]”。就我而言,我码的汉字可以说99%都是原创的,我喜欢自己放屁,不喜欢转别人的屁。

这里跟大伙交流一下感情,谈谈我最近的工作状况。最近一年来,更广了说好几年来,我一直都在埋头编程序。用户传递过来的信息,我都放在心上呢。你们随便说一句话,我这里可能要忙上半个月,好容易抖抖索索拿出点功能,借着介绍新功能的理由,才有功夫在论坛上写点文字。

确实平时是没有多余的时间和精力。如果有,那我是个话唠,罗嗦起来能把大伙烦死,你们全部加起来都没有我文字产出多,不是吹牛。

软件是血汗的工作,几千行几万行下来,为的可能是一个看起来理所当然的简单功能。所谓台上几分钟 -- 我上来给大家介绍好容易编好的功能,台下十年功 -- 我一直累得死去活来。今天为了写上面两小篇,半夜打开dp2circulation操作,冷不丁还发现了几个问题,只好明天赶紧改了。这不是好玩的工作。

也许,再过几个月,功能比较丰满了,我会转入主要是改进软件功能的后期阶段,那时候就比较好过一些,文字也会多一些,给大家介绍得多,软件应用和推广就会更上正轨。

现在软件还一直欠着一本用户手册和一本参考手册。我通常是在办公室开着两台机器,一台编程编译,另外一台安装测试编写手册。编写参考手册和用户手册的进程很慢,一方面是时间紧、新功能一直催着,另外一方面是有种纠结的情绪、希望软件尽可能完善后一次性编写,有点畏难情绪。

这也是人之常情。编写软件手册的时候最拷问开发者的良心。因为这时候写的是人话,而不是鸟语(指机器语言),功能好不好用,有没有欠缺,自己一目了然,不用用户来提醒。也可以这么说,软件手册写完了并且编写者心安理得踏实了的,那软件一定是好软件了。

我的一个想法是,编织起来的文字体系,以软件手册为骨干,那是比较系统和权威的信息来源。软件手册应当可以解决90%的问题,用户看了就可以用好软件。而论坛和售后服务体系,则是一个补充,对软件手册进行阐释和发展,同时也是征集意见积累素材改进手册的一个好机制。现在,软件手册缺乏,这个想法就兑现不了。原来也曾想过下策,如果论坛上用户经常问,一边手册在写着,另外论坛上一边现回答,至少论坛的帖子罗织起来也能构成一个不错的知识体系,...。不过这种局面始终没有出现过。用户们沉默着,凭直觉用软件,看到的菜单猜着用一点,看不到的就当没有。

这不是我希望的局面。不过阴暗地想想,自私地想想,一个软件居然这样稀里糊涂也能用,每天图书馆借借还还凑合着就过去了,也算是一个安慰。不好的软件不提供手册,好的软件不需要手册也能用,...,各种解释都可以说得通,好软件乎?坏软件乎?

记得有人说过不要相信别人半夜说的话。现在正是半夜。暂打住。待续。



发表时间: 2008-12-05 05:52:54





头衔: 总工
文章数: 539
积分: 5390
注册时间: 2005/9/5
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 5 楼
文章id: 358
标签打印

作者: xietao


标签打印

最近我们为dp2circulation增加了标签打印的功能,从此就不必再用以前的那个外挂的标签打印程序了。

用dp2circulation的主菜单“功能/标签打印窗”命令,可以打开一个标签打印窗。

标签打印窗内有两个属性页,一个是“标签文件”属性页,一个是“册记录”属性页。

这两个属性页代表了两种标签打印的方式。

在“标签文件”属性页中,用户可以通过指定标签文件来进行标签的打印。所谓标签文件,就是一种文本文件,内容为这个样子:

P621
3333
***
P621
3333
***

标签内容按行排列,标签之间间隔一个内容为“***”的行。

也就是说,不论用户通过什么方法创建出标签文件,在“标签文件”属性页中都可以把标签打印出来。

在“册记录”属性页中,用户可以通过指定册记录来进行标签打印。程序会自动从册记录或者其从属的书目记录中提取有关信息,创建为标签文件后进行打印。

“册记录”属性页中有一个记录列表,可以从外部文件中导入记录,也可以从实体查询窗中利用Windows剪贴板Paste过来记录。

下面介绍一下从实体查询窗paste记录到标签打印窗的记录列表的操作步骤:

1) 在实体查询窗中,根据业务要求检索出一批册记录。在记录列表上选定好要复制到Windows剪贴板中的行,点右鼠标键,在随后出现的上下文菜单中选“复制”命令;

2) 在标签打印窗中,切换到“册记录”属性页,在记录列表上点右鼠标键,在随后出现的上下文菜单中选“粘贴”命令,Windows剪贴板中的记录行便会出现在记录列表中;

~~~

标签定义文件: 

标签打印窗的第一行,是标签定义文件名文字框,要想打印出标签,需要先创建好一个标签定义文件,然后在这里指定它的文件名。

标签定义文件是一个XML格式文件,可以用Windows的记事本创建。

下面是一个标签定义文件的内容范例:

<root>
 <label width="200" height="200" paddings="50,50,0,0" font="Times New Roman, 30pt"/>
 <page margins="100,100,100,100" />

 <lineFormats>
  <line font="Times New Roman, 20pt" align="right"/>
  <line font="Times New Roman, 20pt" align="center"/>
 </lineFormats>
</root>

其中,<label>元素定义了一个标签的尺寸。

height为一个标签的高度,width为一个标签的宽度,单位是1/100英寸。也就是说,100表示一英寸。一英寸等于2.54厘米。

paddings是一个标签内文字打印区域和标签边沿的距离,格式为

左边距,上边距, 右边距, 下边距

4个数字。

width和height定义了标签的尺寸,paddings是从里面扣除了边距后的内容打印区域。

font属性值配置了标签内的一般字体。之所以说“一般”,是还有别的地方可以配置字体,下面会谈到。如果在这里配置了字体而其他地方没有配置,那么标签内的几行文字都会采用这个字体。font属性值是用表意的方式来定义字体的尺寸和颜色等,例如,“Arial, 20pt” 代表字体名为"Arial",字体的高度为20pt。pt是1/72英寸的意思。

这里介绍一下font属性值的定义办法:

格式为:宋体, 9pt, style=Bold, Italic, Underline, Strikeout

第一部分为字体名,第二部分为字体高度,第三部分为字体风格。

字体高度可以有下列定义单位:world/px/pt/in/doc/mm。px为像素,在打印中因为打印机的dpi变化多端,用像素作为单位肯定是不好的;pt为1/72英寸;in为英寸;doc为1/100英寸;mm为毫米。

字体风格可以有下列类型:Bold为粗体;Italic为斜体;Underline为下划线;Strikeout为删除线。这些风格可以组合使用,例如:Bold, Italic表示粗体和斜体。

<page>元素定义了打印页面的一些特性。目前只有一个属性,margins,定义了页面纸张边沿空白区域的尺寸。格式为

左边距, 上边距, 右边距, 下边距

。单位和前面的<label>元素的width和height一样,都是1/100英寸。在配置margins的时候要注意,激光打印机的纸张一般边沿都有一个不可打印的区域,当然,我们希望制作标签纸的厂家已经考虑到这个情况,边上肯定会留有一定的空白余地,实际上只要打印到厂家模切的位置,就不会超过可打印区域。

<lineFormats>元素下配置了标签内容每一行的特殊属性。这个元素可以省略,如果省略,标签每行的打印就按照左对齐、缺省字体(<label>元素中font属性所定义的字体)来进行。

<lineFormats>元素内有若干<line>元素,每个元素对应标签内容的一行。也就是说,如果标签要打印出3行,希望每行都单独定义特性,那么这里就要有三个<line>元素。不过,<line>元素的个数可以少于标签中要打印的行数,没有被<line>元素定义的行,就按照缺省格式打印。

<line>元素里面有font和align两个属性。这里的font属性和前面介绍的值格式一样。align可以有"left" "center" "right"三种值。缺省为"left"。

标签定义文件创建好以后,可以用Windows记事本创建一个测试用的标签文件,里面含有若干个标签的文字,然后用标签打印窗的“打印预览”功能进行预览,在打印预览前,把窗口底部的“打印调试线”勾选上,这样就可以在预览窗看到所配置的尺寸情况,并对标签定义文件内的参数进行适当调整。

下面介绍一下预览窗内的调试线:最外面四个角落的绿色折线,是打印机可打印区域的最外围。我们知道,激光打印机一般不可能在纸张上全部区域都打印,外围总有一些部分是无法打印到的。外围一个绿色的粗线框,是标签定义文件中<page>元素margins属性定义的页面内容区域。若干个黑色的细线框子,是标签的总体区域,其尺寸由<label>元素的width和height属性定义,而在页面上具体要打印出几行几列标签,软件会根据页面内容区域和标签尺寸自动计算和排列。若干个红色的细线框子,是标签内的内容区域,由<label>元素的paddings属性定义。

~~~

标签打印窗可以单独使用,根据标签文件,或者根据册记录路径,打印出标签来。

此外,原来“册统计窗”中的“输出标签文本文件”统计方案(见 http://dp2003.com/dp2bbs/article.aspx?board=@__2&id=205 )最近也作了修改,如果用户在这个统计方案中增加一个成员文件label_def.xml,则这个统计方案能在结束的时候自动打开标签打印窗,这样就方便立即进行打印。不过,也仍可以继续采用原来的操作办法,先利用这个统计方案创建好一个标签文件,然后再去打开标签打印窗进行打印。

现在册统计窗中又新增加了一个统计方案,名为“打印标签”(下载地址为 http://dp2003.com/filews/getfile.aspx?username=dp2circulation&filename=projects%5c%e6%89%93%e5%8d%b0%e6%a0%87%e7%ad%be.projpack ),这个新的统计方案会在运行结束时直接打开标签打印窗,操作十分方便。不过需要注意的是,这个统计方案中包含的label_def.xml配置文件需要用户在使用前重新进行配置,才能适合本馆的特定标签尺寸。

在“打印标签”统计方案中修改label_def.xml文件内容的操作步骤:

1) 在册统计窗的左下角点“方案管理”按钮;

2) 在方案管理对话框的方案名列表中,双击“打印标签”名字;(如果没有这样的文字,说明你还没有下载和导入这个统计方案。请先导入后再用这里介绍的方法进行修改)

3) 在脚本代码管理对话框中,看“构成文件”列表,双击名为“label_def.xml”的名字。在随后打开的记事本窗口中即可进行修改。修改完成后不要忘记保存该文件。建议可以先在别处创建一个标签定义文件,然后利用标签打印窗进行调试,调试好了以后,再把其内容复制到本统计方案的label_def.xml文件中。

其实上述两个统计方案的功能,都已经可以被标签打印窗的“册记录”属性页中的打印功能加上实体查询窗所替代。如果是通过批次号进行标签打印,可以在实体查询窗中用批次号检索出册记录,然后paste到标签打印窗中进行打印。



发表时间: 2008-12-14 17:43:42
最后修改时间: 2008-12-14 20:32:45





头衔: 总工
文章数: 539
积分: 5390
注册时间: 2005/9/5
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 6 楼
文章id: 359
拖放功能

作者: xietao


最近我们为书目查询窗、实体查询窗、读者查询窗、主菜单工具条,和种册管理窗、读者窗、交费窗、停借窗、激活窗、出纳窗、标签打印窗,增加了Drag & Drop也就是“拖放”功能。

以书目查询窗为例:在书目查询窗中检索命中一批记录后,在浏览框中选定一行,然后用鼠标左键拖动该行到达主窗口的工具条上的空白位置,然后放开鼠标左键,软件会自动打开一个种册管理窗并将相关记录装入。

可以选定多行后拖放到主窗口的工具条上,这样就会打开多个种册管理窗。

类似地,可以将书目查询窗的浏览框中的某行拖放到一个种册管理窗上的任意位置,相关记录也会被装入这个种册管理窗中。

~
在把读者查询窗中的命中记录行拖放到激活窗的时候,根据放下时的区域不同,可以把读者记录放入左边的源证信息和右边的目标证信息区域。

~

实体查询窗中命中的记录,可以通过拖放功能进入到标签打印窗的册记录列表中。



发表时间: 2008-12-16 18:21:22



页 1 / 1
 

在线用户
访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客 (我自己)   访客访客   访客访客   访客访客   访客访客   访客访客
当前栏目在线用户数 15, 总在线用户数 20