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
//方法二:還能夠根據選定行的行數和表格總行數比較來判斷,但方法一的效率更高。同時,方法一也展現了根據選定行隱藏和顯示按鈕的方法!