数据窗口的多行选中问题!

sunnylake 2004-12-01 10:05:20
Gird类型的数据窗口,能否像Excel那样用鼠标拖动后,多行选中,我一直没找到合适的办法,请高手,赐教!
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangdatou 2004-12-02
  • 打赏
  • 举报
回复
都说了~~~说的差不多了~~~
我来看看
jb99334 2004-12-01
  • 打赏
  • 举报
回复
可以在鼠标事件(按下,松开)编写代码
WorldMobile 2004-12-01
  • 打赏
  • 举报
回复
可以的,需要你代码了

在Grid风格前面加一列,像Excel里的行号,点击时自动选中

然后往下拖动时也代码,应该不麻烦
wantsong 2004-12-01
  • 打赏
  • 举报
回复
keydown事件中
long ll_SelectedRow,row
row = this.GetRow()
//空格建
IF key = KeySpaceBar! THEN
st_selecttotal.Text = String(wf_setselect(this,row))
end if

//wf_setselect
long ll_SelectedRow
ll_SelectedRow = dw_1.GetSelectedRow(row - 1)
IF (ll_SelectedRow = row) THEN
dw_1.SelectRow(row, FALSE)
ELSE
dw_1.SelectRow(row, TRUE)
END IF
workhand 2004-12-01
  • 打赏
  • 举报
回复
不能吧,可以借助键盘,在按住ctrl键的同时,如果点击别的行时做多选处理,用代码控制
balloonman2002 2004-12-01
  • 打赏
  • 举报
回复
关键是处理好dw的mousedwn和mouseup事件,记录好各自事件中的row,就是你要选中的行范围,然后再作个循环借助selectrow即可
hwh88888 2004-12-01
  • 打赏
  • 举报
回复
在小类社区的右上角附近有一个提问的按钮,点击即可
hwh88888 2004-12-01
  • 打赏
  • 举报
回复
可以
IF row<=0 THEN Return

Long ll_StartRow,ll_EndRow
Integer li_i

IF KeyDown(KeyControl!) THEN
This.SelectRow(row,Not IsSelected(row))
Return
END IF

可以实现按ctrl键多选
abarcher 2004-12-01
  • 打赏
  • 举报
回复
搞不懂!!!!请问怎样才能自己发表问题????
WorldMobile 2004-12-01
  • 打赏
  • 举报
回复
楼上的,看清题目再贴代码,呵呵

建议楼主,不要怕麻烦
considerer 2004-12-01
  • 打赏
  • 举报
回复
首先定义窗口实例变量:
long il_LastSelectedRow = 1
然后开始编写多行选中程序。程序算法描述如下:
1、如果按下了Control键
如果是在选中行上,取消该行
否则,选中该行
记录当前到窗口实例变量中
2、如果按下了Shift键
取消所有选中行
选中上次点击行和当前行之间的所有数据行
记录当前到窗口实例变量中
3、如果没有按键
如果点击行为选中行,不执行任何操作
否则,取消所有选中行,选中当前行
记录当前到窗口实例变量中
比如,我们在窗口dw_1的Clicked事件中编写该脚本,程序如下:
long ll_Start
long ll_End
long ll_index

if Row < 1 then return

if KeyDown(KeyControl!) then
if This.IsSelected(Row) then
This.SelectRow(Row,False)
else
This.SelectRow(Row,True)
end if
elseif KeyDown(KeyShift!) then
if Row < il_LastSelectedRow then
ll_Start = Row
ll_End = il_LastSelectedRow
else
ll_Start = il_LastSelectedRow
ll_End = Row
end if

This.SelectRow(0,False)
For ll_index = ll_Start to ll_End
This.SelectRow(ll_index,True)
next
else
if Not This.IsSelected(Row) then
This.SelectRow(0,False)
This.SelectRow(Row,True)
end if
end if

il_LastSelectedRow = Row

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