Delphi ListView快速操作通用实现

Delphi ListView快速操作通用实现

作者:成晓旭

众所周知,Delphi ListView类直接进行AddUpdateDelete操作的速度是比较慢的,尤其是当数据量较大时,比如数据量达到50001000050000时,速度真是可以说是“慢得惊人”。其实快速操作的方法非常简单,就当大家都知道了。在本人的工作中,很多项目都用到ListView,并且对速度的响应要求比较高,于是发生了快速操作ListView的代码散布于多个项目大量模块中的问题,并且,当界面层数据显示要求发生改变时,自然发生“重复性代码的通用问题”。考虑到对以前版本的兼容性问题,也一直没有引用第三方的成熟组件。鉴于:“程序中的重复代码最易引发问题,必须消除”的实践经验,自己设计了一个比较通用的解决此类问题的类结构。当然,远不是什么“通用框架”了(眼下市面上很多人喜欢把自己做的无论什么东西通称为框架)。在采用此结构的项目中,很容易实现MVC模式,达到业务逻辑与界面显示分离的低级的、基础的要求。

(因为,目前****的软件上传功能不可用,我只有将部分代码片断放在文档中,有需要完整源码者,请留言)

类层次结构:

Delphi ListView快速操作通用实现

ListView基础操作封装在LVControler包中,核心的类是TCXXLVControler

(说明:LVControler类是被封装通用类结构内,外部用户是不需要了解和访问的,所以不作介绍。)

Delphi ListView快速操作通用实现

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="[email protected]@[email protected]@[email protected]@[email protected]@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 281.25pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image001.png" o:title="LVControler"></imagedata></shape>

传统的ListView操作基类是TLVCommonClass,如果想用传统的方法增、删、改ListView中的数据,可以直接从此类继承。

Delphi ListView快速操作通用实现

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 372pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image003.png" o:title="CommonClass"></imagedata></shape>

源码如下:

具体的一个从此类继承下来的用于Socket界面显示的TLVSocket的类Overvivw如下:

Delphi ListView快速操作通用实现

<shape id="_x0000_i1027" style="WIDTH: 367.5pt; HEIGHT: 315pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image005.png" o:title="commonSocket"></imagedata></shape>

源码如下:

快速的ListView操作基类是TLVQuickClass,如果想用快速方法增、删、改ListView中的数据,可以直接从此类继承。

Delphi ListView快速操作通用实现

<shape id="_x0000_i1028" style="WIDTH: 414.75pt; HEIGHT: 397.5pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image007.png" o:title="quickClass"></imagedata></shape>

主要方法:(可以看到,里面没有真正的Public方法,子类也仅需实现两个Protectedvirtual方法)

Delphi ListView快速操作通用实现

<shape id="_x0000_i1057" style="WIDTH: 414.75pt; HEIGHT: 370.5pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image012.png" o:title="method"></imagedata></shape>

源码如下:

此类中,要求每个具体应用的子类必须实现的方法仅有两个:CheckFound():根据具体应用检测的数据是否已经存在;ProcOnDataDetail():客户端ListViewOnData()事件的数据处理回调方法。下面是几个具体实现的子类的OverView

Delphi ListView快速操作通用实现

<shape id="_x0000_i1055" style="WIDTH: 414.75pt; HEIGHT: 303.75pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image014.png" o:title="Quick Client"></imagedata></shape>

具体的一个从此类继承下来的用于Socket界面显示的TLVQuickSocket的类Overvivw如下:

Delphi ListView快速操作通用实现

<shape id="_x0000_i1056" style="WIDTH: 415.5pt; HEIGHT: 291pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/CHENGX~1/LOCALS~1/Temp/msohtml1/01/clip_image016.png" o:title="quick socket"></imagedata></shape>

可以看出:子类实现了两个抽象的虚方法,其它的方法,都是根据业务需要,类用户自行增加的。

源码如下:

