hur.cn - 华软网

 热门搜索

各位数据窗口多行选择应该怎么实现?————盼望早日的到答案

  作者:未知    来源:网络    更新时间:2018/5/16
各位数据窗口多行选择应该怎么实现?————盼望早日的到答案

我要奖一个数据窗口中的多个不连续的行选中,然后在将其到入另一个数据窗口
盼望各位帮帮忙,要是有原代码参照就更好了
------华软网友回答------
刚刚做pb没多久,今天下午在公司做了一个,简单说说过程:
1.在数据窗口加入一个空的字段---'' as flag
2.在数据窗口中选中这个字段的edit属性,定义为checkbox,on为1,off为0
3.将空字段显示的checkbox放到数据窗口最前面,并且命名该列为“选中”
4.利用find函数写一个循环,找到flag为1的行放到另外的数据窗口中

------华软网友回复------
谢谢楼上的建议,这种方法我知道,不过我不想这么弄,当数据窗口里面的字段太多的时候看起来很不直观方便,我想选中一行这行就边亮,继续将所需要的行都变亮。如果不需要已选中的某行单击一下此行变为不亮。不过谢谢你呀,肯定会给你加分的!
来者有分呀!
------华软网友回复------
我也是刚刚学,不过公司的程序有这方面的代码,明天上班去看看。
我想在click事件里面写入让flag变化,然后在数据窗口的背景色设置里面写表达式,判断flag的状态来改变当前行的颜色应该也可以
------华软网友回复------
定义i_lng_lastrow为实例变量,用于记录上次单击的行
DataWindow的Clicked事件

long lng_currentrow,lng_j
if row=0 then
    return
else
    lng_currentrow=row //当前鼠标点中行
end if

if keydown(keyshift!) then //按下了SHIFT键
    if i_lng_lastrow=0 then //上次没选中任何行
        this.selectrow(lng_currentrow,true) 
        i_lng_lastrow=lng_currentrow
    else
        this.selectrow(0,false) //全都不选中
        if lng_currentrow>i_lng_lastrow then
            for lng_j=i_lng_lastrow to lng_currentrow
                this.selectrow(lng_j,true)
            next
        else
            for lng_j=i_lng_lastrow to lng_currentrow step -1
                this.selectrow(lng_j,true) 
            next
        end if 
    end if
else
    if keydown(keycontrol!) then //按下CTRL键
        i_lng_lastrow=lng_currentrow
        if this.isselected(lng_currentrow) then
            this.selectrow(lng_currentrow,false)
        else
            this.selectrow(lng_currentrow,true)
        end if 
    else //无任何键按下,选中当前行
        this.selectrow(0,false)
            this.selectrow(lng_currentrow,true)
        i_lng_lastrow=0
    end if
end if

倒数据的时候,遍历DataWindow中的数据,根据行号用isselected(行号)判断是否选中。

------华软网友回复------
datawindow clicked事件

if row<=0 then return

if dw_1.isselected(row) then
   parent.rowfocused(this,row,false)
else
   parent.rowfocused(this,row,true)
end if

parent rowfocused(datawindow dw,hightlight)函数
if row <=0 then return
dw.scrolltorow(row)
dw.selectrow(row,hightlight)

获取是否选中
int i
int li_addrow

if dw_1.rowcount()<=0 then return

for i = 1 to dw_1.rowcount()
if dw_1.isselected(i) then
li_addrow = dw_2.insertrow(0)
dw_2.object.paperid[li_addrow] = is_paperid
dw_2.object.questiontype[li_addrow] = integer(dw_1.object.cvalue[i])
dw_2.object.typename[li_addrow] = dw_1.object.cname[i]
dw_2.object.sortid[li_addrow] = li_addrow
end if
next

------华软网友回复------
同上
------华软网友回复------
leio((郁闷中...)) 已经说的很详细了!
------华软网友回复------
谢谢各位的帮忙 尤其感谢leio((郁闷中...))      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。