数据窗口中多行选中程序
来源:互联网 发布:网络标志图标 编辑:程序博客网 时间:2024/05/19 16:22
然后开始编写多行选中程序。程序算法描述如下:
1、如果按下了Control键
如果是在选中行上,取消该行
否则,选中该行
记录当前到窗口实例变量中
2、如果按下了Shift键
取消所有选中行
选中上次点击行和当前行之间的所有数据行
记录当前到窗口实例变量中
3、如果没有按键
如果点击行为选中行,不执行任何操作
否则,取消所有选中行,选中当前行
记录当前到窗口实例变量中
首先定义窗口实例变量:
long Il_LastRow = 1 //最后一次点击的行。
然后在窗口dw_1的Clicked事件中编写该脚本,程序如下:
LONG Ll_CurrentRow , Ll_Circle
IF row <= 0 THEN RETURN
Ll_CurrentRow = row //当前激活的行
IF keydown(keyshift!) THEN
IF Il_LastRow = 0 THEN
THIS.SelectRow(Ll_CurrentRow , True)//高亮当前行
Il_LastRow = Ll_CurrentRow
ELSE
THIS.SelectRow(0 , False)
IF Ll_CurrentRow > Il_LastRow THEN
FOR Ll_Circle = Il_LastRow TO Ll_CurrentRow
THIS.SelectRow(Ll_Circle , TRUE)
NEXT
ELSE
FOR Ll_Circle = Il_LastRow TO ll_CurrentRow STEP -1
THIS.SelectRow(Ll_Circle , TRUE)
NEXT
END IF
END IF
ELSE
Il_LastRow = Ll_CurrentRow
IF keydown(keycontrol!) THEN
THIS.SelectRow(Ll_CurrentRow , Not THIS.IsSelected(Ll_CurrentRow))
ELSE//单选情况
IF THIS.IsSelected(Ll_CurrentRow) = TRUE THEN //如果本身选中
Il_LastRow = Ll_CurrentRow
ELSE//如果没有选中,则选中该行,其他行不选中
THIS.SelectRow(0 , FALSE)
THIS.SelectRow(Ll_CurrentRow , TRUE)
Il_LastRow = Ll_CurrentRow
END IF
END IF
END IF
在DoubleClicked中,写如下代码取消所有已经选择的行:
THIS.SelectRow(0 , FALSE)
Il_LastRow = 0
- 数据窗口中多行选中程序
- PB数据窗口中多行选中程序
- PB 数据窗口datawindow选中行改变颜色
- 在pb数据窗口实现选中多行数据
- 控制另一个程序里的数据窗口
- 控制另一个程序里的数据窗口
- 外部程序读取Powerbuilder的数据窗口数据的方法
- 使数据窗口中的被选中行具有更好的外观
- 如何在数据窗口中加入一列空列做为选中一行的标志?
- DataWindow(PB)的获取数据窗口选中行的操作解疑!dw_1.getSelectedRow(long r)
- PowerBuilder 编辑数据窗口后保存 引起 PB程序崩溃
- 窗口程序
- 窗口程序
- 窗口程序
- 窗口程序
- 1.获取选中数据:
- js选中数据
- 数据窗口用键盘上的"上下方向"键移动选中行, selectrow函数触发rowfocuschanged事件
- 常识
- 本机图片缓存,距离上次好久了
- 调查称世界最受欢迎食物中餐排名第8
- 对外回调设计结合DLL应用
- 编程之美 2.14 子数组之后最大值 中的错误
- 数据窗口中多行选中程序
- 关于自定义alertdialog 遇到的inflateexception错误
- OracleCmd命令
- hdu 1.2.4
- 移动开发-Adobe Flex 4.5 SDK和Flash Builder 4.5
- 在Visual Studio 2010下编译C语言程序
- VS技巧
- 解决:Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceMode
- 编程之美 第三章 真是太弱太搞笑了