Delphi ListView快速操作通用实现//------------------------------------------------------------------------------
Delphi ListView快速操作通用实现
//
Delphi ListView快速操作通用实现
//产品名称:成晓旭的个人软件Delphi源码库
Delphi ListView快速操作通用实现
//产品版本:CXXSoftdelphicodesourcelib1.0
Delphi ListView快速操作通用实现
//模块名称:Delphi之ListView显示控制类---应用层:Softsocket类定义单元
Delphi ListView快速操作通用实现
//模块描述:
Delphi ListView快速操作通用实现
//单元文件:unLVSoftSocket.pas-->unLVQuickSocket.pas
Delphi ListView快速操作通用实现
//开发作者:成晓旭
Delphi ListView快速操作通用实现
//备注:任何人使用此文件时,请保留此段自述文件,谢谢!
Delphi ListView快速操作通用实现
//开发时间:2005-09-26
Delphi ListView快速操作通用实现
//
Delphi ListView快速操作通用实现
//修改历史:2006-06-16
Delphi ListView快速操作通用实现
//修改描述:增加通过TList来高速增加、更新、删除数据
Delphi ListView快速操作通用实现
//先用吧,以后再优化和完善
Delphi ListView快速操作通用实现
//修改历史:2006-07-10
Delphi ListView快速操作通用实现
//修改描述:成功地将ListView的OnData事件的List对象移入此类中
Delphi ListView快速操作通用实现
//修改历史:2006-07-11
Delphi ListView快速操作通用实现
//修改描述:重大重构:将此类分成两个类:TLVSoftSocket-->TLVSoftSocket和TLVQuickSocket
Delphi ListView快速操作通用实现
//以遵循SRP原则
Delphi ListView快速操作通用实现
//------------------------------------------------------------------------------
Delphi ListView快速操作通用实现
unitunLVQuickSocket;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
interface
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现uses
Delphi ListView快速操作通用实现ComCtrls,Classes,SysUtils,Windows,
Delphi ListView快速操作通用实现unLVQuickClass,unLVDefine;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现type
Delphi ListView快速操作通用实现TLVQuickSocket
=class(TLVQuickClass)
Delphi ListView快速操作通用实现
private
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
protected
Delphi ListView快速操作通用实现
classfunctionCheckFound(constpData:Pointer;constaKey:variant):boolean;override;
Delphi ListView快速操作通用实现
classprocedureProcOnDataDetail(constpData:Pointer;varItem:TListItem);override;
Delphi ListView快速操作通用实现
public
Delphi ListView快速操作通用实现constructorCreate();
Delphi ListView快速操作通用实现destructorDestroy();override;
Delphi ListView快速操作通用实现procedureInitListView(varlvTemp:TListView);
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
//快速方法
Delphi ListView快速操作通用实现
//暂时这样增加,以后在重构到基类中
Delphi ListView快速操作通用实现
procedureAddToLVSocketQuick(constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现procedureUpdateLVSocketQuick(
constaUniqueID:integer;constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现procedureDeleteLVSocketQuick(
constaUniqueID:integer;constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现procedureDeleteAllLVSocket(varlvTemp:TListView);
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureOnDataEvent(Item:TListItem);
Delphi ListView快速操作通用实现functionGetDataCount():integer;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现implementation
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现Delphi ListView快速操作通用实现
...{TLVQuickSocket}
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickSocket.AddToLVSocketQuick(
Delphi ListView快速操作通用实现
constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现AddItemDataToListView(@aSocketStatus,sizeof(aSocketStatus),lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
classfunctionTLVQuickSocket.CheckFound(constpData:Pointer;
Delphi ListView快速操作通用实现
constaKey:variant):boolean;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现p:
^TSocketStatusInfo;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现p:
=pData;
Delphi ListView快速操作通用实现Result:
=(p.UniqueID=aKey);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现constructorTLVQuickSocket.Create;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现inheritedCreate();
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickSocket.DeleteAllLVSocket(varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现DeleteAllListView(lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickSocket.DeleteLVSocketQuick(
constaUniqueID:integer;
Delphi ListView快速操作通用实现
constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现DeleteItemDataToListView(aUniqueID,@aSocketStatus,sizeof(aSocketStatus),lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现destructorTLVQuickSocket.Destroy;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现inheritedDestroy;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVQuickSocket.GetDataCount():integer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=Self.GetLVListCount();
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickSocket.InitListView(varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现InitListViewColumns(SocketStrBuffer,SocketWidthBuffer,lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickSocket.OnDataEvent(Item:TListItem);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Self.OnDataToListView(Item);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
classprocedureTLVQuickSocket.ProcOnDataDetail(constpData:Pointer;varItem:TListItem);
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现pSocket:
^TSocketStatusInfo;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
//这两个有什么不同?
Delphi ListView快速操作通用实现
//CopyMemory(pSocket,pData,sizeof(TSocketStatusInfo));
Delphi ListView快速操作通用实现
pSocket:=pData;
Delphi ListView快速操作通用实现Item.Caption:
=IntToStr(pSocket.GroupID);
Delphi ListView快速操作通用实现Item.SubItems.Add(IntToStr(pSocket.UniqueID));
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.IPAddress);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.SubItemName);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.LoginTime);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.SendNumber);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.RecNumber);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.Remark);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickSocket.UpdateLVSocketQuick(
constaUniqueID:integer;
Delphi ListView快速操作通用实现
constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现UpdateItemDataToListView(aUniqueID,@aSocketStatus,sizeof(aSocketStatus),lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现end.

小结:

应用此类结构实现ListView快速数据操作的优势:

<!--[if !supportLists]-->1、 <!--[endif]-->可以快速实现MVC模式,达到界面显示与业务逻辑的分离。在Controllor类中,实例化数据显示子类,调用相应方法即可实现显示数据的增、删、改。

<!--[if !supportLists]-->2、 <!--[endif]-->与原始的快速方法相比,封装了内存数据List,大大简化了List对象的操作(尤其是当有很多相同或者类似数据要求在不同FormListView中显示时),并减少了List的创建、数据操作、释放等操作时发生错误的可能性。

<!--[if !supportLists]-->3、 <!--[endif]-->简化了多个相同、类似数据显示的控制代码,针对每个份要显示的数据及ListView,只需要实例化一个显示子类,避免了直接应用原始的快速方法时,控制代码分散在每一个具体Form类中的问题。

<!--[if !supportLists]-->4、 <!--[endif]-->对显示数据的业务信息份进行了集中,当要求显示的信息发生变化时,只需在数据显示子类这一个类中更改即可。

此通用类结构仍有些不足之处,欢迎有兴趣的朋友继续完善:

<!--[if !supportLists]-->1、<!--[endif]-->每个应用层类的外部调用方式非常类似(请参考开发的示例源码),表明,有些通用的方法没有进行更好的抽象。

<!--[if !supportLists]-->2、<!--[endif]-->快速访问基类对其子类的行为抽象不充分,导致子类的应用层调用代码非常类似。当初这样设计的目的是想保持类结构有充分的可扩展性。其实完全可以将基类进行改良:将抽象的虚方法更换成接口,这样,基类实现的更好的封装,并且更好地满足了“向稳定的方向依赖”“针对接口编程”的设计原则。这样,应用层还是要实例化一个自己业务需要的类来实现此接口。但Delphi的接口用起来不像是真正的接口,通常要从TInterfacedObject等类继承,大大限制了类结构层次的演化。(因为在不支持多继承的语言环境中,如果还想增加更高层次的抽象就不那么容易了)

<!--[if !supportLists]-->3、<!--[endif]-->当前的版本还没有提供针对某列进行数据排序的功能。

Delphi ListView快速操作通用实现//------------------------------------------------------------------------------
Delphi ListView快速操作通用实现
//
Delphi ListView快速操作通用实现
//产品名称:成晓旭的个人软件Delphi源码库
Delphi ListView快速操作通用实现
//产品版本:CXXSoftdelphicodesourcelib1.0
Delphi ListView快速操作通用实现
//模块名称:Delphi之ListView显示控制类---外部应用层通用类定义单元
Delphi ListView快速操作通用实现
//模块描述:ListView快速操作方法类
Delphi ListView快速操作通用实现
//单元文件:unLVCommonClass.pas--->unLVQuickClass.pas
Delphi ListView快速操作通用实现
//开发作者:成晓旭
Delphi ListView快速操作通用实现
//备注:任何人使用此文件时,请保留此段自述文件,谢谢!
Delphi ListView快速操作通用实现
//开发时间:2005-09-26
Delphi ListView快速操作通用实现
//修改历史:2006-05-31
Delphi ListView快速操作通用实现
//修改描述:解决GetLVItemOrderByValue()的参数不灵活的问题
Delphi ListView快速操作通用实现
//并解决Method'Create'hidesvirtualmethodofbasetype'TComponent'的问题
Delphi ListView快速操作通用实现
//修改历史:2006-06-16
Delphi ListView快速操作通用实现
//修改描述:增加通过TList来高速增加、更新、删除数据
Delphi ListView快速操作通用实现
//先用吧,以后再优化和完善
Delphi ListView快速操作通用实现
//修改历史:2006-07-10
Delphi ListView快速操作通用实现
//修改描述:成功地将ListView的OnData事件的List对象移入此类中,并将其上移到其类
Delphi ListView快速操作通用实现
//修改历史:2006-07-11
Delphi ListView快速操作通用实现
//修改描述:重大重构:将此类分成两个类:TLVCommonClass-->TLVCommonClass和TLVQuickClass,
Delphi ListView快速操作通用实现
//以遵循SRP原则
Delphi ListView快速操作通用实现
//------------------------------------------------------------------------------
Delphi ListView快速操作通用实现
unitunLVQuickClass;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
interface
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现uses
Delphi ListView快速操作通用实现SysUtils,Classes,ComCtrls,Windows,Variants,
Delphi ListView快速操作通用实现unLVControler;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
const
Delphi ListView快速操作通用实现SpecialItemOrder
=-1;
Delphi ListView快速操作通用实现CSImg_Normal
=0;
Delphi ListView快速操作通用实现CSImg_Running
=1;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现GetColumnOrder
=0;
Delphi ListView快速操作通用实现type
Delphi ListView快速操作通用实现TLVQuickClass
=class(TInterfacedObject)
Delphi ListView快速操作通用实现
private
Delphi ListView快速操作通用实现cxxLVC:TCXXLVControler;
Delphi ListView快速操作通用实现lvDataList:TList;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
//为ListView的Item的Data属性查询关键数据在TList中的索引号
Delphi ListView快速操作通用实现
classfunctionGetListDataIndexByKey(constlistData:TList;constaKey:variant):integer;
Delphi ListView快速操作通用实现
//快速
Delphi ListView快速操作通用实现
procedureClearLVDataList();
Delphi ListView快速操作通用实现
protected
Delphi ListView快速操作通用实现
//注意:约定最后一项一定是ImageIndex
Delphi ListView快速操作通用实现
//tmpList:TStringList;
Delphi ListView快速操作通用实现
functionInitListViewColumns(constdisplayName:arrayofstring;
Delphi ListView快速操作通用实现
constdisplayWidth:arrayofinteger;
Delphi ListView快速操作通用实现varlvTemp:TListView):
boolean;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
//子类必须实现
Delphi ListView快速操作通用实现
classfunctionCheckFound(constpData:Pointer;constaKey:variant):boolean;virtual;abstract;
Delphi ListView快速操作通用实现
classprocedureProcOnDataDetail(constpData:Pointer;varItem:TListItem);virtual;abstract;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
//快速方法
Delphi ListView快速操作通用实现
//[注意:新方法中lvList不要求传递参数,保留以兼容旧客户端版本]
Delphi ListView快速操作通用实现
//将pData数据加入List中,实现向ListView增加数据行
Delphi ListView快速操作通用实现
functionAddItemDataToListView(constpData:Pointer;constdataNumber:integer;
Delphi ListView快速操作通用实现varlvTemp:TListView):
boolean;
Delphi ListView快速操作通用实现
//;varlvList:TList=nil):boolean;
Delphi ListView快速操作通用实现
//以aKey为关键值查找,并用pData数据更新List中满足条件的内存块,实现向ListView更新数据行
Delphi ListView快速操作通用实现
functionUpdateItemDataToListView(constaKey:variant;constpData:Pointer;constdataNumber:integer;
Delphi ListView快速操作通用实现varlvTemp:TListView):
boolean;
Delphi ListView快速操作通用实现
//;varlvList:TList=nil):boolean;
Delphi ListView快速操作通用实现
//以aKey为关键值查找,并用pData数据删除List中满足条件的内存块,实现向ListView删除数据行
Delphi ListView快速操作通用实现
functionDeleteItemDataToListView(constaKey:variant;constpData:Pointer;constdataNumber:integer;
Delphi ListView快速操作通用实现varlvTemp:TListView):
boolean;
Delphi ListView快速操作通用实现
//;varlvList:TList=nil):boolean;
Delphi ListView快速操作通用实现
//删除List中所有内存区,实现将ListView清空所有数据行
Delphi ListView快速操作通用实现
procedureDeleteAllListView(varlvTemp:TListView);
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
//ListVisw的OnData事件处理
Delphi ListView快速操作通用实现
procedureOnDataToListView(varItem:TListItem);
Delphi ListView快速操作通用实现
//ListVisw的OnData事件的ListCount
Delphi ListView快速操作通用实现
functionGetLVListCount():integer;
Delphi ListView快速操作通用实现
public
Delphi ListView快速操作通用实现constructorCreate();overload;
Delphi ListView快速操作通用实现destructorDestroy();override;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现implementation
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现Delphi ListView快速操作通用实现
...{TLVQuickClass}
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVQuickClass.AddItemDataToListView(
constpData:Pointer;
Delphi ListView快速操作通用实现
constdataNumber:integer;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现
//;varlvList:TList):boolean;
Delphi ListView快速操作通用实现
var
Delphi ListView快速操作通用实现pTemp:Pointer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
//注意:要影响性能
Delphi ListView快速操作通用实现
//lvTemp.Items.BeginUpdate();
Delphi ListView快速操作通用实现
Result:=false;
Delphi ListView快速操作通用实现
ifNOT(Assigned(pData)andAssigned(lvTemp)andAssigned(lvDataList))thenExit;
Delphi ListView快速操作通用实现
//new(pTemp);
Delphi ListView快速操作通用实现
GetMem(pTemp,dataNumber);
Delphi ListView快速操作通用实现lvTemp.OwnerData:
=true;
Delphi ListView快速操作通用实现CopyMemory(pTemp,pData,dataNumber);
Delphi ListView快速操作通用实现lvDataList.Add(pTemp);
Delphi ListView快速操作通用实现Result:
=true;
Delphi ListView快速操作通用实现
//注意:要影响性能
Delphi ListView快速操作通用实现
//lvTemp.Items.Count:=lvList.Count;
Delphi ListView快速操作通用实现
//lvTemp.Items.EndUpdate();
Delphi ListView快速操作通用实现
end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickClass.ClearLVDataList();
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现Loop:integer;
Delphi ListView快速操作通用实现pTemp:Pointer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifNOT(Assigned(lvDataList)and(lvDataList.Count>0))thenExit;
Delphi ListView快速操作通用实现
forLoop:=0tolvDataList.Count-1do
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现pTemp:
=(lvDataList.Items[Loop]);
Delphi ListView快速操作通用实现
ifAssigned(pTemp)then
Delphi ListView快速操作通用实现FreeMem(pTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现constructorTLVQuickClass.Create;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现inheritedCreate();
Delphi ListView快速操作通用实现cxxLVC:
=TCXXLVControler.Create();
Delphi ListView快速操作通用实现
//tmpList:=TStringList.Create();
Delphi ListView快速操作通用实现
lvDataList:=TList.Create();
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickClass.DeleteAllListView(varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifNOT(Assigned(lvTemp)andAssigned(lvDataList)and(lvDataList.Count>0))thenExit;
Delphi ListView快速操作通用实现lvTemp.OwnerData:
=true;
Delphi ListView快速操作通用实现lvTemp.Items.BeginUpdate();
Delphi ListView快速操作通用实现
while(lvDataList.Count>0)do
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Dispose(lvDataList[
0]);
Delphi ListView快速操作通用实现lvDataList.Delete(
0);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现lvTemp.Items.Count:
=lvDataList.Count;
Delphi ListView快速操作通用实现lvTemp.Items.EndUpdate();
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVQuickClass.DeleteItemDataToListView(
constaKey:variant;
Delphi ListView快速操作通用实现
constpData:Pointer;constdataNumber:integer;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现
//varlvList:TList):boolean;
Delphi ListView快速操作通用实现
var
Delphi ListView快速操作通用实现colIndex:integer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
//注意:要影响性能
Delphi ListView快速操作通用实现
//lvTemp.Items.BeginUpdate();
Delphi ListView快速操作通用实现
Result:=false;
Delphi ListView快速操作通用实现
ifNOT(Assigned(pData)andAssigned(lvTemp)andAssigned(lvDataList)and(lvDataList.Count>0))thenExit;
Delphi ListView快速操作通用实现colIndex:
=GetListDataIndexByKey(lvDataList,aKey);
Delphi ListView快速操作通用实现
if(colIndex<>SpecialItemOrder)and(colIndex>=0)and(colIndex<=lvDataList.Count-1)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Dispose(lvDataList[colIndex]);
Delphi ListView快速操作通用实现lvDataList.Delete(colIndex);
Delphi ListView快速操作通用实现Result:
=true;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
//注意:要影响性能
Delphi ListView快速操作通用实现
//lvTemp.Items.Count:=lvList.Count;
Delphi ListView快速操作通用实现
//lvTemp.Items.EndUpdate();
Delphi ListView快速操作通用实现
end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现destructorTLVQuickClass.Destroy;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现ClearLVDataList();
Delphi ListView快速操作通用实现
ifAssigned(lvDataList)then
Delphi ListView快速操作通用实现FreeAndNil(lvDataList);
Delphi ListView快速操作通用实现
ifAssigned(cxxLVC)then
Delphi ListView快速操作通用实现FreeAndNil(cxxLVC);
Delphi ListView快速操作通用实现
//ifAssigned(tmpList)then
Delphi ListView快速操作通用实现
//FreeAndNil(tmpList);
Delphi ListView快速操作通用实现
inheritedDestroy;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
classfunctionTLVQuickClass.GetListDataIndexByKey(constlistData:TList;
Delphi ListView快速操作通用实现
constaKey:variant):integer;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现Loop:integer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=SpecialItemOrder;
Delphi ListView快速操作通用实现
ifNOTAssigned(listData)thenExit;
Delphi ListView快速操作通用实现
iflistData.Count<=0thenExit;
Delphi ListView快速操作通用实现
forLoop:=0tolistData.Count-1do
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifCheckFound(listData[Loop],aKey)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=Loop;
Delphi ListView快速操作通用实现
break;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVQuickClass.GetLVListCount():integer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=0;
Delphi ListView快速操作通用实现
ifAssigned(lvDataList)then
Delphi ListView快速操作通用实现Result:
=lvDataList.Count;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVQuickClass.InitListViewColumns(
constdisplayName:arrayofstring;
Delphi ListView快速操作通用实现
constdisplayWidth:arrayofinteger;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=false;
Delphi ListView快速操作通用实现
ifAssigned(cxxLVC)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现cxxLVC.InitLVColumns(displayName,displayWidth,lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVQuickClass.OnDataToListView(varItem:TListItem);
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现pTemp:Pointer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
//以后要移到类中,做成回调
Delphi ListView快速操作通用实现
ifNOTAssigned(lvDataList)thenExit;
Delphi ListView快速操作通用实现
iflvDataList.Count<=0thenExit;
Delphi ListView快速操作通用实现
ifItem.Index>lvDataList.CountthenExit;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现pTemp:
=lvDataList[Item.Index];
Delphi ListView快速操作通用实现ProcOnDataDetail(pTemp,Item);
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现Item.ImageIndex:
=1;
Delphi ListView快速操作通用实现Item.Data:
=pTemp;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVQuickClass.UpdateItemDataToListView(
constaKey:variant;
Delphi ListView快速操作通用实现
constpData:Pointer;constdataNumber:integer;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现
//varlvList:TList):boolean;
Delphi ListView快速操作通用实现
var
Delphi ListView快速操作通用实现colIndex:integer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
//注意:要影响性能
Delphi ListView快速操作通用实现
//lvTemp.Items.BeginUpdate();
Delphi ListView快速操作通用实现
Result:=false;
Delphi ListView快速操作通用实现
ifNOT(Assigned(pData)andAssigned(lvTemp)andAssigned(lvDataList)and(lvDataList.Count>0))thenExit;
Delphi ListView快速操作通用实现colIndex:
=GetListDataIndexByKey(lvDataList,aKey);
Delphi ListView快速操作通用实现
if(colIndex<>SpecialItemOrder)and(colIndex>=0)and(colIndex<=lvDataList.Count-1)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现CopyMemory(lvDataList[colIndex],pData,dataNumber);
Delphi ListView快速操作通用实现Result:
=true;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
//注意:要影响性能
Delphi ListView快速操作通用实现
//lvTemp.Items.Count:=lvList.Count;
Delphi ListView快速操作通用实现
//lvTemp.Items.EndUpdate();
Delphi ListView快速操作通用实现
end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现end.

Delphi ListView快速操作通用实现//------------------------------------------------------------------------------
Delphi ListView快速操作通用实现
//
Delphi ListView快速操作通用实现
//产品名称:成晓旭的个人软件Delphi源码库
Delphi ListView快速操作通用实现
//产品版本:CXXSoftdelphicodesourcelib1.0
Delphi ListView快速操作通用实现
//模块名称:Delphi之ListView显示控制类---应用层:Softsocket类定义单元
Delphi ListView快速操作通用实现
//模块描述:
Delphi ListView快速操作通用实现
//单元文件:unLVSoftSocket.pas-->unLVSocket.pas
Delphi ListView快速操作通用实现
//开发作者:成晓旭
Delphi ListView快速操作通用实现
//备注:任何人使用此文件时,请保留此段自述文件,谢谢!
Delphi ListView快速操作通用实现
//开发时间:2005-09-26
Delphi ListView快速操作通用实现
//
Delphi ListView快速操作通用实现
//修改历史:2006-06-16
Delphi ListView快速操作通用实现
//修改描述:增加通过TList来高速增加、更新、删除数据
Delphi ListView快速操作通用实现
//先用吧,以后再优化和完善
Delphi ListView快速操作通用实现
//修改历史:2006-07-10
Delphi ListView快速操作通用实现
//修改描述:成功地将ListView的OnData事件的List对象移入此类中
Delphi ListView快速操作通用实现
//修改历史:2006-07-11
Delphi ListView快速操作通用实现
//修改描述:重大重构:将此类分成两个类:TLVSoftSocket-->TLVSocket和TLVQuickClass
Delphi ListView快速操作通用实现
//以遵循SRP原则
Delphi ListView快速操作通用实现
//------------------------------------------------------------------------------
Delphi ListView快速操作通用实现
unitunLVSocket;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
interface
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现uses
Delphi ListView快速操作通用实现ComCtrls,Classes,SysUtils,Windows,
Delphi ListView快速操作通用实现unLVCommonClass,unLVDefine;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现type
Delphi ListView快速操作通用实现TLVSocket
=class(TLVCommonClass)
Delphi ListView快速操作通用实现
private
Delphi ListView快速操作通用实现
//注意:此方法与顺序严重藕合
Delphi ListView快速操作通用实现
functionSaveSerialStatusToStringList(constaSocketStatus:TSocketStatusInfo):boolean;
Delphi ListView快速操作通用实现
protected
Delphi ListView快速操作通用实现
classfunctionCheckFound(constpData:Pointer;constaKey:variant):boolean;override;
Delphi ListView快速操作通用实现
classprocedureProcOnDataDetail(constpData:Pointer;varItem:TListItem);override;
Delphi ListView快速操作通用实现
public
Delphi ListView快速操作通用实现constructorCreate();
Delphi ListView快速操作通用实现destructorDestroy();override;
Delphi ListView快速操作通用实现procedureInitListView(varlvTemp:TListView);
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
//传统方法
Delphi ListView快速操作通用实现
procedureAddToLVSocket(constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现procedureUpdateLVSocket(
constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现procedureDeleteLVSocket(
constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现implementation
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现Delphi ListView快速操作通用实现
...{TLVSocket}
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVSocket.AddToLVSocket(
Delphi ListView快速操作通用实现
constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifSaveSerialStatusToStringList(aSocketStatus)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现AddDataToListView(tmpList,lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
classfunctionTLVSocket.CheckFound(constpData:Pointer;
Delphi ListView快速操作通用实现
constaKey:variant):boolean;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现p:
^TSocketStatusInfo;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现p:
=pData;
Delphi ListView快速操作通用实现Result:
=(p.UniqueID=aKey);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现constructorTLVSocket.Create;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现inheritedCreate();
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVSocket.DeleteLVSocket(
Delphi ListView快速操作通用实现
constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifSaveSerialStatusToStringList(aSocketStatus)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现DeleteDataFromListView(tmpList,lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现destructorTLVSocket.Destroy;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现inheritedDestroy;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVSocket.InitListView(varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现InitListViewColumns(SocketStrBuffer,SocketWidthBuffer,lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
classprocedureTLVSocket.ProcOnDataDetail(constpData:Pointer;varItem:TListItem);
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现pSocket:
^TSocketStatusInfo;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
//这两个有什么不同?
Delphi ListView快速操作通用实现
//CopyMemory(pSocket,pData,sizeof(TSocketStatusInfo));
Delphi ListView快速操作通用实现
pSocket:=pData;
Delphi ListView快速操作通用实现Item.Caption:
=IntToStr(pSocket.GroupID);
Delphi ListView快速操作通用实现Item.SubItems.Add(IntToStr(pSocket.UniqueID));
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.IPAddress);
Delphi ListView快速操作通用实现
//Item.SubItems.Add(IntToStr(pSocket.CommServerPort));
Delphi ListView快速操作通用实现
Item.SubItems.Add(pSocket.SubItemName);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.LoginTime);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.SendNumber);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.RecNumber);
Delphi ListView快速操作通用实现Item.SubItems.Add(pSocket.Remark);
Delphi ListView快速操作通用实现
//Item.SubItems.Add(pSocket.IPAddress);
Delphi ListView快速操作通用实现
//Item.SubItems.Add(pSocket.IPAddress);
Delphi ListView快速操作通用实现
end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVSocket.SaveSerialStatusToStringList(
Delphi ListView快速操作通用实现
constaSocketStatus:TSocketStatusInfo):boolean;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=false;
Delphi ListView快速操作通用实现
ifAssigned(tmpList)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现tmpList.Clear();
Delphi ListView快速操作通用实现tmpList.Add(IntToStr(aSocketStatus.GroupID));
Delphi ListView快速操作通用实现tmpList.Add(IntToStr(aSocketStatus.UniqueID));
Delphi ListView快速操作通用实现tmpList.Add(aSocketStatus.IPAddress);
Delphi ListView快速操作通用实现tmpList.Add(aSocketStatus.SubItemName);
Delphi ListView快速操作通用实现tmpList.Add(aSocketStatus.LoginTime);
Delphi ListView快速操作通用实现tmpList.Add(aSocketStatus.SendNumber);
Delphi ListView快速操作通用实现tmpList.Add(aSocketStatus.RecNumber);
Delphi ListView快速操作通用实现tmpList.Add(IntToStr(CSImg_Running));
Delphi ListView快速操作通用实现Result:
=true;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVSocket.UpdateLVSocket(
Delphi ListView快速操作通用实现
constaSocketStatus:TSocketStatusInfo;varlvTemp:TListView);
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifSaveSerialStatusToStringList(aSocketStatus)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现UpdateDataFromListView(tmpList,lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现end.

Delphi ListView快速操作通用实现//------------------------------------------------------------------------------
Delphi ListView快速操作通用实现
//
Delphi ListView快速操作通用实现
//产品名称:成晓旭的个人软件Delphi源码库
Delphi ListView快速操作通用实现
//产品版本:CXXSoftdelphicodesourcelib1.0
Delphi ListView快速操作通用实现
//模块名称:Delphi之ListView显示控制类---外部应用层通用类定义单元
Delphi ListView快速操作通用实现
//模块描述:ListView传统操作方法类
Delphi ListView快速操作通用实现
//单元文件:unLVCommonClass.pas
Delphi ListView快速操作通用实现
//开发作者:成晓旭
Delphi ListView快速操作通用实现
//备注:任何人使用此文件时,请保留此段自述文件,谢谢!
Delphi ListView快速操作通用实现
//开发时间:2005-09-26
Delphi ListView快速操作通用实现
//修改历史:2006-05-31
Delphi ListView快速操作通用实现
//修改描述:解决GetLVItemOrderByValue()的参数不灵活的问题
Delphi ListView快速操作通用实现
//并解决Method'Create'hidesvirtualmethodofbasetype'TComponent'的问题
Delphi ListView快速操作通用实现
//修改历史:2006-06-16
Delphi ListView快速操作通用实现
//修改描述:增加通过TList来高速增加、更新、删除数据
Delphi ListView快速操作通用实现
//先用吧,以后再优化和完善
Delphi ListView快速操作通用实现
//修改历史:2006-07-10
Delphi ListView快速操作通用实现
//修改描述:成功地将ListView的OnData事件的List对象移入此类中,并将其上移到其类
Delphi ListView快速操作通用实现
//修改历史:2006-07-11
Delphi ListView快速操作通用实现
//修改描述:重大重构:将此类分成两个类:TLVCommonClass-->TLVCommonClass和TLVQuickClass
Delphi ListView快速操作通用实现
//以遵循SRP原则
Delphi ListView快速操作通用实现
//------------------------------------------------------------------------------
Delphi ListView快速操作通用实现
unitunLVCommonClass;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
interface
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现uses
Delphi ListView快速操作通用实现SysUtils,Classes,ComCtrls,Windows,Variants,
Delphi ListView快速操作通用实现unLVControler,unLVInterface;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
const
Delphi ListView快速操作通用实现SpecialItemOrder
=-1;
Delphi ListView快速操作通用实现CSImg_Normal
=0;
Delphi ListView快速操作通用实现CSImg_Running
=1;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现GetColumnOrder
=0;
Delphi ListView快速操作通用实现type
Delphi ListView快速操作通用实现TLVCommonClass
=class(TInterfacedObject,ILVControllor)
Delphi ListView快速操作通用实现
private
Delphi ListView快速操作通用实现cxxLVC:TCXXLVControler;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
classfunctionStrIsNumber(conststr:PChar):boolean;
Delphi ListView快速操作通用实现functionGetLVItemOrderByValue(
constlvTemp:TListView;constaKeyValue:string;constcolumnOrder:integer=SpecialItemOrder):integer;
Delphi ListView快速操作通用实现procedureCommonListItemProcess(
constdataList:TStringList;varliTemp:TListItem;constisUpdate:boolean);
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
protected
Delphi ListView快速操作通用实现
//注意:约定最后一项一定是ImageIndex
Delphi ListView快速操作通用实现
tmpList:TStringList;
Delphi ListView快速操作通用实现functionInitListViewColumns(
constdisplayName:arrayofstring;
Delphi ListView快速操作通用实现
constdisplayWidth:arrayofinteger;
Delphi ListView快速操作通用实现varlvTemp:TListView):
boolean;
Delphi ListView快速操作通用实现functionAddDataToListView(
constdataList:TStringList;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现functionUpdateDataFromListView(
constdataList:TStringList;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现
//注意:删除的键值默认以SubItem[0]为标准
Delphi ListView快速操作通用实现
functionDeleteDataFromListView(constdataList:TStringList;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现
//子类必须实现
Delphi ListView快速操作通用实现
classfunctionCheckFound(constpData:Pointer;constaKey:variant):boolean;virtual;abstract;
Delphi ListView快速操作通用实现
classprocedureProcOnDataDetail(constpData:Pointer;varItem:TListItem);virtual;abstract;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
public
Delphi ListView快速操作通用实现constructorCreate();overload;
Delphi ListView快速操作通用实现destructorDestroy();override;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现implementation
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现Delphi ListView快速操作通用实现
...{TLVCommonClass}
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVCommonClass.AddDataToListView(
constdataList:TStringList;
Delphi ListView快速操作通用实现varlvTemp:TListView):
boolean;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现liTemp:TListItem;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=false;
Delphi ListView快速操作通用实现
ifdataList.Count>0then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现lvTemp.Items.BeginUpdate();
Delphi ListView快速操作通用实现liTemp:
=lvTemp.Items.Add();
Delphi ListView快速操作通用实现CommonListItemProcess(dataList,liTemp,
false);
Delphi ListView快速操作通用实现
//liTemp.Caption:=dataList.Strings[dataIndex];
Delphi ListView快速操作通用实现
//Inc(dataIndex);
Delphi ListView快速操作通用实现
//while(dataIndex<dataList.Count)do
Delphi ListView快速操作通用实现
//begin
Delphi ListView快速操作通用实现
//liTemp.SubItems.Add(dataList.Strings[dataIndex]);
Delphi ListView快速操作通用实现
//Inc(dataIndex);
Delphi ListView快速操作通用实现
//end;
Delphi ListView快速操作通用实现
lvTemp.Items.EndUpdate();
Delphi ListView快速操作通用实现Result:
=true;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现procedureTLVCommonClass.CommonListItemProcess(
constdataList:TStringList;
Delphi ListView快速操作通用实现varliTemp:TListItem;
constisUpdate:boolean);
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现dataIndex:integer;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现dataIndex:
=0;
Delphi ListView快速操作通用实现liTemp.Caption:
=dataList.Strings[dataIndex];
Delphi ListView快速操作通用实现Inc(dataIndex);
Delphi ListView快速操作通用实现
while(dataIndex<dataList.Count)do
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
if(dataIndex=dataList.Count-1)andStrIsNumber(PChar(dataList.Strings[dataIndex]))then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现liTemp.ImageIndex:
=StrToInt(dataList.Strings[dataIndex]);
Delphi ListView快速操作通用实现end
Delphi ListView快速操作通用实现
else
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifisUpdatethen
Delphi ListView快速操作通用实现liTemp.SubItems[dataIndex
-1]:=dataList.Strings[dataIndex]
Delphi ListView快速操作通用实现
else
Delphi ListView快速操作通用实现liTemp.SubItems.Add(dataList.Strings[dataIndex]);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现Inc(dataIndex);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现constructorTLVCommonClass.Create;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现inheritedCreate();
Delphi ListView快速操作通用实现cxxLVC:
=TCXXLVControler.Create();
Delphi ListView快速操作通用实现tmpList:
=TStringList.Create();
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVCommonClass.DeleteDataFromListView(
Delphi ListView快速操作通用实现
constdataList:TStringList;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现colIndex:integer;
Delphi ListView快速操作通用实现
//liTemp:TListItem;
Delphi ListView快速操作通用实现
begin
Delphi ListView快速操作通用实现Result:
=false;
Delphi ListView快速操作通用实现
ifdataList.Count>0then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现colIndex:
=GetLVItemOrderByValue(lvTemp,dataList.Strings[GetColumnOrder+1],GetColumnOrder);
Delphi ListView快速操作通用实现
if(colIndex<>SpecialItemOrder)andAssigned(cxxLVC)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现cxxLVC.DeleteItemByIndex(lvTemp,colIndex);
Delphi ListView快速操作通用实现Result:
=true;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现destructorTLVCommonClass.Destroy;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifAssigned(cxxLVC)then
Delphi ListView快速操作通用实现FreeAndNil(cxxLVC);
Delphi ListView快速操作通用实现
ifAssigned(tmpList)then
Delphi ListView快速操作通用实现FreeAndNil(tmpList);
Delphi ListView快速操作通用实现inheritedDestroy;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVCommonClass.GetLVItemOrderByValue(
constlvTemp:TListView;
Delphi ListView快速操作通用实现
constaKeyValue:string;constcolumnOrder:integer):integer;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现Loop:integer;
Delphi ListView快速操作通用实现isOK:
boolean;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=SpecialItemOrder;
Delphi ListView快速操作通用实现isOK:
=false;
Delphi ListView快速操作通用实现
forLoop:=0tolvTemp.Items.Count-1do
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
ifcolumnOrder<>SpecialItemOrderthen
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
if(columnOrder>=0)and(columnOrder<lvTemp.Columns.Count)then
Delphi ListView快速操作通用实现isOK:
=(lvTemp.Items[Loop].SubItems[columnOrder]=aKeyValue);
Delphi ListView快速操作通用实现end
Delphi ListView快速操作通用实现
else
Delphi ListView快速操作通用实现isOK:
=(lvTemp.Items[Loop].Caption=aKeyValue);
Delphi ListView快速操作通用实现
ifisOKthen
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=Loop;
Delphi ListView快速操作通用实现
break;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVCommonClass.InitListViewColumns(
constdisplayName:arrayofstring;
Delphi ListView快速操作通用实现
constdisplayWidth:arrayofinteger;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=false;
Delphi ListView快速操作通用实现
ifAssigned(cxxLVC)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现cxxLVC.InitLVColumns(displayName,displayWidth,lvTemp);
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现
classfunctionTLVCommonClass.StrIsNumber(conststr:PChar):boolean;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现p:Char;
Delphi ListView快速操作通用实现i:integer;
Delphi ListView快速操作通用实现functionCheckHex(p:Char):
boolean;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现k:Byte;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现k:
=Ord(P);
Delphi ListView快速操作通用实现Result:
=((k>=48)and(k<=57))or((k>=65)and(k<=70))or((k>=97)and(k<=102));
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现
try
Delphi ListView快速操作通用实现Result:
=false;
Delphi ListView快速操作通用实现
fori:=0toLength(str)-1do
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现p:
=str[i];
Delphi ListView快速操作通用实现Result:
=CheckHex(p);
Delphi ListView快速操作通用实现
ifNOTResultthen
Delphi ListView快速操作通用实现
break;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现except
Delphi ListView快速操作通用实现Result:
=false;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现functionTLVCommonClass.UpdateDataFromListView(
Delphi ListView快速操作通用实现
constdataList:TStringList;varlvTemp:TListView):boolean;
Delphi ListView快速操作通用实现var
Delphi ListView快速操作通用实现colIndex:integer;
Delphi ListView快速操作通用实现liTemp:TListItem;
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现Result:
=false;
Delphi ListView快速操作通用实现
ifdataList.Count>0then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现colIndex:
=GetLVItemOrderByValue(lvTemp,dataList.Strings[GetColumnOrder+1],GetColumnOrder);
Delphi ListView快速操作通用实现
if(colIndex<>SpecialItemOrder)then
Delphi ListView快速操作通用实现begin
Delphi ListView快速操作通用实现lvTemp.Items.BeginUpdate();
Delphi ListView快速操作通用实现liTemp:
=lvTemp.Items[colIndex];
Delphi ListView快速操作通用实现CommonListItemProcess(dataList,liTemp,
true);
Delphi ListView快速操作通用实现
//liTemp.Caption:=dataList.Strings[dataIndex];
Delphi ListView快速操作通用实现
//Inc(dataIndex);
Delphi ListView快速操作通用实现
//while(dataIndex<dataList.Count)do
Delphi ListView快速操作通用实现
//begin
Delphi ListView快速操作通用实现
//liTemp.SubItems[dataIndex-1]:=dataList.Strings[dataIndex];
Delphi ListView快速操作通用实现
//Inc(dataIndex);
Delphi ListView快速操作通用实现
//end;
Delphi ListView快速操作通用实现
lvTemp.Items.EndUpdate();
Delphi ListView快速操作通用实现Result:
=true;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现end;
Delphi ListView快速操作通用实现
Delphi ListView快速操作通用实现end.