用PB开发报表系统Word下载.docx

上传人:b****2 文档编号:15097117 上传时间:2022-10-27 格式:DOCX 页数:6 大小:17.59KB
下载 相关 举报
用PB开发报表系统Word下载.docx_第1页
第1页 / 共6页
用PB开发报表系统Word下载.docx_第2页
第2页 / 共6页
用PB开发报表系统Word下载.docx_第3页
第3页 / 共6页
用PB开发报表系统Word下载.docx_第4页
第4页 / 共6页
用PB开发报表系统Word下载.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

用PB开发报表系统Word下载.docx

《用PB开发报表系统Word下载.docx》由会员分享,可在线阅读,更多相关《用PB开发报表系统Word下载.docx(6页珍藏版)》请在冰豆网上搜索。

用PB开发报表系统Word下载.docx

该工具特别针对查询而设计,可扩展到任何用ODBC连接的数据源,只要该数据源支持标准SQL查询即可。

特别对于OA中或信息发布中需要将一些沿用已久FOX系统下的DBF文件发布而言,所做工作只要在一次定义后,按几个按钮即可完成。

特别是在NOTES中只要将PSR文件作为附件直接插入到文档中,在客户端定义好Plugin,即可实现WEB发布。

【技术要点参考】

1、创建数据窗子对象

通过数据窗的Modify()函数实现,语法:

dw_report.modify('

createtext(name=uc_text_001x="

10"

y="

20"

width="

300"

....'

通过对具体对象(statictext,picture,rectangle,line,compute等)的属性赋值(注意括号的使用与匹配),如x,y,width,height,color,font,background.color,background.mode,expression,format等,即可实现对象的创建。

创建对象时特别注意是加入moveable=1resizeable=1语法,实际上是将对象设为可移动,可变大小,这对于对象的调整是比较重要的。

删除对象只需用如下语法:

destroyuc_text_001'

如何实现象PB开发环境下的创建对象的方式呢?

1、建立菜单(将bar的Toolbar的Objecttype设为MenuCascade方式,Item项为各可创建对象),

2、各菜单Item的ClickedEvent中写入:

parent.toolbarItemdown=false//使该ToolbarItem处于压下状态

mf_createobject('

STOP'

统一调用函数mf_create_object([对象类别]),[对象类别]可自定以好,如"

text"

"

line"

3、mf_create_object函数如下(argument为stringobject_string)

windowlw_sheet

lw_sheet=parentwindow.GetActiveSheet()

ifIsValid(lw_sheet)then

lw_sheet.triggerevent('

ue_createobject'

0,obj_string)

endif

该函数取得当前打开的sheet窗口lw_sheet,然后调用该窗口下的ue_createobject自定义事件。

4、在主窗口下,自定义ue_createobject事件,该事件主要响应如下:

stringPassedString

PassedString=String(Message.LongParm,"

address"

)//取出创建类型

ifisnull(passedstring)orpassedstring='

then

m_main.m_objects.toolbaritemdown=false

ib_creatingObject=false

return

ib_creatingobject=True//等待dw_report的click事件来触发

is_objectstring=passedstring//告知当前触发对象

5、在dw_report的clicked事件中,写入以下语法:

ifNOTib_creating_objectthenreturn//instance变量,记录是否处于创建状态

m_main.m_objects.toolbarItemdown=false//恢复ToolbarItem状态

ifisnull(is_objectstring)thenreturn//意外判断

ib_creatingobject=false//停止创建

choosecaseis_objectstring

……

[具体创建语法]

2、选择对象

产生Windows风格的选择形式主要包括:

单选,CTRL+单选,框选

单选:

容易实现,在datawindow的Clicked事件中用GetObjectAtPointer()函数即可取得点取的对象,然后在该对象四周画rectangle标记即可(清除其他已选对象选中标记);

多选:

在Clicked事件中判断是否有CTRL按下

ifKeyDown(keycontrol!

)then…

增加选中对象列表(数组)

显示选中标记

框选:

需要由3个事件协同工作

Clicked:

(鼠标单击)

记录左键按下时的位置(pixels),同时考虑Scrollhorizontal事件产生的位移量(unit)ib_rect_select=True//框选开始

ii_mousex=unitstopixels(ii_hscroll_offset,xunitstopixels!

)+xpos

ii_mousey=unitstopixels(ii_vscroll_offset,yunitstopixels!

)+ypos

ue_mousemove:

(自定义事件,EvendID=pbm_dwnmousemove)(鼠标移动)

//动态创建框选的矩形框

ifNOTib_rectselectthenreturn

intli_height,li_width,x2,y2,x1,y1

x1=ii_mousex

y1=ii_mousey

x2=unitstopixels(ii_hscroll,xunitstopixels!

y2=unitstopixels(ii_vscroll,yunitstopixels!

li_height=y2-y1

li_width=x2-x1

x1=pixelstounits(x1,xpixelstounits!

y1=pixelstounits(y1,ypixelstounits!

hh=pixelstounits(hh,ypixelstounits!

ww=pixelstounits(ww,xpixelstounits!

stringls_mstring

ls_mstring='

createrectangle(band=foregroundname=uc_rect_selectx="

'

+string(x1)+&

"

+string(y1)+'

+string(ww)+'

height="

+string(hh)+'

'

+&

brush.hatch="

7"

brush.color="

553648127"

pen.style="

2"

pen.width="

5"

pen.color="

1090519039"

background.mode="

background.color="

255"

)'

dw_pre.setredraw(false)

dw_pre.modify('

destroyuc_rect_select'

)//先删除旧的矩形框

dw_pre.modify(ls_mstring)//再创建新的矩形框

dw_pre.setredraw(true)

ue_leftbuttonup:

(自定义事件,EvendID=pbm_lbuttonup)鼠标左键抬起

//鼠标左键抬起,如果处于ib_rectselect状态,则结束选择状态

ib_rectselect=false

……//处理选择对象

通过以上三个事件的协同工作,就可实现多对象的框选。

3、自动连接ODBC

自动连接ODBC是指不需要用户自己定义ODBC连接参数,通过程序自动实现连接,一方面简化了用户的操作,另一方面,使批量定制报表成为可能。

自动连接ODBC的实现是通过写注册表来实现的,主要用到的函数有两个:

Registryset()

Registryget()

通过Registryset()函数,改写注册表主键及相关键值:

HKEY_CURRENT_USERoftware\ODBC\ODBC.INI\[ODBC源名称]

HKEY_CURRENT_USERoftware\ODBC\ODBC.INI\ODBCDataSources

[ODBC源名称]即要创建或修改的ODBCsource,如

HKEY_CURRENT_USERoftware\ODBC\ODBC.INIystem

该主键下有若干键值记录了该连接的参数,如SybaseSQLanyway5.0的典型设置:

键值名

含义

Autostop

Yes

程序调用结束后自动终止连接

DatabaseFile

C:

\ProgramFiles\DBF自动报表ystem.DB

数据库文件

DatabaseName

system

连接名称

Description

自动生成ODBC

描述

Driver

\ProgramFiles\DBF自动报表\WOD50T.DLL

驱动程序语法解释

PWS

SQL

用户口令

Start

\ProgramFiles\DBF自动报表\dbeng50-c8192

驱动程序及参数-c8192表示用8192K内存做cache

UID

DBA

数据库用户名

为使其他程序可用该ODBC源,在主键:

HKEY_CURRENT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1