眾所周知,Delphi ListView類直接進行Add、Update、Delete操作的速度是比較慢的,尤其是當數據量較 大時,比如數據量達到5000、10000、50000時,速度真是可以說是“慢得驚人”。其實快速操作的方法非常簡 單,就當大家都知道了。在本人的工作中,很多項目都用到ListView,並且對速度的響應要求比較高,於是發 生了快速操作ListView的代碼散布於多個項目大量模塊中的問題,並且,當界面層數據顯示要求發生改變時, 自然發生“重復性代碼的通用問題”。考慮到對以前版本的兼容性問題,也一直沒有引用第三方的成熟組件。 鑒於:“程序中的重復代碼最易引發問題,必須消除”的實踐經驗,自己設計了一個比較通用的解決此類問題 的類結構。當然,遠不是什麼“通用框架”了(眼下市面上很多人喜歡把自己做的無論什麼東西通稱為框架)。 在采用此結構的項目中,很容易實現MVC模式,達到業務邏輯與界面顯示分離的低級的、基礎的要求。
(因為,目前CSDN的軟件上傳功能不可用,我只有將部分代碼片斷放在文檔中,有需要完整源碼者,請 留言)
類層次結構:
ListView基礎操作封裝在LVControler包中,核心的類是TCXXLVControler:
(說明:LVControler 類是被封裝通用類結構內,外部用戶是不需要了解和訪問的,所以不作介紹。)
傳統的ListView操作基類是TLVCommonClass,如果想用傳統的方法增、刪、改ListView中的數據,可以直 接從此類繼承。
源碼如下:
具體的一個從此類繼承下來的用於Socket界面顯示的TLVSocket的類Overvivw如下:
源碼如下:
快速的ListView操作基類是TLVQuickClass,如果想用快速方法增、刪、改ListView中 的數據,可以直接從此類繼承。
主要方法:(可以看到,裡面沒有真正的Public方法,子類也僅需實現兩個Protected的virtual方法)
源碼如下:
此類中,要求每個具體應用的子類必須實現的方法僅有兩個:CheckFound():根據具體 應用檢測的數據是否已經存在;ProcOnDataDetail():客戶端ListView的OnData()事件的數據處理回調方法。 下面是幾個具體實現的子類的OverView:
具體的一個從此類繼承下來的用於Socket界面顯示的TLVQuickSocket的類Overvivw如下:
可以看出:子類實現了兩個抽象的虛方法,其它的方法,都是根據業務需要,類用戶自行增加的。