hur.cn - 华软网

 热门搜索

数据窗口多行选择

  作者:未知    来源:网络    更新时间:2018/1/1
怎么做到 数据窗口多行选择
------华软网友回答------
int li_flag
int i,n
n = dw.rowcount()
for i=1 to n
    li_flag = dw.getitemnumber(i,"sz")//sz为数据窗口中的一个标志字段,用以确定该行是否被选中
    if li_flag = 1 then
        dw.selectrow(row,true)
    else
        dw.selectrow(row,false)
next
即可
------华软网友回复------
我就是不想有这个标记字段 成不
------华软网友回复------
参考PFC的行选择服务可以做到这一点
------华软网友回复------
有几种选择模式:单行选择模式;多行选择模式,增量选择模式
但我现在总是用标志,把标志作一个checkbox,选中之后变色,比selectrow()选中的行漂亮多了
------华软网友回复------
标记字段好啊
不过也可以用数组来记录
------华软网友回复------
laoduan_78(游戏) 我认为是有缺陷的 
我想请问 如果按这方法来实现的话 应该写在数据窗口的什么事件中
clicked??
------华软网友回复------
在数据窗口控件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
满意么?分能多给些么?哈哈
------华软网友回复------
我在程序中只定义CTRL建:
long l_currentrow,l_lastrow,l_j

if row = 0 then 
return 
else
l_currentrow = row 
end if
l_lastrow = l_currentrow
if keydown(keycontrol!) then 
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


------华软网友回复------
解决了 
//首先定义一个实例变量:Int ii_LastRow = 0
Int li_i
If keydown(keyControl!) Then
ii_LastRow = row
This.SelectRow(row, Not This.IsSelected(row))
ElseIf keydown(keyShift!) Then
If ii_LastRow = 0 Then
ii_LastRow = row
For li_i = 1 To Row
This.SelectRow(li_i,True)
Next
Else
If ii_LastRow > row Then
This.SelectRow(0,False)
For li_i = row To ii_LastRow
This.SelectRow(li_i,True)
Next
Else
This.SelectRow(0,False)
For li_i = ii_LastRow To row
This.SelectRow(li_i,True)
Next
End If
End If
Else
ii_LastRow = row
This.SelectRow(0,False)
This.SelectRow(row,True)
End If      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。