|
编写行选择函数
来源:不详 作者 佚名 点击数: 录入时间:07-12-19 21:21:14
我们在数据窗口中需要进行行选择操作,如用户为了修改数据或看到更详细的内容而选择了某一行;在另一些情况下,用户可能要同时删除或修改多行,这时,我们需要有使用户在一个数据窗口中同时选择多行的功能。这在PowerBuilder中是相当容易做到的,但是,如果在一个数据窗口祖先中没有标准的函数来处理这些,而在每个窗口中重复编程,就非常麻烦。 我们首先来看一看进行行选择的不同方法。 ·所有行都不加亮通常情况下数据窗口不加亮任何行。这对于那些只允许用户进行滚动和查看的数据列表或那些单行的数据窗口是合适的。 ·单行选择单行选择意味着用户在同一时间只能选择一行来执行一些动作,如删除或在主从关系的列表中显示详细信息,这是非常有用的。下面是实现单行选择功能的代码: Event: RowFocusChangedif GetRow() > 0 then SelectRow( 0, FALSE ) SelectRow( GetRow(), TRUE )end if·多行的自动选择多行的自动选择表现为:当用户点击一个未加亮的行时,该行将变亮;反之,用户点击一个加亮行,该行将不加亮。为了实现上述功能,在RowFocusChanged事件中加入如下代码: Event:RowFocusChangedObject: Any DataWindowif GetRow() > 0 then if IsSelected( GetRow() ) then SelectRow( GetRow(), FALSE ) else SelectRow( GetRow(), TRUE ) end ifend if或者简化成为下面的一行代码: if GetRow() > 0 then SelectRow( GetRow(), NOT IsSelected( GetRow()))·shift、control或control+shift+鼠标的使用Windows的文件管理器或其它Windows程序中,您可以使用Shift、Control或Control+Shift这种键盘与鼠标的组合来选择。PowerBuilder在数据窗口中没有提供这样的能力,我们必须自己实现。 我们应当实现的组合功能是: 要建立这样的功能,数据窗口必须记录当前的起始行。我们声明这样一个实例变量: protected long il_ anchor _ row当用户点击鼠标或进行了键盘操作时,我们要测试用户是否同时按下了Shift或Control键,方法是用KeyDown()函数,检查有没有KeyShift!和KeyControl!,如有这样的键按下则记录起始行。 编写行选择函数 为了在用户点击鼠标或进行键盘操作时使上述行为发生作用,我们必须在Clicked事件和一个映射到Pbm _ dwnkey事件的自定义用户事件中调用我们自己的行选择函数。这样,不管用户是点击鼠标还是击中键盘,选择行为都会发生。我们也可以将这个功能放入RowFocusChanged事件中。 为了使这个行选择功能可重用,这里我们建立两个函数。一个函数设置我们希望的选择行为类型,另外一个真正执行该选择行为。首先我们使用一个实例变量来设定选择行为的值: protected integer ii[1] [2] [3] 下一页 更多精彩:学习网->http://www.haohao888.com.cn 网络编程->http://www.51wlpc.com 电脑设备->http://www.xpmaster.cn
|