图学PowerBuilder---实现Datawindow多选的函数

先上一图看看效果

在PB的Datawindow中不似list等控件,默认不支持多选(CTRL、SHIFT)但可以通过代码来实现。下边就列出多选的实现方法。

补充说明:其它与其它开发工具中的选择行相比较而言,PB的Datawindow中的行默认情况下鼠标点选后,该行并没有选中,而是需要一个Boolean的变量标记行是否选中。

首先要在变量声明中定义如下变量:

代码放在这里,方便大家复制(呵呵)

boolean ib_multiSelect = True
long il_lastRow=0
long il_firstRow=0
int ii_current_style = 0
然后定义函数:

然后在函数体中加入如下实现代码:

long lCr
int iStep
string ls_CurObj, ls_CurCol
integer li_LinePos

if isnull(dw.dataobject) or len(string(dw.dataobject)) <= 0 then return
if row <> 0 then
	if (ib_multiSelect = True) then
		if KeyDown( KeyControl! ) then 
			if dw.isSelected( Row ) = True then
				dw.SelectRow( Row,False )
			else
				dw.SelectRow( Row,True )
				dw.SetRow( Row )
			end if
			il_FirstRow = Row
		else
			if KeyDown( KeyShift! ) then
				dw.SelectRow( 0,False )
				if Row > il_FirstRow then
					for lCr = il_FirstRow to Row
						if lCr>0 and lCr<=dw.Rowcount() then
							dw.SelectRow( lCr,True )
						end if
					next
				else
					for lCr = il_FirstRow to Row Step -1
						if lCr>0 and lCr<=dw.Rowcount() then
							dw.SelectRow( lCr,True )
						end if
					next
				end if
			else
				dw.SelectRow( 0,False )
				dw.SelectRow( Row,True )
				dw.SetRow( Row )
				il_FirstRow = Row
			end if
		end if  
	else
		dw.SelectRow( 0,False )
		if ii_current_style = 0 then
			dw.SelectRow( Row,True )
		end if
		dw.SetRow( Row )
		il_FirstRow = Row
	end if
end if

最后在Datawindow的Clicked中调用此方法即可:


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

原来搜索了一个类似的方法,但有些问题,感谢秦哥提供了方法,在那之上调整了通用的Datawindow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值