windev中自定義選定列的使用和注意事項

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

//方法二:還能夠根據選定行的行數和表格總行數比較來判斷,但方法一的效率更高。同時,方法一也展現了根據選定行隱藏和顯示按鈕的方法!
相關文章
相關標籤/搜索