数据窗口中多行选中程序

  然后开始编写多行选中程序。程序算法描述如下:
  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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值