选择显示字体大小

在powerbuilder中使下拉列表框可以和数据关联

在从事使用powerbuilder进行数据库开发的过程中,常常碰到要使用列表框来选择数据,但是普通的下拉列表框并没有提供和数据相连接的方法,而使用数据窗口的子下拉列表框来代替又显得有些别扭。下面介绍一种好看又好用的方法。

如果使用指针把要连接的数据一条一条地从select 语句的查询结果中fetch 出来,然后再把数据additem到下拉列表框中去。虽然这也是一种可行的方法,但是他的速度不能令人满意,太受数据量的影响。我们可以利用powerbuilder 最推崇的数据窗口技术作为数据库和下拉列表框连接的桥梁,这种方法即方便快速又安全可靠。

下面制作的下拉列表框。

一、 打开powerbuilder的"select user object"画笔,选择,在"new user object"中选择"visual"类的"standard"项并按下, 在弹出来的"select standard visual type"对话框中选择列表中的 "dropdownlistbox"项并按下。接着加入一些实例变量,选择"declare"菜单项的"instance variables.."加入变量的声明: datastore ids_user int il_row 并按下

我们要对新的对象进行一些限制,在对象的"constructor"事件中加入程序:

sorted = false //这句非常必要

reset()

二. 把数据检索出来放到ids_user变量里

选择菜单"declare"项的"user object function",在弹出来的对话框中按下新建一个对象函数命名为:init

参数有一个:

sqlstr string

返回值为整型:integer

现在我们需要动态地创建datastore

在init函数中写下:

//integer init(sqlstr string) 开始

long ll_rowcount

long ll_row

string ls_sql

string errors

string ls_return

ids_user = create datastore

//根据sql语句产生数据窗口

ls_return = sqlca.syntaxfromsql(sqlstr, 'style(type=grid)',errors)

//sql语句有错误

if len(errors) > 0 then

messagebox('错误', errors)

return -1

end if

//根据语法动态创建数据窗口

ids_user.create(ls_return)

ids_user.settransobject(sqlca)

ll_rowcount = ids_user.retrieve()

//无数据返回

if ll_rowcount=0 then

return -1

end if

//把数据插入控件

for ll_row = 1 to ll_rowcount

this.additem(string(ids_user.object.data[ll_row,1]))

next

//成功返回0

return 0

//integer init(sqlstr string) 结束

现在下拉列表框已经能显示数据了,但是我们在选择数据的同时往往需要的不是它显示出来的值,比如显示的是人员姓名,而我们需要的是工号,难道再使用select语句把需要的数据检索出来吗?有了下面的程序,我们就不必头痛了。

重复上面建立函数的步骤,新建一个名为getdata的user object函数,返回值为"any"并在函数中写下程序:

//any getdata() 开始

any la_return

long ll_row

if text = '' then

return ''

end if

//没有选择或没有检索到数据

if ids_user.rowcount() = 0 or il_row = 0 then

return ''

end if

//在缺省情况下返回第二列的数据

la_return = ids_user.object.data[il_row, 2]

return la_return

//andy getdata() 结束

现在还不能返回正确的数据,还需要一个函数setidx(idx int),程序如下:

//setidx(idx int) 开始

il_row = idx

//setidx(idx int) 结束

现在这个user object已经完成了,我们来做一下试验试一试。新建一个应用app_test,一个窗口w_main,按照刚才的方法创建一个user object:uo_dbdropdownlistbox,放入w_main中。

在app_test的open事件中写下连接数据库的语句并加上open(w_main)

在w_main的open事件中写下:

int li_result

li_result = uo_1.init('select name, id from sysobjects')

在uo_1的selectionchanged事件中写下:setidx(index)

messagebox('提示', "看" + string(this.getdata()))

这时我们的用户对象已经能根据选择的name返回相应的id了。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons