windev系统默认的多选,须要使用Ctrl+或者Shift+来点选,使用并不方便,因此咱们通常在首列增长checkbox列,并在行头增长一个checkbox控制,做为全选使用。使用这个方法时,有几个地方须要注意:函数
一、如何得到已选定行的下标?spa
(1)首先要打开表格的多选模式,注意必定要打开多选模板,不然..Selecte或者TableSelectPlus都不起做用code
(2)经过For遍历,将checkbox为true的行的选定状态设置为true,以下:blog
FOR EACH ROW n OF TABLE_固定参数 IF TABLE_固定参数.COL_Select = True THEN TABLE_固定参数[n]..Selected = True END END
//或者
FOR EACH ROW n OF TABLE_固定参数
IF TABLE_固定参数.COL_Select = True THEN TableSelectPlus(TABLE_固定参数,n) END END
三、批量删除时,为何遍历使用TableDelete不起做用?table
TableDelete删除指定下标的行或者当前的选择行,当删除一行时,表格刷新,因减小了一行,因此下标都产生变化。若是必定要在表格层面操做批量删除的话,可结果第1点的多选,使用TableDeleteSelect,一次性删除选择行。以下代码所示:模板
//如下代码批量删除不生效
FOR EACH ROW n OF TABLE_固定参数 IF TABLE_固定参数.COL_Select = True THEN TableDelete(TABLE_固定参数)//或者TableDelete(TABLE_固定参数,n)
END END
//须要使用如下代码
FOR EACH ROW n OF TABLE_固定参数
IF TABLE_固定参数.COL_Select = True THEN
TableSelectPlus(TABLE_固定参数,n) //或者 TABLE_固定参数[n]..Selected = True
END
END
TableDeleteSelect(TABLE_固定参数)class
四、为何tablesave,tabledelete等函数都不起做用了?效率
注意表格绑定的数据是data file(实表)仍是Query(虚表)。若是是虚表,则table类的保存、更改或删除都不起做用,须要使用数据层面的函数。经过表格的绑定ID来HReadSeekFirst匹配。file
五、全选逻辑如何实现?遍历
(1)全选按钮True时,选定列全选(所有为True),全选按钮为False时,选定列全不选(所有为False)。代码以下:
FOR EACH ROW OF TABLE_固定参数 TABLE_固定参数.COL_Select = MySelf END
(2)选定列所有True时,全选按钮为True,选定列只要有一行为False,则全选按钮为False。代码以下:
//根据选定按钮,修改隐藏按钮状态 FOR EACH ROW n OF TABLE_固定参数 IF TABLE_固定参数[n].COL_Select THEN BTN_删除固定参数..Visible = True BREAK ELSE BTN_删除固定参数..Visible = False END END //根据选定按钮,修改全选按钮状态 CHECK_固定参数全选 = False FOR EACH ROW n OF TABLE_固定参数 IF NOT TABLE_固定参数[n].COL_Select THEN RETURN END END CHECK_固定参数全选 = True
//方法二:还能够根据选定行的行数和表格总行数比较来判断,但方法一的效率更高。同时,方法一也展现了根据选定行隐藏和显示按钮的方法!