昆明宇同思创系统集成有限公司(650031)
陈伟锋(e_mail: [url=mailto:ly_cwf@sohu.com]ly_cwf@sohu.com[/url] )
PB中selectrow()函数用来对数据窗口的行进行加亮显示。但不能对数据进行选择,笔者在进行数据库开发时,遇到需要对用户在数据窗口中的选定行进行操作,实现步骤介绍如下:
1、首先在window的instance variables中定义数组
//标识此行是否被选择(1:选择。0:未选择)
integer isselected[]
2、在window中的open事件中写进如下代码:
int i
long rowc//数据窗口总行数
DW_1.settransobject(sqlca)
dw_1.retrieve()
rowc=dw_1.rowcount()
for i=1 to rowc
isselected
=0
next
以下3,4参考:http://www.sybasebbs.com/sybase/dispbbs.asp?boardid=33&id=2398&star=1&page=1
3、在datawindow中的clicked中编写如下代码:
int i
if row0 then//当用户单击数据窗口标题时会选择全部行,这时row参数被置为0.
this.SelectRow(row,true)//选择此行
isselected[row]=1
end if
4、在datawindow中的doubleclicked中编写如下代码:
int i
if row0 then
this.SelectRow(row, false)//取消选择
isselected[row]=0
end if
5、"全部选定"和"全部不选定"按纽:
5.1"全部选定"按纽代码:
int i
long rowc//数据窗口总行数
rowc=dw_1.rowcount()
for i=1 to rowc
dw_1.setrow(i)
dw_1.selectrow(dw_1.getrow(),true)
isselected=1
next
5.2"全部不选定"按纽代码:
int i
long rowc//数据窗口总行数
rowc=dw_1.rowcount()
for i=1 to rowc
dw_1.setrow(i)
dw_1.selectrow(dw_1.getrow(),false)
isselected=0
next
6."确定"按纽代码(对所选择的数据进行处理):
int i
long rowc//数据窗口总行数
boolean ifnotselect//是否全部不选定
ifnotselect=false
rowc=dw_1.rowcount()
for i=1 to rowc
if isselected=1 then
ifnotselect=true
exit
end if
if i=rowc and isselected=0 then
close(parent)
end if
next
for i=1 to rowc
if isselected=1 then
dw_1.setrow(i)
//在此处输入对已选定的行的处理代码
end if
next
close(parent)
本技巧中的选择数据部分可以编写成user object ,作为用鼠标选择数据窗口中的多行的一个父类。