我有一個TListView後代,引入了從數據集中排序和加載等附加功能。在TListView後裔中檢查的處理項目
我現在希望修改該類,以便每當某個項目被選中或取消選中時,就會在檢查項目的內部列表中添加或刪除該項目,以便使用該組件實例的應用程序可以輕鬆地讀取該項目的編號和位置檢查項目而不必遍歷列表視圖中的所有項目。
不幸的是,TCustomListView似乎將檢查邏輯嵌入到一個大的消息處理函數中,而不是將檢查/取消檢查操作抽象爲一些可以重寫的內部方法(如DoCheck)。
我能想到的將我自己的行爲整齊地引入組件的唯一方法是劫持OnItemChecked屬性,導致該屬性讀取和寫入FOnItemCheckedUser(例如)而不是FOnItemChecked,將我自己的代碼放在FOnItemChecked中,並從我的代碼中調用FOnItemCheckedUser。
有沒有更直接的方法來處理這個問題?如果沒有,我的想法是否可行和安全?
由於您正在實現附加功能並創建自己的後代,您是否考慮過使用VirtualTreeView代替TLisView? –
我剛開始使用VirtualTreeView,但對於我在列表視圖類中做的事情,TListView更接近我需要的東西。 –