hur.cn - 华软网

 热门搜索

请问如何在DATAWINDOW里框取多行或用ctrl键选择多行?

  作者:未知    来源:网络    更新时间:2017/9/29
如题.
------华软网友回答------
if keydown(keycontrol!) then
if this.isselected(row) then
this.selectrow(row,false)
else
this.selectrow(row,true)
end if
end if
------华软网友回复------
修改楼上的一点
if keydown(keycontrol!) then
if this.isselected(row) then
this.selectrow(row,false)
else
this.selectrow(row,true)
end if
else
         this.selectrow(0,false) //取消整行的选择状态
end if

这段代码放在click事件中
------华软网友回复------
我给你一个可以实现数据窗口控件中多行选择的例子,附带联删除功能都给你了。你看看吧。
数据窗口控件dw_control中的点击clicked事件:

//以下程序用于数据窗口的多行选中操作
long l_currentrow
long l_j

if row = 0 then 
return 
else
l_currentrow = row //当前鼠标点中行
end if

if keydown(keyshift!) then  //按下Shift键
if l_lastrow = 0 then
this.selectrow(l_currentrow,true)
l_lastrow = l_currentrow
else
this.selectrow(0,false)
if l_currentrow > l_lastrow then
for l_j = l_lastrow to l_currentrow
this.selectrow(l_j,true)
next
else
for l_j=l_lastrow to l_currentrow step -1
this.selectrow(l_j,true)
next
end if
end if
else
l_lastrow = l_currentrow
if keydown(keycontrol!) then  //按下Ctrl键
if this.isselected(l_currentrow) then
this.selectrow(l_currentrow,false)
else
this.selectrow(l_currentrow,true)
end if
else  //无功能键按下
this.selectrow(0,false)
end if
end if

一般选择多行后会进行“删除”功能,该功能脚本在数据窗口控件的deleterow函数中脚本如下:
//此函数用于删除数据窗口中所有选中的行,代码如下:

long l_count , l_j

l_count = this.rowcount()
if l_count <> 0 then
for l_j = l_count to 0 step -1
if this.isselected(l_j) then
this.deleterow(l_j)
end if
end for
end if
该脚本把数据窗口主缓冲区中的选中数据移动到删除缓冲区中,并没有在数据库中删除相应的数据行,如果想同时删除数据库中的数据,则需要添加this.update()函数,并判断其返回值。然后根据其返回值1:COMMIT USING SQLCA;0:ROLLBACK USING SQLCA;
------华软网友回复------
看看pfc里面,有现成的
------华软网友回复------
不错
我前几天写了这样的代码,当时我用了数组记录当前用户选择的记录,在对选中的记录操作时调用数组中的记录数,现在看看,可以改一下了,,
谢谢阿

------华软网友回复------
不用PFC,PB中自带的EXAMPLE中就有吧
------华软网友回复------
看看,正需要。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。