| 订阅 | 在线投稿
分享
 
 
 

Delphi ListView快速操作通用实现

2007-09-22 05:02:27 编辑來源:互联网 国际版 评论
 
 
本文为【Delphi ListView快速操作通用实现】的汉字拼音对照版显示拼音
  Delphi ListViewkuaisucaozuotongyongshixian

  zuozhechengxiaoxu

  zhongsuozhouzhiDelphi ListViewleizhijiejinxingAddUpdateDeletecaozuodesudushibijiaomandeyouqishidangshujuliangjiaodashibirushujuliangdadao50001000050000shisuduzhenshikeyishuoshi“mandejingren”qishikuaisucaozuodefangfafeichangjiandanjiudangdajiadouzhidaolezaibenrendegongzuozhonghenduoxiangmudouyongdaoListViewbingqieduisududexiangyingyaoqiubijiaogaoyushifashenglekuaisucaozuoListViewdedaimasanbuyuduogexiangmudaliangmokuaizhongdewentibingqiedangjiemiancengshujuxianshiyaoqiufashenggaibianshiziranfasheng“chongfuxingdaimadetongyongwenti”kaolvdaoduiyiqianbanbendejianrongxingwentiyeyizhimeiyouyinyongdisanfangdechengshuzujianjianyu“chengxuzhongdechongfudaimazuiyiyinfawentibixuxiaochu”deshijianjingyanzijishejileyigebijiaotongyongdejiejuecileiwentideleijiegoudangranyuanbushishenme“tongyongkuangjia”le(yanxiashimianshanghenduorenxihuanbazijizuodewulunshenmedong西xitongchengweikuangjia)zaicaiyongcijiegoudexiangmuzhonghenrongyishixianMVCmoshidadaoyewuluojiyujiemianxianshifenlidedijidejichudeyaoqiu

  (yinweimuqianCSDNderuanjianshangchuangongnengbukeyongwozhiyoujiangbufendaimapianduanfangzaiwendangzhongyouxuyaowanzhengyuanmazheqingliuyan)

  leicengcijiegou

王朝网络


  ListViewjichucaozuofengzhuangzaiLVControlerbaozhonggaixindeleishiTCXXLVControler

  (shuomingLVControlerleishibeifengzhuangtongyongleijiegouneiwaibuyonghushibuxuyaolejiehe访fangwendesuoyibuzuojieshao)

王朝网络


  chuantongdeListViewcaozuojileishiTLVCommonClassruguoxiangyongchuantongdefangfazengshangaiListViewzhongdeshujukeyizhijiecongcileijicheng

王朝网络


  yuanmaruxia

  jutideyigecongcileijichengxialaideyongyuSocketjiemianxianshideTLVSocketdeleiOvervivwruxia

王朝网络


  yuanmaruxia

  kuaisudeListViewcaozuojileishiTLVQuickClassruguoxiangyongkuaisufangfazengshangaiListViewzhongdeshujukeyizhijiecongcileijicheng

王朝网络


  zhuyaofangfa(keyikandaolimianmeiyouzhenzhengdePublicfangfazileiyejinxushixianlianggeProtecteddevirtualfangfa)

王朝网络


  yuanmaruxia

  cileizhongyaoqiumeigejutiyingyongdezileibixushixiandefangfajinyoulianggeCheckFound()genjujutiyingyongjiancedeshujushifouyijingcunzaiProcOnDataDetail()kehuduanListViewdeOnData()shijiandeshujuchulihuitiaofangfaxiamianshijigejutishixiandezileideOverView

  jutideyigecongcileijichengxialaideyongyuSocketjiemianxianshideTLVQuickSocketdeleiOvervivwruxia

   keyikanchuzileishixianlelianggechouxiangdexufangfaqitadefangfadoushigenjuyewuxuyaoleiyonghuzixingzengjiade

   yuanmaruxia

  

王朝网络
//------------------------------------------------------------------------------

王朝网络
//

王朝网络
// chanpinmingcheng: chengxiaoxudegerenruanjianDelphiyuanmaku

王朝网络
// chanpinbanben: CXXSoft delphi code source lib 1.0

王朝网络
// mokuaimingcheng: DelphizhiListViewxianshikongzhilei---yingyongceng:Soft socketleidingyidanyuan

王朝网络
// mokuaimiaoshu:

王朝网络
// danyuanwenjian: unLVSoftSocket.pas-->unLVQuickSocket.pas

王朝网络
// kaifazuozhe: chengxiaoxu

王朝网络
// beizhu: renheren使shiyongciwenjianshi,qingbaoliuciduanzishuwenjian,xiexie!

王朝网络
// kaifashijian: 2005-09-26

王朝网络
//

王朝网络
// xiugailishi: 2006-06-16

王朝网络
// xiugaimiaoshu: zengjiatongguoTListlaigaosuzengjiagengxinshanchushuju

王朝网络
// xianyongba,yihouzaiyouhuahewanshan

王朝网络
// xiugailishi: 2006-07-10

王朝网络
// xiugaimiaoshu: chenggongdijiangListViewdeOnDatashijiandeListduixiangyirucileizhong

王朝网络
// xiugailishi: 2006-07-11

王朝网络
// xiugaimiaoshu: chongdachonggou:jiangcileifenchenglianggelei:TLVSoftSocket-->TLVSoftSocketheTLVQuickSocket

王朝网络
// yizunxunSRPyuanze

王朝网络
//------------------------------------------------------------------------------

王朝网络
unit unLVQuickSocket;

王朝网络


王朝网络
interface

王朝网络


王朝网络
uses

王朝网络
ComCtrls,Classes,SysUtils,Windows,

王朝网络
unLVQuickClass,unLVDefine;

王朝网络


王朝网络
type

王朝网络
TLVQuickSocket = class(TLVQuickClass)

王朝网络
private

王朝网络


王朝网络
protected

王朝网络
class function CheckFound(const pData:Pointer;const aKey:variant):boolean;override;

王朝网络
class procedure ProcOnDataDetail(const pData:Pointer;var Item: TListItem);override;

王朝网络
public

王朝网络
constructor Create();

王朝网络
destructor Destroy();override;

王朝网络
procedure InitListView(var lvTemp:TListView);

王朝网络


王朝网络
//kuaisufangfa

王朝网络
//zanshizheyangzengjia,yihouzaichonggoudaojileizhong

王朝网络
procedure AddToLVSocketQuick(const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView);

王朝网络
procedure UpdateLVSocketQuick(const aUniqueID:integer;const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView);

王朝网络
procedure DeleteLVSocketQuick(const aUniqueID:integer;const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView);

王朝网络
procedure DeleteAllLVSocket(var lvTemp:TListView);

王朝网络


王朝网络
procedure OnDataEvent(Item: TListItem);

王朝网络
function GetDataCount():integer;

王朝网络
end;

王朝网络
implementation

王朝网络


王朝网络
王朝网络
...{ TLVQuickSocket }

王朝网络


王朝网络
procedure TLVQuickSocket.AddToLVSocketQuick(

王朝网络
const aSocketStatus: TSocketStatusInfo;var lvTemp:TListView);

王朝网络
begin

王朝网络
AddItemDataToListView(@aSocketStatus,sizeof(aSocketStatus),lvTemp);

王朝网络
end;

王朝网络


王朝网络
class function TLVQuickSocket.CheckFound(const pData: Pointer;

王朝网络
const aKey: variant): boolean;

王朝网络
var

王朝网络
p:^TSocketStatusInfo;

王朝网络
begin

王朝网络
p := pData;

王朝网络
Result := (p.UniqueID = aKey);

王朝网络
end;

王朝网络


王朝网络
constructor TLVQuickSocket.Create;

王朝网络
begin

王朝网络
inherited Create();

王朝网络
end;

王朝网络


王朝网络
procedure TLVQuickSocket.DeleteAllLVSocket(var lvTemp: TListView);

王朝网络
begin

王朝网络
DeleteAllListView(lvTemp);

王朝网络
end;

王朝网络


王朝网络
procedure TLVQuickSocket.DeleteLVSocketQuick(const aUniqueID:integer;

王朝网络
const aSocketStatus: TSocketStatusInfo;var lvTemp:TListView);

王朝网络
begin

王朝网络
DeleteItemDataToListView(aUniqueID,@aSocketStatus,sizeof(aSocketStatus),lvTemp);

王朝网络
end;

王朝网络


王朝网络
destructor TLVQuickSocket.Destroy;

王朝网络
begin

王朝网络
inherited Destroy;

王朝网络
end;

王朝网络


王朝网络
function TLVQuickSocket.GetDataCount(): integer;

王朝网络
begin

王朝网络
Result := Self.GetLVListCount();

王朝网络
end;

王朝网络


王朝网络
procedure TLVQuickSocket.InitListView(var lvTemp: TListView);

王朝网络
begin

王朝网络
InitListViewColumns(SocketStrBuffer,SocketWidthBuffer,lvTemp);

王朝网络
end;

王朝网络


王朝网络
procedure TLVQuickSocket.OnDataEvent(Item: TListItem);

王朝网络
begin

王朝网络
Self.OnDataToListView(Item);

王朝网络
end;

王朝网络


王朝网络
class procedure TLVQuickSocket.ProcOnDataDetail(const pData: Pointer;var Item: TListItem);

王朝网络
var

王朝网络
pSocket:^TSocketStatusInfo;

王朝网络
begin

王朝网络
//zhelianggeyoushenmebutong?

王朝网络
//CopyMemory(pSocket,pData,sizeof(TSocketStatusInfo));

王朝网络
pSocket := pData;

王朝网络
Item.Caption := IntToStr(pSocket.GroupID);

王朝网络
Item.SubItems.Add(IntToStr(pSocket.UniqueID));

王朝网络
Item.SubItems.Add(pSocket.IPAddress);

王朝网络
Item.SubItems.Add(pSocket.SubItemName);

王朝网络
Item.SubItems.Add(pSocket.LoginTime);

王朝网络
Item.SubItems.Add(pSocket.SendNumber);

王朝网络
Item.SubItems.Add(pSocket.RecNumber);

王朝网络
Item.SubItems.Add(pSocket.Remark);

王朝网络
end;

王朝网络


王朝网络
procedure TLVQuickSocket.UpdateLVSocketQuick(const aUniqueID:integer;

王朝网络
const aSocketStatus: TSocketStatusInfo;var lvTemp:TListView);

王朝网络
begin

王朝网络
UpdateItemDataToListView(aUniqueID,@aSocketStatus,sizeof(aSocketStatus),lvTemp);

王朝网络
end;

王朝网络


王朝网络
end.

  

  xiaojie

  yingyongcileijiegoushixianListViewkuaisushujucaozuodeyoushi

  1 keyikuaisushixianMVCmoshidadaojiemianxianshiyuyewuluojidefenlizaiControllorleizhongshilihuashujuxianshizileitiaoyongxiangyingfangfajikeshixianxianshishujudezengshangai

  2 yuyuanshidekuaisufangfaxiangbifengzhuangleneicunshujuListdadajianhualeListduixiangdecaozuo(youqishidangyouhenduoxiangtonghuozheleisishujuyaoqiuzaibutongFormdeListViewzhongxianshishi)bingjianshaoleListdechuangjianshujucaozuoshifangdengcaozuoshifashengcuowudekenengxing

  3 jianhualeduogexiangtongleisishujuxianshidekongzhidaimazhenduimeigefenyaoxianshideshujujiListViewzhixuyaoshilihuayigexianshizileibimianlezhijieyingyongyuanshidekuaisufangfashikongzhidaimafensanzaimeiyigejutiFormleizhongdewenti

  4 duixianshishujudeyewuxinxifenjinxinglejizhongdangyaoqiuxianshidexinxifashengbianhuashizhixuzaishujuxianshizileizheyigeleizhonggenggaijike

  citongyongleijiegourengyouxiebuzuzhichuhuanyingyouxingqudepengyoujixuwanshan

  meigeyingyongcengleidewaibutiaoyongfangshifeichangleisi(qingshenkaokaifadeshiliyuanma)biaomingyouxietongyongdefangfameiyoujinxinggenghaodechouxiang

  kuaisu访fangwenjileiduiqizileidexingweichouxiangbuchongfendaozhizileideyingyongcengtiaoyongdaimafeichangleisidangchuzheyangshejidemudeshixiangbaochileijiegouyouchongfendekekuozhanxingqishiwanquankeyijiangjileijinxinggailiangjiangchouxiangdexufangfagenghuanchengjiekouzheyangjileishixiandegenghaodefengzhuangbingqiegenghaodimanzule“xiangwendingdefangxiangyilai”he“zhenduijiekoubiancheng”deshejiyuanzezheyangyingyongcenghuanshiyaoshilihuayigezijiyewuxuyaodeleilaishixiancijiekoudanDelphidejiekouyongqilaibuxiangshizhenzhengdejiekoutongchangyaocongTInterfacedObjectdengleijichengdadaxianzhileleijiegoucengcideyanhua(yinweizaibuzhichiduojichengdeyuyanhuanjingzhongruguohuanxiangzengjiagenggaocengcidechouxiangjiubunamerongyile)

  dangqiandebanbenhuanmeiyoutigongzhenduimouliejinxingshujupaixudegongneng

王朝网络
//------------------------------------------------------------------------------

王朝网络
//

王朝网络
// chanpinmingcheng: chengxiaoxudegerenruanjianDelphiyuanmaku

王朝网络
// chanpinbanben: CXXSoft delphi code source lib 1.0

王朝网络
// mokuaimingcheng: DelphizhiListViewxianshikongzhilei---waibuyingyongcengtongyongleidingyidanyuan

王朝网络
// mokuaimiaoshu: ListViewkuaisucaozuofangfalei

王朝网络
// danyuanwenjian: unLVCommonClass.pas--->unLVQuickClass.pas

王朝网络
// kaifazuozhe: chengxiaoxu

王朝网络
// beizhu: renheren使shiyongciwenjianshi,qingbaoliuciduanzishuwenjian,xiexie!

王朝网络
// kaifashijian: 2005-09-26

王朝网络
// xiugailishi: 2006-05-31

王朝网络
// xiugaimiaoshu: jiejueGetLVItemOrderByValue()deshenshubulinghuodewenti

王朝网络
// bingjiejueMethod 'Create' hides virtual method of base type 'TComponent'dewenti

王朝网络
// xiugailishi: 2006-06-16

王朝网络
// xiugaimiaoshu: zengjiatongguoTListlaigaosuzengjiagengxinshanchushuju

王朝网络
// xianyongba,yihouzaiyouhuahewanshan

王朝网络
// xiugailishi: 2006-07-10

王朝网络
// xiugaimiaoshu: chenggongdijiangListViewdeOnDatashijiandeListduixiangyirucileizhong,bingjiangqishangyidaoqilei

王朝网络
// xiugailishi: 2006-07-11

王朝网络
// xiugaimiaoshu: chongdachonggou:jiangcileifenchenglianggelei:TLVCommonClass-->TLVCommonClassheTLVQuickClass,

王朝网络
// yizunxunSRPyuanze

王朝网络
//------------------------------------------------------------------------------

王朝网络
unit unLVQuickClass;

王朝网络


王朝网络
interface

王朝网络


王朝网络
uses

王朝网络
SysUtils,Classes,ComCtrls,Windows,Variants,

王朝网络
unLVControler;

王朝网络


王朝网络
const

王朝网络
SpecialItemOrder = -1;

王朝网络
CSImg_Normal = 0;

王朝网络
CSImg_Running = 1;

王朝网络


王朝网络
GetColumnOrder = 0;

王朝网络
type

王朝网络
TLVQuickClass = class(TInterfacedObject)

王朝网络
private

王朝网络
cxxLVC:TCXXLVControler;

王朝网络
lvDataList: TList;

王朝网络


王朝网络
//weiListViewdeItemdeDatashuxingchaxunguanjianshujuzaiTListzhongdesuoyinhao

王朝网络
class function GetListDataIndexByKey(const listData:TList;const aKey: variant):integer;

王朝网络
//kuaisu

王朝网络
procedure ClearLVDataList();

王朝网络
protected

王朝网络
//zhuyi:yuedingzuihouyixiangyidingshiImageIndex

王朝网络
//tmpList:TStringList;

王朝网络
function InitListViewColumns(const displayName: array of string;

王朝网络
const displayWidth: array of integer;

王朝网络
var lvTemp:TListView):boolean;

王朝网络


王朝网络
//zileibixushixian

王朝网络
class function CheckFound(const pData:Pointer;const aKey:variant):boolean;virtual; abstract;

王朝网络
class procedure ProcOnDataDetail(const pData:Pointer;var Item: TListItem);virtual; abstract;

王朝网络


王朝网络
//kuaisufangfa

王朝网络
//[zhuyi:xinfangfazhonglvListbuyaoqiuchuandishenshu,baoliuyijianrongjiukehuduanbanben]

王朝网络
//jiangpDatashujujiaruListzhong,shixianxiangListViewzengjiashujuxing

王朝网络
function AddItemDataToListView(const pData:Pointer;const dataNumber:integer;

王朝网络
var lvTemp:TListView):boolean;

王朝网络
//; var lvList: TList=nil):boolean;

王朝网络
//yiaKeyweiguanjianzhichazhao,bingyongpDatashujugengxinListzhongmanzutiaojiandeneicunkuai,shixianxiangListViewgengxinshujuxing

王朝网络
function UpdateItemDataToListView(const aKey:variant;const pData:Pointer;const dataNumber:integer;

王朝网络
var lvTemp:TListView):boolean;

王朝网络
//; var lvList: TList=nil):boolean;

王朝网络
//yiaKeyweiguanjianzhichazhao,bingyongpDatashujushanchuListzhongmanzutiaojiandeneicunkuai,shixianxiangListViewshanchushujuxing

王朝网络
function DeleteItemDataToListView(const aKey:variant;const pData:Pointer;const dataNumber:integer;

王朝网络
var lvTemp:TListView):boolean;

王朝网络
//; var lvList: TList=nil):boolean;

王朝网络
//shanchuListzhongsuoyouneicunqu,shixianjiangListViewqingkongsuoyoushujuxing

王朝网络
procedure DeleteAllListView(var lvTemp:TListView);

王朝网络


王朝网络
//ListViswdeOnDatashijianchuli

王朝网络
procedure OnDataToListView(var Item: TListItem);

王朝网络
//ListViswdeOnDatashijiandeList Count

王朝网络
function GetLVListCount():integer;

王朝网络
public

王朝网络
constructor Create();overload;

王朝网络
destructor Destroy();override;

王朝网络
end;

王朝网络


王朝网络
implementation

王朝网络


王朝网络
王朝网络
...{ TLVQuickClass }

王朝网络


王朝网络
function TLVQuickClass.AddItemDataToListView(const pData: Pointer;

王朝网络
const dataNumber: integer; var lvTemp: TListView):boolean;

王朝网络
//; var lvList: TList):boolean;

王朝网络
var

王朝网络
pTemp:Pointer;

王朝网络
begin

王朝网络
//zhuyi:yaoyingxiangxingneng

王朝网络
//lvTemp.Items.BeginUpdate();

王朝网络
Result := false;

王朝网络
if NOT (Assigned(pData) and Assigned(lvTemp) and Assigned(lvDataList)) then Exit;

王朝网络
//new(pTemp);

王朝网络
GetMem(pTemp,dataNumber);

王朝网络
lvTemp.OwnerData := true;

王朝网络
CopyMemory(pTemp,pData,dataNumber);

王朝网络
lvDataList.Add(pTemp);

王朝网络
Result := true;

王朝网络
//zhuyi:yaoyingxiangxingneng

王朝网络
//lvTemp.Items.Count := lvList.Count;

王朝网络
//lvTemp.Items.EndUpdate();

王朝网络
end;

王朝网络


王朝网络
procedure TLVQuickClass.ClearLVDataList();

王朝网络
var

王朝网络
Loop:integer;

王朝网络
pTemp:Pointer;

王朝网络
begin

王朝网络
if NOT (Assigned(lvDataList) and (lvDataList.Count > 0)) then Exit;

王朝网络
for Loop := 0 to lvDataList.Count - 1 do

王朝网络
begin

王朝网络
pTemp := (lvDataList.Items[Loop]);

王朝网络
if Assigned(pTemp) then

王朝网络
FreeMem(pTemp);

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
constructor TLVQuickClass.Create;

王朝网络
begin

王朝网络
inherited Create();

王朝网络
cxxLVC := TCXXLVControler.Create();

王朝网络
//tmpList := TStringList.Create();

王朝网络
lvDataList := TList.Create();

王朝网络
end;

王朝网络


王朝网络
procedure TLVQuickClass.DeleteAllListView(var lvTemp: TListView);

王朝网络
begin

王朝网络
if NOT (Assigned(lvTemp) and Assigned(lvDataList) and (lvDataList.Count > 0)) then Exit;

王朝网络
lvTemp.OwnerData := true;

王朝网络
lvTemp.Items.BeginUpdate();

王朝网络
while (lvDataList.Count > 0) do

王朝网络
begin

王朝网络
Dispose(lvDataList[0]);

王朝网络
lvDataList.Delete(0);

王朝网络
end;

王朝网络
lvTemp.Items.Count := lvDataList.Count;

王朝网络
lvTemp.Items.EndUpdate();

王朝网络
end;

王朝网络


王朝网络
function TLVQuickClass.DeleteItemDataToListView(const aKey: variant;

王朝网络
const pData: Pointer; const dataNumber: integer; var lvTemp: TListView):boolean;

王朝网络
//var lvList: TList): boolean;

王朝网络
var

王朝网络
colIndex:integer;

王朝网络
begin

王朝网络
//zhuyi:yaoyingxiangxingneng

王朝网络
//lvTemp.Items.BeginUpdate();

王朝网络
Result := false;

王朝网络
if NOT (Assigned(pData) and Assigned(lvTemp) and Assigned(lvDataList) and (lvDataList.Count > 0)) then Exit;

王朝网络
colIndex := GetListDataIndexByKey(lvDataList,aKey);

王朝网络
if (colIndex <> SpecialItemOrder) and (colIndex >= 0) and (colIndex <= lvDataList.Count - 1) then

王朝网络
begin

王朝网络
Dispose(lvDataList[colIndex]);

王朝网络
lvDataList.Delete(colIndex);

王朝网络
Result := true;

王朝网络
end;

王朝网络
//zhuyi:yaoyingxiangxingneng

王朝网络
//lvTemp.Items.Count := lvList.Count;

王朝网络
//lvTemp.Items.EndUpdate();

王朝网络
end;

王朝网络


王朝网络
destructor TLVQuickClass.Destroy;

王朝网络
begin

王朝网络
ClearLVDataList();

王朝网络
if Assigned(lvDataList) then

王朝网络
FreeAndNil(lvDataList);

王朝网络
if Assigned(cxxLVC) then

王朝网络
FreeAndNil(cxxLVC);

王朝网络
//if Assigned(tmpList) then

王朝网络
// FreeAndNil(tmpList);

王朝网络
inherited Destroy;

王朝网络
end;

王朝网络


王朝网络
class function TLVQuickClass.GetListDataIndexByKey(const listData: TList;

王朝网络
const aKey: variant): integer;

王朝网络
var

王朝网络
Loop:integer;

王朝网络
begin

王朝网络
Result := SpecialItemOrder;

王朝网络
if NOT Assigned(listData) then Exit;

王朝网络
if listData.Count <= 0 then Exit;

王朝网络
for Loop := 0 to listData.Count - 1 do

王朝网络
begin

王朝网络
if CheckFound(listData[Loop],aKey) then

王朝网络
begin

王朝网络
Result := Loop;

王朝网络


  break;

王朝网络
end;

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
function TLVQuickClass.GetLVListCount(): integer;

王朝网络
begin

王朝网络
Result := 0;

王朝网络
if Assigned(lvDataList) then

王朝网络
Result := lvDataList.Count;

王朝网络
end;

王朝网络


王朝网络
function TLVQuickClass.InitListViewColumns(const displayName: array of string;

王朝网络
const displayWidth: array of integer; var lvTemp: TListView): boolean;

王朝网络
begin

王朝网络
Result := false;

王朝网络
if Assigned(cxxLVC) then

王朝网络
begin

王朝网络
cxxLVC.InitLVColumns(displayName,displayWidth,lvTemp);

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
procedure TLVQuickClass.OnDataToListView(var Item: TListItem);

王朝网络
var

王朝网络
pTemp:Pointer;

王朝网络
begin

王朝网络
//yihouyaoyidaoleizhong,zuochenghuitiao

王朝网络
if NOT Assigned(lvDataList) then Exit;

王朝网络
if lvDataList.Count <= 0 then Exit;

王朝网络
if Item.Index > lvDataList.Count then Exit;

王朝网络


王朝网络
pTemp := lvDataList[Item.Index];

王朝网络
ProcOnDataDetail(pTemp,Item);

王朝网络


王朝网络
Item.ImageIndex := 1;

王朝网络
Item.Data := pTemp;

王朝网络
end;

王朝网络


王朝网络
function TLVQuickClass.UpdateItemDataToListView(const aKey: variant;

王朝网络
const pData: Pointer; const dataNumber: integer; var lvTemp: TListView):boolean;

王朝网络
//var lvList: TList):boolean;

王朝网络
var

王朝网络
colIndex:integer;

王朝网络
begin

王朝网络
//zhuyi:yaoyingxiangxingneng

王朝网络
//lvTemp.Items.BeginUpdate();

王朝网络
Result := false;

王朝网络
if NOT (Assigned(pData) and Assigned(lvTemp) and Assigned(lvDataList) and (lvDataList.Count > 0)) then Exit;

王朝网络
colIndex := GetListDataIndexByKey(lvDataList,aKey);

王朝网络
if (colIndex <> SpecialItemOrder) and (colIndex >= 0) and (colIndex <= lvDataList.Count - 1) then

王朝网络
begin

王朝网络
CopyMemory(lvDataList[colIndex],pData,dataNumber);

王朝网络
Result := true;

王朝网络
end;

王朝网络
//zhuyi:yaoyingxiangxingneng

王朝网络
//lvTemp.Items.Count := lvList.Count;

王朝网络
//lvTemp.Items.EndUpdate();

王朝网络
end;

王朝网络


王朝网络
end.

  

王朝网络
//------------------------------------------------------------------------------

王朝网络
//

王朝网络
// chanpinmingcheng: chengxiaoxudegerenruanjianDelphiyuanmaku

王朝网络
// chanpinbanben: CXXSoft delphi code source lib 1.0

王朝网络
// mokuaimingcheng: DelphizhiListViewxianshikongzhilei---yingyongceng:Soft socketleidingyidanyuan

王朝网络
// mokuaimiaoshu:

王朝网络
// danyuanwenjian: unLVSoftSocket.pas-->unLVSocket.pas

王朝网络
// kaifazuozhe: chengxiaoxu

王朝网络
// beizhu: renheren使shiyongciwenjianshi,qingbaoliuciduanzishuwenjian,xiexie!

王朝网络
// kaifashijian: 2005-09-26

王朝网络
//

王朝网络
// xiugailishi: 2006-06-16

王朝网络
// xiugaimiaoshu: zengjiatongguoTListlaigaosuzengjiagengxinshanchushuju

王朝网络
// xianyongba,yihouzaiyouhuahewanshan

王朝网络
// xiugailishi: 2006-07-10

王朝网络
// xiugaimiaoshu: chenggongdijiangListViewdeOnDatashijiandeListduixiangyirucileizhong

王朝网络
// xiugailishi: 2006-07-11

王朝网络
// xiugaimiaoshu: chongdachonggou:jiangcileifenchenglianggelei:TLVSoftSocket-->TLVSocketheTLVQuickClass

王朝网络
// yizunxunSRPyuanze

王朝网络
//------------------------------------------------------------------------------

王朝网络
unit unLVSocket;

王朝网络


王朝网络
interface

王朝网络


王朝网络
uses

王朝网络
ComCtrls,Classes,SysUtils,Windows,

王朝网络
unLVCommonClass,unLVDefine;

王朝网络


王朝网络
type

王朝网络
TLVSocket = class(TLVCommonClass)

王朝网络
private

王朝网络
//zhuyi:cifangfayushunxuyanchongouhe

王朝网络
function SaveSerialStatusToStringList(const aSocketStatus:TSocketStatusInfo):boolean;

王朝网络
protected

王朝网络
class function CheckFound(const pData:Pointer;const aKey:variant):boolean;override;

王朝网络
class procedure ProcOnDataDetail(const pData:Pointer;var Item: TListItem);override;

王朝网络
public

王朝网络
constructor Create();

王朝网络
destructor Destroy();override;

王朝网络
procedure InitListView(var lvTemp:TListView);

王朝网络


王朝网络
//chuantongfangfa

王朝网络
procedure AddToLVSocket(const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView);

王朝网络
procedure UpdateLVSocket(const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView);

王朝网络
procedure DeleteLVSocket(const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView);

王朝网络


王朝网络
end;

王朝网络
implementation

王朝网络


王朝网络
王朝网络
...{ TLVSocket }

王朝网络


王朝网络
procedure TLVSocket.AddToLVSocket(

王朝网络
const aSocketStatus: TSocketStatusInfo; var lvTemp: TListView);

王朝网络
begin

王朝网络
if SaveSerialStatusToStringList(aSocketStatus) then

王朝网络
begin

王朝网络
AddDataToListView(tmpList,lvTemp);

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
class function TLVSocket.CheckFound(const pData: Pointer;

王朝网络
const aKey: variant): boolean;

王朝网络
var

王朝网络
p:^TSocketStatusInfo;

王朝网络
begin

王朝网络
p := pData;

王朝网络
Result := (p.UniqueID = aKey);

王朝网络
end;

王朝网络


王朝网络
constructor TLVSocket.Create;

王朝网络
begin

王朝网络
inherited Create();

王朝网络
end;

王朝网络


王朝网络
procedure TLVSocket.DeleteLVSocket(

王朝网络
const aSocketStatus: TSocketStatusInfo; var lvTemp: TListView);

王朝网络
begin

王朝网络
if SaveSerialStatusToStringList(aSocketStatus) then

王朝网络
begin

王朝网络
DeleteDataFromListView(tmpList,lvTemp);

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
destructor TLVSocket.Destroy;

王朝网络
begin

王朝网络
inherited Destroy;

王朝网络
end;

王朝网络


王朝网络
procedure TLVSocket.InitListView(var lvTemp: TListView);

王朝网络
begin

王朝网络
InitListViewColumns(SocketStrBuffer,SocketWidthBuffer,lvTemp);

王朝网络
end;

王朝网络


王朝网络
class procedure TLVSocket.ProcOnDataDetail(const pData: Pointer;var Item: TListItem);

王朝网络
var

王朝网络
pSocket:^TSocketStatusInfo;

王朝网络
begin

王朝网络
//zhelianggeyoushenmebutong?

王朝网络
//CopyMemory(pSocket,pData,sizeof(TSocketStatusInfo));

王朝网络
pSocket := pData;

王朝网络
Item.Caption := IntToStr(pSocket.GroupID);

王朝网络
Item.SubItems.Add(IntToStr(pSocket.UniqueID));

王朝网络
Item.SubItems.Add(pSocket.IPAddress);

王朝网络
//Item.SubItems.Add(IntToStr(pSocket.CommServerPort));

王朝网络
Item.SubItems.Add(pSocket.SubItemName);

王朝网络
Item.SubItems.Add(pSocket.LoginTime);

王朝网络
Item.SubItems.Add(pSocket.SendNumber);

王朝网络
Item.SubItems.Add(pSocket.RecNumber);

王朝网络
Item.SubItems.Add(pSocket.Remark);

王朝网络
//Item.SubItems.Add(pSocket.IPAddress);

王朝网络
//Item.SubItems.Add(pSocket.IPAddress);

王朝网络
end;

王朝网络


王朝网络
function TLVSocket.SaveSerialStatusToStringList(

王朝网络
const aSocketStatus: TSocketStatusInfo): boolean;

王朝网络
begin

王朝网络
Result := false;

王朝网络
if Assigned(tmpList) then

王朝网络
begin

王朝网络
tmpList.Clear();

王朝网络
tmpList.Add(IntToStr(aSocketStatus.GroupID));

王朝网络
tmpList.Add(IntToStr(aSocketStatus.UniqueID));

王朝网络
tmpList.Add(aSocketStatus.IPAddress);

王朝网络
tmpList.Add(aSocketStatus.SubItemName);

王朝网络
tmpList.Add(aSocketStatus.LoginTime);

王朝网络
tmpList.Add(aSocketStatus.SendNumber);

王朝网络
tmpList.Add(aSocketStatus.RecNumber);

王朝网络
tmpList.Add(IntToStr(CSImg_Running));

王朝网络
Result := true;

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
procedure TLVSocket.UpdateLVSocket(

王朝网络
const aSocketStatus: TSocketStatusInfo; var lvTemp: TListView);

王朝网络
begin

王朝网络
if SaveSerialStatusToStringList(aSocketStatus) then

王朝网络
begin

王朝网络
UpdateDataFromListView(tmpList,lvTemp);

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
end.

  

王朝网络
//------------------------------------------------------------------------------

王朝网络
//

王朝网络
// chanpinmingcheng: chengxiaoxudegerenruanjianDelphiyuanmaku

王朝网络
// chanpinbanben: CXXSoft delphi code source lib 1.0

王朝网络
// mokuaimingcheng: DelphizhiListViewxianshikongzhilei---waibuyingyongcengtongyongleidingyidanyuan

王朝网络
// mokuaimiaoshu: ListViewchuantongcaozuofangfalei

王朝网络
// danyuanwenjian: unLVCommonClass.pas

王朝网络
// kaifazuozhe: chengxiaoxu

王朝网络
// beizhu: renheren使shiyongciwenjianshi,qingbaoliuciduanzishuwenjian,xiexie!

王朝网络
// kaifashijian: 2005-09-26

王朝网络
// xiugailishi: 2006-05-31

王朝网络
// xiugaimiaoshu: jiejueGetLVItemOrderByValue()deshenshubulinghuodewenti

王朝网络
// bingjiejueMethod 'Create' hides virtual method of base type 'TComponent'dewenti

王朝网络
// xiugailishi: 2006-06-16

王朝网络
// xiugaimiaoshu: zengjiatongguoTListlaigaosuzengjiagengxinshanchushuju

王朝网络
// xianyongba,yihouzaiyouhuahewanshan

王朝网络
// xiugailishi: 2006-07-10

王朝网络
// xiugaimiaoshu: chenggongdijiangListViewdeOnDatashijiandeListduixiangyirucileizhong,bingjiangqishangyidaoqilei

王朝网络
// xiugailishi: 2006-07-11

王朝网络
// xiugaimiaoshu: chongdachonggou:jiangcileifenchenglianggelei:TLVCommonClass-->TLVCommonClassheTLVQuickClass

王朝网络
// yizunxunSRPyuanze

王朝网络
//------------------------------------------------------------------------------

王朝网络
unit unLVCommonClass;

王朝网络


王朝网络
interface

王朝网络


王朝网络
uses

王朝网络
SysUtils,Classes,ComCtrls,Windows,Variants,

王朝网络
unLVControler,unLVInterface;

王朝网络


王朝网络
const

王朝网络
SpecialItemOrder = -1;

王朝网络
CSImg_Normal = 0;

王朝网络
CSImg_Running = 1;

王朝网络


王朝网络
GetColumnOrder = 0;

王朝网络
type

王朝网络
TLVCommonClass = class(TInterfacedObject,ILVControllor)

王朝网络
private

王朝网络
cxxLVC:TCXXLVControler;

王朝网络


王朝网络
class function StrIsNumber(const str:PChar):boolean;

王朝网络
function GetLVItemOrderByValue(const lvTemp:TListView;const aKeyValue:string;const columnOrder:integer=SpecialItemOrder):integer;

王朝网络
procedure CommonListItemProcess(const dataList: TStringList;var liTemp:TListItem; const isUpdate: boolean);

王朝网络


王朝网络
protected

王朝网络
//zhuyi:yuedingzuihouyixiangyidingshiImageIndex

王朝网络
tmpList:TStringList;

王朝网络
function InitListViewColumns(const displayName: array of string;

王朝网络
const displayWidth: array of integer;

王朝网络
var lvTemp:TListView):boolean;

王朝网络
function AddDataToListView(const dataList:TStringList;var lvTemp:TListView):boolean;

王朝网络
function UpdateDataFromListView(const dataList:TStringList;var lvTemp:TListView):boolean;

王朝网络
//zhuyi:shanchudejianzhimorenyiSubItem[0]weibiaozhun

王朝网络
function DeleteDataFromListView(const dataList:TStringList;var lvTemp:TListView):boolean;

王朝网络
//zileibixushixian

王朝网络
class function CheckFound(const pData:Pointer;const aKey:variant):boolean;virtual; abstract;

王朝网络
class procedure ProcOnDataDetail(const pData:Pointer;var Item: TListItem);virtual; abstract;

王朝网络


王朝网络


王朝网络
public

王朝网络
constructor Create();overload;

王朝网络
destructor Destroy();override;

王朝网络
end;

王朝网络


王朝网络
implementation

王朝网络


王朝网络
王朝网络
...{ TLVCommonClass }

王朝网络


王朝网络
function TLVCommonClass.AddDataToListView(const dataList: TStringList;

王朝网络
var lvTemp: TListView): boolean;

王朝网络
var

王朝网络
liTemp:TListItem;

王朝网络
begin

王朝网络
Result := false;

王朝网络
if dataList.Count > 0 then

王朝网络
begin

王朝网络
lvTemp.Items.BeginUpdate();

王朝网络
liTemp := lvTemp.Items.Add();

王朝网络
CommonListItemProcess(dataList,liTemp,false);

王朝网络
//liTemp.Caption := dataList.Strings[dataIndex];

王朝网络
//Inc(dataIndex);

王朝网络
//while (dataIndex < dataList.Count) do

王朝网络
//begin

王朝网络
// liTemp.SubItems.Add(dataList.Strings[dataIndex]);

王朝网络
// Inc(dataIndex);

王朝网络
//end;

王朝网络
lvTemp.Items.EndUpdate();

王朝网络
Result := true;

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络


王朝网络
procedure TLVCommonClass.CommonListItemProcess(const dataList: TStringList;

王朝网络
var liTemp: TListItem; const isUpdate: boolean);

王朝网络
var

王朝网络
dataIndex:integer;

王朝网络
begin

王朝网络
dataIndex := 0;

王朝网络
liTemp.Caption := dataList.Strings[dataIndex];

王朝网络
Inc(dataIndex);

王朝网络
while (dataIndex < dataList.Count) do

王朝网络
begin

王朝网络
if (dataIndex = dataList.Count - 1) and StrIsNumber(PChar(dataList.Strings[dataIndex])) then

王朝网络
begin

王朝网络
liTemp.ImageIndex := StrToInt(dataList.Strings[dataIndex]);

王朝网络
end

王朝网络
else

王朝网络
begin

王朝网络
if isUpdate then

王朝网络
liTemp.SubItems[dataIndex-1] := dataList.Strings[dataIndex]

王朝网络
else

王朝网络
liTemp.SubItems.Add(dataList.Strings[dataIndex]);

王朝网络
end;

王朝网络
Inc(dataIndex);

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
constructor TLVCommonClass.Create;

王朝网络
begin

王朝网络
inherited Create();

王朝网络
cxxLVC := TCXXLVControler.Create();

王朝网络
tmpList := TStringList.Create();

王朝网络
end;

王朝网络


王朝网络
function TLVCommonClass.DeleteDataFromListView(

王朝网络
const dataList: TStringList; var lvTemp: TListView): boolean;

王朝网络
var

王朝网络
colIndex:integer;

王朝网络
// liTemp:TListItem;

王朝网络
begin

王朝网络
Result := false;

王朝网络
if dataList.Count > 0 then

王朝网络
begin

王朝网络
colIndex := GetLVItemOrderByValue(lvTemp,dataList.Strings[GetColumnOrder+1],GetColumnOrder);

王朝网络
if (colIndex <> SpecialItemOrder) and Assigned(cxxLVC)then

王朝网络
begin

王朝网络
cxxLVC.DeleteItemByIndex(lvTemp,colIndex);

王朝网络
Result := true;

王朝网络
end;

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
destructor TLVCommonClass.Destroy;

王朝网络
begin

王朝网络
if Assigned(cxxLVC) then

王朝网络
FreeAndNil(cxxLVC);

王朝网络
if Assigned(tmpList) then

王朝网络
FreeAndNil(tmpList);

王朝网络
inherited Destroy;

王朝网络
end;

王朝网络


王朝网络
function TLVCommonClass.GetLVItemOrderByValue(const lvTemp: TListView;

王朝网络
const aKeyValue: string; const columnOrder: integer): integer;

王朝网络
var

王朝网络
Loop:integer;

王朝网络
isOK:boolean;

王朝网络
begin

王朝网络
Result := SpecialItemOrder;

王朝网络
isOK := false;

王朝网络
for Loop := 0 to lvTemp.Items.Count - 1 do

王朝网络
begin

王朝网络
if columnOrder <> SpecialItemOrder then

王朝网络
begin

王朝网络
if (columnOrder >= 0) and (columnOrder < lvTemp.Columns.Count) then

王朝网络
isOK := (lvTemp.Items[Loop].SubItems[columnOrder] = aKeyValue);

王朝网络
end

王朝网络
else

王朝网络
isOK := (lvTemp.Items[Loop].Caption = aKeyValue);

王朝网络
if isOK then

王朝网络
begin

王朝网络
Result := Loop;

王朝网络


  break;

王朝网络
end;

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
function TLVCommonClass.InitListViewColumns(const displayName: array of string;

王朝网络
const displayWidth: array of integer; var lvTemp: TListView): boolean;

王朝网络
begin

王朝网络
Result := false;

王朝网络
if Assigned(cxxLVC) then

王朝网络
begin

王朝网络
cxxLVC.InitLVColumns(displayName,displayWidth,lvTemp);

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
class function TLVCommonClass.StrIsNumber(const str: PChar): boolean;

王朝网络
var

王朝网络
p:Char;

王朝网络
i:integer;

王朝网络
function CheckHex(p:Char):boolean;

王朝网络
var

王朝网络
k:Byte;

王朝网络
begin

王朝网络
k := Ord(P);

王朝网络
Result := ((k >= 48) and (k <= 57)) or ((k >= 65) and (k <= 70)) or ((k >= 97) and (k <= 102));

王朝网络
end;

王朝网络
begin

王朝网络
try

王朝网络
Result := false;

王朝网络
for i := 0 to Length(str)-1 do

王朝网络
begin

王朝网络
p := str[i];

王朝网络
Result := CheckHex(p);

王朝网络
if NOT Result then

王朝网络


  break;

王朝网络
end;

王朝网络
except

王朝网络
Result := false;

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
function TLVCommonClass.UpdateDataFromListView(

王朝网络
const dataList: TStringList; var lvTemp: TListView): boolean;

王朝网络
var

王朝网络
colIndex:integer;

王朝网络
liTemp:TListItem;

王朝网络
begin

王朝网络
Result := false;

王朝网络
if dataList.Count > 0 then

王朝网络
begin

王朝网络
colIndex := GetLVItemOrderByValue(lvTemp,dataList.Strings[GetColumnOrder+1],GetColumnOrder);

王朝网络
if (colIndex <> SpecialItemOrder) then

王朝网络
begin

王朝网络
lvTemp.Items.BeginUpdate();

王朝网络
liTemp := lvTemp.Items[colIndex];

王朝网络
CommonListItemProcess(dataList,liTemp,true);

王朝网络
//liTemp.Caption := dataList.Strings[dataIndex];

王朝网络
//Inc(dataIndex);

王朝网络
//while (dataIndex < dataList.Count) do

王朝网络
//begin

王朝网络
// liTemp.SubItems[dataIndex-1] := dataList.Strings[dataIndex];

王朝网络
// Inc(dataIndex);

王朝网络
//end;

王朝网络
lvTemp.Items.EndUpdate();

王朝网络
Result := true;

王朝网络
end;

王朝网络
end;

王朝网络
end;

王朝网络


王朝网络
end.原文
 
 
Delphi ListView快速操作通用实现 作者:成晓旭 众所周知,Delphi ListView类直接进行Add、Update、Delete操作的速度是比较慢的,尤其是当数据量较大时,比如数据量达到5000、10000、50000时,速度真是可以说是“慢得惊人”。其实快速操作的方法非常简单,就当大家都知道了。在本人的工作中,很多项目都用到ListView,并且对速度的响应要求比较高,于是发生了快速操作ListView的代码散布于多个项目大量模块中的问题,并且,当界面层数据显示要求发生改变时,自然发生“重复性代码的通用问题”。考虑到对以前版本的兼容性问题,也一直没有引用第三方的成熟组件。鉴于:“程序中的重复代码最易引发问题,必须消除”的实践经验,自己设计了一个比较通用的解决此类问题的类结构。当然,远不是什么“通用框架”了(眼下市面上很多人喜欢把自己做的无论什么东西通称为框架)。在采用此结构的项目中,很容易实现MVC模式,达到业务逻辑与界面显示分离的低级的、基础的要求。 (因为,目前CSDN的软件上传功能不可用,我只有将部分代码片断放在文档中,有需要完整源码者,请留言) 类层次结构: [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408503224.jpg[/img][/url] ListView基础操作封装在LVControler包中,核心的类是TCXXLVControler: (说明:LVControler类是被封装通用类结构内,外部用户是不需要了解和访问的,所以不作介绍。) [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408503474.jpg[/img][/url] 传统的ListView操作基类是TLVCommonClass,如果想用传统的方法增、删、改ListView中的数据,可以直接从此类继承。 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408503708.jpg[/img][/url] 源码如下: 具体的一个从此类继承下来的用于Socket界面显示的TLVSocket的类Overvivw如下: [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408503896.jpg[/img][/url] 源码如下: 快速的ListView操作基类是TLVQuickClass,如果想用快速方法增、删、改ListView中的数据,可以直接从此类继承。 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408504099.jpg[/img][/url] 主要方法:(可以看到,里面没有真正的Public方法,子类也仅需实现两个Protected的virtual方法) [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408504411.jpg[/img][/url] 源码如下: 此类中,要求每个具体应用的子类必须实现的方法仅有两个:CheckFound():根据具体应用检测的数据是否已经存在;ProcOnDataDetail():客户端ListView的OnData()事件的数据处理回调方法。下面是几个具体实现的子类的OverView: 具体的一个从此类继承下来的用于Socket界面显示的TLVQuickSocket的类Overvivw如下: 可以看出:子类实现了两个抽象的虚方法,其它的方法,都是根据业务需要,类用户自行增加的。 源码如下: [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408505646.png[/img][/url]//------------------------------------------------------------------------------ [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408505692.png[/img][/url]// [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408505739.png[/img][/url]// 产品名称: 成晓旭的个人软件Delphi源码库 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408505817.png[/img][/url]// 产品版本: CXXSoft delphi code source lib 1.0 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408505864.png[/img][/url]// 模块名称: Delphi之ListView显示控制类---应用层:Soft socket类定义单元 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408505942.png[/img][/url]// 模块描述: [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506005.png[/img][/url]// 单元文件: unLVSoftSocket.pas-->unLVQuickSocket.pas [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506114.png[/img][/url]// 开发作者: 成晓旭 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506192.png[/img][/url]// 备注: 任何人使用此文件时,请保留此段自述文件,谢谢! [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506302.png[/img][/url]// 开发时间: 2005-09-26 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506411.png[/img][/url]// [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506505.png[/img][/url]// 修改历史: 2006-06-16 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506552.png[/img][/url]// 修改描述: 增加通过TList来高速增加、更新、删除数据 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506630.png[/img][/url]// 先用吧,以后再优化和完善 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506724.png[/img][/url]// 修改历史: 2006-07-10 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506849.png[/img][/url]// 修改描述: 成功地将ListView的OnData事件的List对象移入此类中 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408506974.png[/img][/url]// 修改历史: 2006-07-11 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507067.png[/img][/url]// 修改描述: 重大重构:将此类分成两个类:TLVSoftSocket-->TLVSoftSocket和TLVQuickSocket [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507114.png[/img][/url]// 以遵循SRP原则 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507192.png[/img][/url]//------------------------------------------------------------------------------ [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507286.png[/img][/url]unit unLVQuickSocket; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507333.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507396.png[/img][/url]interface [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507458.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507505.png[/img][/url]uses [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507567.png[/img][/url] ComCtrls,Classes,SysUtils,Windows, [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507646.png[/img][/url] unLVQuickClass,unLVDefine; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507692.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507771.png[/img][/url]type [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507817.png[/img][/url] TLVQuickSocket = class(TLVQuickClass) [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507864.png[/img][/url] private [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507911.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408507958.png[/img][/url] protected [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508021.png[/img][/url] class function CheckFound(const pData:Pointer;const aKey:variant):boolean;override; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508067.png[/img][/url] class procedure ProcOnDataDetail(const pData:Pointer;var Item: TListItem);override; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508161.png[/img][/url] public [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508208.png[/img][/url] constructor Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508255.png[/img][/url] destructor Destroy();override; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508302.png[/img][/url] procedure InitListView(var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508364.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508411.png[/img][/url] //快速方法 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508458.png[/img][/url] //暂时这样增加,以后在重构到基类中 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508521.png[/img][/url] procedure AddToLVSocketQuick(const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508567.png[/img][/url] procedure UpdateLVSocketQuick(const aUniqueID:integer;const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508614.png[/img][/url] procedure DeleteLVSocketQuick(const aUniqueID:integer;const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508661.png[/img][/url] procedure DeleteAllLVSocket(var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508708.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508771.png[/img][/url] procedure OnDataEvent(Item: TListItem); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508817.png[/img][/url] function GetDataCount():integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508864.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508927.png[/img][/url]implementation [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408508974.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509021.png[/img][/url][url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509067.png[/img][/url]...{ TLVQuickSocket } [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509114.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509177.png[/img][/url]procedure TLVQuickSocket.AddToLVSocketQuick( [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509224.png[/img][/url] const aSocketStatus: TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509271.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509317.png[/img][/url] AddItemDataToListView(@aSocketStatus,sizeof(aSocketStatus),lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509380.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509442.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509489.png[/img][/url]class function TLVQuickSocket.CheckFound(const pData: Pointer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509583.png[/img][/url] const aKey: variant): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509630.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509677.png[/img][/url] p:^TSocketStatusInfo; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509724.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509802.png[/img][/url] p := pData; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509849.png[/img][/url] Result := (p.UniqueID = aKey); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509896.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408509974.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510021.png[/img][/url]constructor TLVQuickSocket.Create; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510099.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510146.png[/img][/url] inherited Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510192.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510255.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510333.png[/img][/url]procedure TLVQuickSocket.DeleteAllLVSocket(var lvTemp: TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510380.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510427.png[/img][/url] DeleteAllListView(lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510474.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510536.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510583.png[/img][/url]procedure TLVQuickSocket.DeleteLVSocketQuick(const aUniqueID:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510646.png[/img][/url] const aSocketStatus: TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510708.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510755.png[/img][/url] DeleteItemDataToListView(aUniqueID,@aSocketStatus,sizeof(aSocketStatus),lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510802.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510880.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408510942.png[/img][/url]destructor TLVQuickSocket.Destroy; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511005.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511052.png[/img][/url] inherited Destroy; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511114.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511161.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511224.png[/img][/url]function TLVQuickSocket.GetDataCount(): integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511271.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511317.png[/img][/url] Result := Self.GetLVListCount(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511364.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511411.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511489.png[/img][/url]procedure TLVQuickSocket.InitListView(var lvTemp: TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511536.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511599.png[/img][/url] InitListViewColumns(SocketStrBuffer,SocketWidthBuffer,lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511661.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511724.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511771.png[/img][/url]procedure TLVQuickSocket.OnDataEvent(Item: TListItem); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511817.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511864.png[/img][/url] Self.OnDataToListView(Item); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511911.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408511974.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512021.png[/img][/url]class procedure TLVQuickSocket.ProcOnDataDetail(const pData: Pointer;var Item: TListItem); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512114.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512161.png[/img][/url] pSocket:^TSocketStatusInfo; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512208.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512271.png[/img][/url] //这两个有什么不同? [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512317.png[/img][/url] //CopyMemory(pSocket,pData,sizeof(TSocketStatusInfo)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512364.png[/img][/url] pSocket := pData; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512411.png[/img][/url] Item.Caption := IntToStr(pSocket.GroupID); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512458.png[/img][/url] Item.SubItems.Add(IntToStr(pSocket.UniqueID)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512521.png[/img][/url] Item.SubItems.Add(pSocket.IPAddress); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512567.png[/img][/url] Item.SubItems.Add(pSocket.SubItemName); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512614.png[/img][/url] Item.SubItems.Add(pSocket.LoginTime); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512661.png[/img][/url] Item.SubItems.Add(pSocket.SendNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512724.png[/img][/url] Item.SubItems.Add(pSocket.RecNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512771.png[/img][/url] Item.SubItems.Add(pSocket.Remark); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512817.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512880.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512927.png[/img][/url]procedure TLVQuickSocket.UpdateLVSocketQuick(const aUniqueID:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408512974.png[/img][/url] const aSocketStatus: TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513021.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513067.png[/img][/url] UpdateItemDataToListView(aUniqueID,@aSocketStatus,sizeof(aSocketStatus),lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513130.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513177.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513224.png[/img][/url]end. 小结: 应用此类结构实现ListView快速数据操作的优势: 1、 可以快速实现MVC模式,达到界面显示与业务逻辑的分离。在Controllor类中,实例化数据显示子类,调用相应方法即可实现显示数据的增、删、改。 2、 与原始的快速方法相比,封装了内存数据List,大大简化了List对象的操作(尤其是当有很多相同或者类似数据要求在不同Form的ListView中显示时),并减少了List的创建、数据操作、释放等操作时发生错误的可能性。 3、 简化了多个相同、类似数据显示的控制代码,针对每个份要显示的数据及ListView,只需要实例化一个显示子类,避免了直接应用原始的快速方法时,控制代码分散在每一个具体Form类中的问题。 4、 对显示数据的业务信息份进行了集中,当要求显示的信息发生变化时,只需在数据显示子类这一个类中更改即可。 此通用类结构仍有些不足之处,欢迎有兴趣的朋友继续完善: 1、每个应用层类的外部调用方式非常类似(请参考开发的示例源码),表明,有些通用的方法没有进行更好的抽象。 2、快速访问基类对其子类的行为抽象不充分,导致子类的应用层调用代码非常类似。当初这样设计的目的是想保持类结构有充分的可扩展性。其实完全可以将基类进行改良:将抽象的虚方法更换成接口,这样,基类实现的更好的封装,并且更好地满足了“向稳定的方向依赖”和“针对接口编程”的设计原则。这样,应用层还是要实例化一个自己业务需要的类来实现此接口。但Delphi的接口用起来不像是真正的接口,通常要从TInterfacedObject等类继承,大大限制了类结构层次的演化。(因为在不支持多继承的语言环境中,如果还想增加更高层次的抽象就不那么容易了)。 3、当前的版本还没有提供针对某列进行数据排序的功能。 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513286.png[/img][/url]//------------------------------------------------------------------------------ [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513349.png[/img][/url]// [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513411.png[/img][/url]// 产品名称: 成晓旭的个人软件Delphi源码库 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513458.png[/img][/url]// 产品版本: CXXSoft delphi code source lib 1.0 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513505.png[/img][/url]// 模块名称: Delphi之ListView显示控制类---外部应用层通用类定义单元 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513567.png[/img][/url]// 模块描述: ListView快速操作方法类 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513614.png[/img][/url]// 单元文件: unLVCommonClass.pas--->unLVQuickClass.pas [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513661.png[/img][/url]// 开发作者: 成晓旭 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513708.png[/img][/url]// 备注: 任何人使用此文件时,请保留此段自述文件,谢谢! [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513771.png[/img][/url]// 开发时间: 2005-09-26 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513817.png[/img][/url]// 修改历史: 2006-05-31 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513896.png[/img][/url]// 修改描述: 解决GetLVItemOrderByValue()的参数不灵活的问题 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408513958.png[/img][/url]// 并解决Method 'Create' hides virtual method of base type 'TComponent'的问题 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514005.png[/img][/url]// 修改历史: 2006-06-16 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514067.png[/img][/url]// 修改描述: 增加通过TList来高速增加、更新、删除数据 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514130.png[/img][/url]// 先用吧,以后再优化和完善 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514177.png[/img][/url]// 修改历史: 2006-07-10 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514239.png[/img][/url]// 修改描述: 成功地将ListView的OnData事件的List对象移入此类中,并将其上移到其类 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514302.png[/img][/url]// 修改历史: 2006-07-11 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514349.png[/img][/url]// 修改描述: 重大重构:将此类分成两个类:TLVCommonClass-->TLVCommonClass和TLVQuickClass, [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514396.png[/img][/url]// 以遵循SRP原则 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514442.png[/img][/url]//------------------------------------------------------------------------------ [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514505.png[/img][/url]unit unLVQuickClass; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514552.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514599.png[/img][/url]interface [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514646.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514692.png[/img][/url]uses [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514771.png[/img][/url] SysUtils,Classes,ComCtrls,Windows,Variants, [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514817.png[/img][/url] unLVControler; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514880.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514927.png[/img][/url]const [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408514974.png[/img][/url] SpecialItemOrder = -1; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515021.png[/img][/url] CSImg_Normal = 0; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515067.png[/img][/url] CSImg_Running = 1; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515130.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515177.png[/img][/url] GetColumnOrder = 0; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515239.png[/img][/url]type [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515302.png[/img][/url] TLVQuickClass = class(TInterfacedObject) [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515349.png[/img][/url] private [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515411.png[/img][/url] cxxLVC:TCXXLVControler; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515458.png[/img][/url] lvDataList: TList; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515505.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515567.png[/img][/url] //为ListView的Item的Data属性查询关键数据在TList中的索引号 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515614.png[/img][/url] class function GetListDataIndexByKey(const listData:TList;const aKey: variant):integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515677.png[/img][/url] //快速 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515724.png[/img][/url] procedure ClearLVDataList(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515771.png[/img][/url] protected [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515817.png[/img][/url] //注意:约定最后一项一定是ImageIndex [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515880.png[/img][/url] //tmpList:TStringList; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515927.png[/img][/url] function InitListViewColumns(const displayName: array of string; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408515989.png[/img][/url] const displayWidth: array of integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516036.png[/img][/url] var lvTemp:TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516083.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516130.png[/img][/url] //子类必须实现 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516177.png[/img][/url] class function CheckFound(const pData:Pointer;const aKey:variant):boolean;virtual; abstract; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516239.png[/img][/url] class procedure ProcOnDataDetail(const pData:Pointer;var Item: TListItem);virtual; abstract; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516286.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516333.png[/img][/url] //快速方法 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516380.png[/img][/url] //[注意:新方法中lvList不要求传递参数,保留以兼容旧客户端版本] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516442.png[/img][/url] //将pData数据加入List中,实现向ListView增加数据行 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516489.png[/img][/url] function AddItemDataToListView(const pData:Pointer;const dataNumber:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516567.png[/img][/url] var lvTemp:TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516630.png[/img][/url] //; var lvList: TList=nil):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516677.png[/img][/url] //以aKey为关键值查找,并用pData数据更新List中满足条件的内存块,实现向ListView更新数据行 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516739.png[/img][/url] function UpdateItemDataToListView(const aKey:variant;const pData:Pointer;const dataNumber:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516786.png[/img][/url] var lvTemp:TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516833.png[/img][/url] //; var lvList: TList=nil):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516896.png[/img][/url] //以aKey为关键值查找,并用pData数据删除List中满足条件的内存块,实现向ListView删除数据行 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516942.png[/img][/url] function DeleteItemDataToListView(const aKey:variant;const pData:Pointer;const dataNumber:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408516989.png[/img][/url] var lvTemp:TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517052.png[/img][/url] //; var lvList: TList=nil):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517099.png[/img][/url] //删除List中所有内存区,实现将ListView清空所有数据行 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517146.png[/img][/url] procedure DeleteAllListView(var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517192.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517271.png[/img][/url] //ListVisw的OnData事件处理 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517317.png[/img][/url] procedure OnDataToListView(var Item: TListItem); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517364.png[/img][/url] //ListVisw的OnData事件的List Count [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517442.png[/img][/url] function GetLVListCount():integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517489.png[/img][/url] public [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517536.png[/img][/url] constructor Create();overload; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517583.png[/img][/url] destructor Destroy();override; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517646.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517692.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517739.png[/img][/url]implementation [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517786.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517833.png[/img][/url][url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517896.png[/img][/url]...{ TLVQuickClass } [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408517974.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518021.png[/img][/url]function TLVQuickClass.AddItemDataToListView(const pData: Pointer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518083.png[/img][/url] const dataNumber: integer; var lvTemp: TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518130.png[/img][/url] //; var lvList: TList):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518192.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518239.png[/img][/url] pTemp:Pointer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518302.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518349.png[/img][/url] //注意:要影响性能 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518396.png[/img][/url] //lvTemp.Items.BeginUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518458.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518521.png[/img][/url] if NOT (Assigned(pData) and Assigned(lvTemp) and Assigned(lvDataList)) then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518567.png[/img][/url] //new(pTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518614.png[/img][/url] GetMem(pTemp,dataNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518661.png[/img][/url] lvTemp.OwnerData := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518724.png[/img][/url] CopyMemory(pTemp,pData,dataNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518771.png[/img][/url] lvDataList.Add(pTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518833.png[/img][/url] Result := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518880.png[/img][/url] //注意:要影响性能 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518942.png[/img][/url] //lvTemp.Items.Count := lvList.Count; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408518989.png[/img][/url] //lvTemp.Items.EndUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519036.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519083.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519177.png[/img][/url]procedure TLVQuickClass.ClearLVDataList(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519224.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519271.png[/img][/url] Loop:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519317.png[/img][/url] pTemp:Pointer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519380.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519427.png[/img][/url] if NOT (Assigned(lvDataList) and (lvDataList.Count > 0)) then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519489.png[/img][/url] for Loop := 0 to lvDataList.Count - 1 do [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519536.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519677.png[/img][/url] pTemp := (lvDataList.Items[Loop]); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519724.png[/img][/url] if Assigned(pTemp) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519771.png[/img][/url] FreeMem(pTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519817.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519880.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408519942.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520005.png[/img][/url]constructor TLVQuickClass.Create; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520067.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520114.png[/img][/url] inherited Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520161.png[/img][/url] cxxLVC := TCXXLVControler.Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520239.png[/img][/url] //tmpList := TStringList.Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520302.png[/img][/url] lvDataList := TList.Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520364.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520427.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520474.png[/img][/url]procedure TLVQuickClass.DeleteAllListView(var lvTemp: TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520521.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520599.png[/img][/url] if NOT (Assigned(lvTemp) and Assigned(lvDataList) and (lvDataList.Count > 0)) then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520646.png[/img][/url] lvTemp.OwnerData := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520692.png[/img][/url] lvTemp.Items.BeginUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520739.png[/img][/url] while (lvDataList.Count > 0) do [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520802.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520849.png[/img][/url] Dispose(lvDataList[0]); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520896.png[/img][/url] lvDataList.Delete(0); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408520942.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521005.png[/img][/url] lvTemp.Items.Count := lvDataList.Count; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521052.png[/img][/url] lvTemp.Items.EndUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521099.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521146.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521208.png[/img][/url]function TLVQuickClass.DeleteItemDataToListView(const aKey: variant; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521255.png[/img][/url] const pData: Pointer; const dataNumber: integer; var lvTemp: TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521302.png[/img][/url] //var lvList: TList): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521349.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521411.png[/img][/url] colIndex:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521474.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521521.png[/img][/url] //注意:要影响性能 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521567.png[/img][/url] //lvTemp.Items.BeginUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521614.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521677.png[/img][/url] if NOT (Assigned(pData) and Assigned(lvTemp) and Assigned(lvDataList) and (lvDataList.Count > 0)) then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521724.png[/img][/url] colIndex := GetListDataIndexByKey(lvDataList,aKey); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521771.png[/img][/url] if (colIndex <> SpecialItemOrder) and (colIndex >= 0) and (colIndex <= lvDataList.Count - 1) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521817.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521880.png[/img][/url] Dispose(lvDataList[colIndex]); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521927.png[/img][/url] lvDataList.Delete(colIndex); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408521989.png[/img][/url] Result := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522036.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522083.png[/img][/url] //注意:要影响性能 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522130.png[/img][/url] //lvTemp.Items.Count := lvList.Count; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522192.png[/img][/url] //lvTemp.Items.EndUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522255.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522317.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522364.png[/img][/url]destructor TLVQuickClass.Destroy; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522411.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522474.png[/img][/url] ClearLVDataList(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522521.png[/img][/url] if Assigned(lvDataList) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522567.png[/img][/url] FreeAndNil(lvDataList); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522614.png[/img][/url] if Assigned(cxxLVC) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522677.png[/img][/url] FreeAndNil(cxxLVC); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522724.png[/img][/url] //if Assigned(tmpList) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522771.png[/img][/url] // FreeAndNil(tmpList); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522817.png[/img][/url] inherited Destroy; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522896.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522942.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408522989.png[/img][/url]class function TLVQuickClass.GetListDataIndexByKey(const listData: TList; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523036.png[/img][/url] const aKey: variant): integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523099.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523146.png[/img][/url] Loop:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523192.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523239.png[/img][/url] Result := SpecialItemOrder; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523302.png[/img][/url] if NOT Assigned(listData) then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523349.png[/img][/url] if listData.Count <= 0 then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523396.png[/img][/url] for Loop := 0 to listData.Count - 1 do [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523458.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523505.png[/img][/url] if CheckFound(listData[Loop],aKey) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523552.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523599.png[/img][/url] Result := Loop; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523646.png[/img][/url] break; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523708.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523755.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523802.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523849.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408523911.png[/img][/url]function TLVQuickClass.GetLVListCount(): integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524005.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524052.png[/img][/url] Result := 0; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524099.png[/img][/url] if Assigned(lvDataList) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524146.png[/img][/url] Result := lvDataList.Count; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524208.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524255.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524302.png[/img][/url]function TLVQuickClass.InitListViewColumns(const displayName: array of string; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524349.png[/img][/url] const displayWidth: array of integer; var lvTemp: TListView): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524411.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524458.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524505.png[/img][/url] if Assigned(cxxLVC) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524552.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524599.png[/img][/url] cxxLVC.InitLVColumns(displayName,displayWidth,lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524661.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524708.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524755.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524817.png[/img][/url]procedure TLVQuickClass.OnDataToListView(var Item: TListItem); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524864.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524911.png[/img][/url] pTemp:Pointer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408524958.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525021.png[/img][/url] //以后要移到类中,做成回调 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525067.png[/img][/url] if NOT Assigned(lvDataList) then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525114.png[/img][/url] if lvDataList.Count <= 0 then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525161.png[/img][/url] if Item.Index > lvDataList.Count then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525224.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525271.png[/img][/url] pTemp := lvDataList[Item.Index]; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525317.png[/img][/url] ProcOnDataDetail(pTemp,Item); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525364.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525427.png[/img][/url] Item.ImageIndex := 1; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525474.png[/img][/url] Item.Data := pTemp; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525521.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525567.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525630.png[/img][/url]function TLVQuickClass.UpdateItemDataToListView(const aKey: variant; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525677.png[/img][/url] const pData: Pointer; const dataNumber: integer; var lvTemp: TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525724.png[/img][/url] //var lvList: TList):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525771.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525833.png[/img][/url] colIndex:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525880.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408525927.png[/img][/url] //注意:要影响性能 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526005.png[/img][/url] //lvTemp.Items.BeginUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526052.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526099.png[/img][/url] if NOT (Assigned(pData) and Assigned(lvTemp) and Assigned(lvDataList) and (lvDataList.Count > 0)) then Exit; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526146.png[/img][/url] colIndex := GetListDataIndexByKey(lvDataList,aKey); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526208.png[/img][/url] if (colIndex <> SpecialItemOrder) and (colIndex >= 0) and (colIndex <= lvDataList.Count - 1) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526255.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526302.png[/img][/url] CopyMemory(lvDataList[colIndex],pData,dataNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526349.png[/img][/url] Result := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526411.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526864.png[/img][/url] //注意:要影响性能 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526927.png[/img][/url] //lvTemp.Items.Count := lvList.Count; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408526974.png[/img][/url] //lvTemp.Items.EndUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527021.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527067.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527114.png[/img][/url]end. [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527177.png[/img][/url]//------------------------------------------------------------------------------ [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527224.png[/img][/url]// [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527271.png[/img][/url]// 产品名称: 成晓旭的个人软件Delphi源码库 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527317.png[/img][/url]// 产品版本: CXXSoft delphi code source lib 1.0 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527380.png[/img][/url]// 模块名称: Delphi之ListView显示控制类---应用层:Soft socket类定义单元 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527427.png[/img][/url]// 模块描述: [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527474.png[/img][/url]// 单元文件: unLVSoftSocket.pas-->unLVSocket.pas [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527521.png[/img][/url]// 开发作者: 成晓旭 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527599.png[/img][/url]// 备注: 任何人使用此文件时,请保留此段自述文件,谢谢! [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527661.png[/img][/url]// 开发时间: 2005-09-26 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527724.png[/img][/url]// [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527771.png[/img][/url]// 修改历史: 2006-06-16 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527817.png[/img][/url]// 修改描述: 增加通过TList来高速增加、更新、删除数据 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527864.png[/img][/url]// 先用吧,以后再优化和完善 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527942.png[/img][/url]// 修改历史: 2006-07-10 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408527989.png[/img][/url]// 修改描述: 成功地将ListView的OnData事件的List对象移入此类中 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528036.png[/img][/url]// 修改历史: 2006-07-11 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528083.png[/img][/url]// 修改描述: 重大重构:将此类分成两个类:TLVSoftSocket-->TLVSocket和TLVQuickClass [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528146.png[/img][/url]// 以遵循SRP原则 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528192.png[/img][/url]//------------------------------------------------------------------------------ [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528239.png[/img][/url]unit unLVSocket; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528286.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528349.png[/img][/url]interface [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528396.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528458.png[/img][/url]uses [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528505.png[/img][/url] ComCtrls,Classes,SysUtils,Windows, [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528552.png[/img][/url] unLVCommonClass,unLVDefine; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528599.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528661.png[/img][/url]type [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528708.png[/img][/url] TLVSocket = class(TLVCommonClass) [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528755.png[/img][/url] private [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528802.png[/img][/url] //注意:此方法与顺序严重藕合 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528849.png[/img][/url] function SaveSerialStatusToStringList(const aSocketStatus:TSocketStatusInfo):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528911.png[/img][/url] protected [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408528958.png[/img][/url] class function CheckFound(const pData:Pointer;const aKey:variant):boolean;override; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529005.png[/img][/url] class procedure ProcOnDataDetail(const pData:Pointer;var Item: TListItem);override; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529052.png[/img][/url] public [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529114.png[/img][/url] constructor Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529161.png[/img][/url] destructor Destroy();override; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529208.png[/img][/url] procedure InitListView(var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529271.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529333.png[/img][/url] //传统方法 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529380.png[/img][/url] procedure AddToLVSocket(const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529427.png[/img][/url] procedure UpdateLVSocket(const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529489.png[/img][/url] procedure DeleteLVSocket(const aSocketStatus:TSocketStatusInfo;var lvTemp:TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529552.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529599.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529661.png[/img][/url]implementation [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529708.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529755.png[/img][/url][url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529802.png[/img][/url]...{ TLVSocket } [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529849.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529911.png[/img][/url]procedure TLVSocket.AddToLVSocket( [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408529958.png[/img][/url] const aSocketStatus: TSocketStatusInfo; var lvTemp: TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530005.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530052.png[/img][/url] if SaveSerialStatusToStringList(aSocketStatus) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530130.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530177.png[/img][/url] AddDataToListView(tmpList,lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530224.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530271.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530333.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530380.png[/img][/url]class function TLVSocket.CheckFound(const pData: Pointer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530427.png[/img][/url] const aKey: variant): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530489.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530536.png[/img][/url] p:^TSocketStatusInfo; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530630.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530677.png[/img][/url] p := pData; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530739.png[/img][/url] Result := (p.UniqueID = aKey); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530786.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530833.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530880.png[/img][/url]constructor TLVSocket.Create; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530942.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408530989.png[/img][/url] inherited Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531036.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531083.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531146.png[/img][/url]procedure TLVSocket.DeleteLVSocket( [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531208.png[/img][/url] const aSocketStatus: TSocketStatusInfo; var lvTemp: TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531255.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531302.png[/img][/url] if SaveSerialStatusToStringList(aSocketStatus) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531380.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531427.png[/img][/url] DeleteDataFromListView(tmpList,lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531474.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531521.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531599.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531646.png[/img][/url]destructor TLVSocket.Destroy; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531692.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531739.png[/img][/url] inherited Destroy; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531802.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531849.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531911.png[/img][/url]procedure TLVSocket.InitListView(var lvTemp: TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408531958.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532005.png[/img][/url] InitListViewColumns(SocketStrBuffer,SocketWidthBuffer,lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532052.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532114.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532161.png[/img][/url]class procedure TLVSocket.ProcOnDataDetail(const pData: Pointer;var Item: TListItem); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532208.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532255.png[/img][/url] pSocket:^TSocketStatusInfo; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532317.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532364.png[/img][/url] //这两个有什么不同? [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532427.png[/img][/url] //CopyMemory(pSocket,pData,sizeof(TSocketStatusInfo)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532474.png[/img][/url] pSocket := pData; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532521.png[/img][/url] Item.Caption := IntToStr(pSocket.GroupID); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532583.png[/img][/url] Item.SubItems.Add(IntToStr(pSocket.UniqueID)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532646.png[/img][/url] Item.SubItems.Add(pSocket.IPAddress); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532692.png[/img][/url] //Item.SubItems.Add(IntToStr(pSocket.CommServerPort)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532755.png[/img][/url] Item.SubItems.Add(pSocket.SubItemName); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532802.png[/img][/url] Item.SubItems.Add(pSocket.LoginTime); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532864.png[/img][/url] Item.SubItems.Add(pSocket.SendNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532911.png[/img][/url] Item.SubItems.Add(pSocket.RecNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408532958.png[/img][/url] Item.SubItems.Add(pSocket.Remark); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533005.png[/img][/url] //Item.SubItems.Add(pSocket.IPAddress); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533067.png[/img][/url] //Item.SubItems.Add(pSocket.IPAddress); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533114.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533161.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533224.png[/img][/url]function TLVSocket.SaveSerialStatusToStringList( [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533286.png[/img][/url] const aSocketStatus: TSocketStatusInfo): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533349.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533411.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533474.png[/img][/url] if Assigned(tmpList) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533521.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533567.png[/img][/url] tmpList.Clear(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533614.png[/img][/url] tmpList.Add(IntToStr(aSocketStatus.GroupID)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533677.png[/img][/url] tmpList.Add(IntToStr(aSocketStatus.UniqueID)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533724.png[/img][/url] tmpList.Add(aSocketStatus.IPAddress); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533771.png[/img][/url] tmpList.Add(aSocketStatus.SubItemName); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533833.png[/img][/url] tmpList.Add(aSocketStatus.LoginTime); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533880.png[/img][/url] tmpList.Add(aSocketStatus.SendNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533927.png[/img][/url] tmpList.Add(aSocketStatus.RecNumber); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408533974.png[/img][/url] tmpList.Add(IntToStr(CSImg_Running)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534036.png[/img][/url] Result := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534083.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534130.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534177.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534239.png[/img][/url]procedure TLVSocket.UpdateLVSocket( [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534286.png[/img][/url] const aSocketStatus: TSocketStatusInfo; var lvTemp: TListView); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534333.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534396.png[/img][/url] if SaveSerialStatusToStringList(aSocketStatus) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534442.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534489.png[/img][/url] UpdateDataFromListView(tmpList,lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534536.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534599.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534646.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534724.png[/img][/url]end. [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534771.png[/img][/url]//------------------------------------------------------------------------------ [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534833.png[/img][/url]// [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534880.png[/img][/url]// 产品名称: 成晓旭的个人软件Delphi源码库 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534927.png[/img][/url]// 产品版本: CXXSoft delphi code source lib 1.0 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408534974.png[/img][/url]// 模块名称: Delphi之ListView显示控制类---外部应用层通用类定义单元 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535036.png[/img][/url]// 模块描述: ListView传统操作方法类 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535099.png[/img][/url]// 单元文件: unLVCommonClass.pas [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535146.png[/img][/url]// 开发作者: 成晓旭 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535192.png[/img][/url]// 备注: 任何人使用此文件时,请保留此段自述文件,谢谢! [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535255.png[/img][/url]// 开发时间: 2005-09-26 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535302.png[/img][/url]// 修改历史: 2006-05-31 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535349.png[/img][/url]// 修改描述: 解决GetLVItemOrderByValue()的参数不灵活的问题 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535396.png[/img][/url]// 并解决Method 'Create' hides virtual method of base type 'TComponent'的问题 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535458.png[/img][/url]// 修改历史: 2006-06-16 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535521.png[/img][/url]// 修改描述: 增加通过TList来高速增加、更新、删除数据 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535567.png[/img][/url]// 先用吧,以后再优化和完善 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535630.png[/img][/url]// 修改历史: 2006-07-10 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535677.png[/img][/url]// 修改描述: 成功地将ListView的OnData事件的List对象移入此类中,并将其上移到其类 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535724.png[/img][/url]// 修改历史: 2006-07-11 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535771.png[/img][/url]// 修改描述: 重大重构:将此类分成两个类:TLVCommonClass-->TLVCommonClass和TLVQuickClass [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535833.png[/img][/url]// 以遵循SRP原则 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535896.png[/img][/url]//------------------------------------------------------------------------------ [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408535958.png[/img][/url]unit unLVCommonClass; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536005.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536052.png[/img][/url]interface [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536099.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536161.png[/img][/url]uses [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536208.png[/img][/url] SysUtils,Classes,ComCtrls,Windows,Variants, [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536255.png[/img][/url] unLVControler,unLVInterface; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536302.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536364.png[/img][/url]const [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536411.png[/img][/url] SpecialItemOrder = -1; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536458.png[/img][/url] CSImg_Normal = 0; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536505.png[/img][/url] CSImg_Running = 1; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536583.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536661.png[/img][/url] GetColumnOrder = 0; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536708.png[/img][/url]type [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536771.png[/img][/url] TLVCommonClass = class(TInterfacedObject,ILVControllor) [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536833.png[/img][/url] private [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536896.png[/img][/url] cxxLVC:TCXXLVControler; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536942.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408536989.png[/img][/url] class function StrIsNumber(const str:PChar):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537067.png[/img][/url] function GetLVItemOrderByValue(const lvTemp:TListView;const aKeyValue:string;const columnOrder:integer=SpecialItemOrder):integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537130.png[/img][/url] procedure CommonListItemProcess(const dataList: TStringList;var liTemp:TListItem; const isUpdate: boolean); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537192.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537239.png[/img][/url] protected [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537317.png[/img][/url] //注意:约定最后一项一定是ImageIndex [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537380.png[/img][/url] tmpList:TStringList; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537427.png[/img][/url] function InitListViewColumns(const displayName: array of string; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537474.png[/img][/url] const displayWidth: array of integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537521.png[/img][/url] var lvTemp:TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537583.png[/img][/url] function AddDataToListView(const dataList:TStringList;var lvTemp:TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537630.png[/img][/url] function UpdateDataFromListView(const dataList:TStringList;var lvTemp:TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537677.png[/img][/url] //注意:删除的键值默认以SubItem[0]为标准 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537724.png[/img][/url] function DeleteDataFromListView(const dataList:TStringList;var lvTemp:TListView):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537786.png[/img][/url] //子类必须实现 [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537833.png[/img][/url] class function CheckFound(const pData:Pointer;const aKey:variant):boolean;virtual; abstract; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537880.png[/img][/url] class procedure ProcOnDataDetail(const pData:Pointer;var Item: TListItem);virtual; abstract; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408537958.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538005.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538052.png[/img][/url] public [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538099.png[/img][/url] constructor Create();overload; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538177.png[/img][/url] destructor Destroy();override; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538224.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538271.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538317.png[/img][/url]implementation [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538364.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538427.png[/img][/url][url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538474.png[/img][/url]...{ TLVCommonClass } [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538521.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538567.png[/img][/url]function TLVCommonClass.AddDataToListView(const dataList: TStringList; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538630.png[/img][/url] var lvTemp: TListView): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538677.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538724.png[/img][/url] liTemp:TListItem; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538771.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538833.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538880.png[/img][/url] if dataList.Count > 0 then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538927.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408538989.png[/img][/url] lvTemp.Items.BeginUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539036.png[/img][/url] liTemp := lvTemp.Items.Add(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539099.png[/img][/url] CommonListItemProcess(dataList,liTemp,false); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539146.png[/img][/url] //liTemp.Caption := dataList.Strings[dataIndex]; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539192.png[/img][/url] //Inc(dataIndex); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539239.png[/img][/url] //while (dataIndex < dataList.Count) do [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539302.png[/img][/url] //begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539349.png[/img][/url] // liTemp.SubItems.Add(dataList.Strings[dataIndex]); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539396.png[/img][/url] // Inc(dataIndex); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539442.png[/img][/url] //end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539505.png[/img][/url] lvTemp.Items.EndUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539552.png[/img][/url] Result := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539599.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539661.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539708.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539755.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539802.png[/img][/url]procedure TLVCommonClass.CommonListItemProcess(const dataList: TStringList; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539864.png[/img][/url] var liTemp: TListItem; const isUpdate: boolean); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539911.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408539958.png[/img][/url] dataIndex:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540036.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540083.png[/img][/url] dataIndex := 0; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540130.png[/img][/url] liTemp.Caption := dataList.Strings[dataIndex]; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540177.png[/img][/url] Inc(dataIndex); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540239.png[/img][/url] while (dataIndex < dataList.Count) do [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540286.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540333.png[/img][/url] if (dataIndex = dataList.Count - 1) and StrIsNumber(PChar(dataList.Strings[dataIndex])) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540396.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540442.png[/img][/url] liTemp.ImageIndex := StrToInt(dataList.Strings[dataIndex]); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540505.png[/img][/url] end [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540552.png[/img][/url] else [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540599.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540646.png[/img][/url] if isUpdate then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540724.png[/img][/url] liTemp.SubItems[dataIndex-1] := dataList.Strings[dataIndex] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540771.png[/img][/url] else [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540833.png[/img][/url] liTemp.SubItems.Add(dataList.Strings[dataIndex]); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540880.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540927.png[/img][/url] Inc(dataIndex); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408540974.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541036.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541099.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541146.png[/img][/url]constructor TLVCommonClass.Create; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541192.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541239.png[/img][/url] inherited Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541286.png[/img][/url] cxxLVC := TCXXLVControler.Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541349.png[/img][/url] tmpList := TStringList.Create(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541396.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541442.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541505.png[/img][/url]function TLVCommonClass.DeleteDataFromListView( [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541552.png[/img][/url] const dataList: TStringList; var lvTemp: TListView): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541614.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541661.png[/img][/url] colIndex:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541724.png[/img][/url]// liTemp:TListItem; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541771.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541817.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541864.png[/img][/url] if dataList.Count > 0 then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541927.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408541974.png[/img][/url] colIndex := GetLVItemOrderByValue(lvTemp,dataList.Strings[GetColumnOrder+1],GetColumnOrder); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542021.png[/img][/url] if (colIndex <> SpecialItemOrder) and Assigned(cxxLVC)then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542067.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542130.png[/img][/url] cxxLVC.DeleteItemByIndex(lvTemp,colIndex); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542177.png[/img][/url] Result := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542224.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542271.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542317.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542380.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542427.png[/img][/url]destructor TLVCommonClass.Destroy; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542474.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542521.png[/img][/url] if Assigned(cxxLVC) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542599.png[/img][/url] FreeAndNil(cxxLVC); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542646.png[/img][/url] if Assigned(tmpList) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542692.png[/img][/url] FreeAndNil(tmpList); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542739.png[/img][/url] inherited Destroy; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542802.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542849.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542896.png[/img][/url]function TLVCommonClass.GetLVItemOrderByValue(const lvTemp: TListView; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408542942.png[/img][/url] const aKeyValue: string; const columnOrder: integer): integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543005.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543052.png[/img][/url] Loop:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543099.png[/img][/url] isOK:boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543146.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543208.png[/img][/url] Result := SpecialItemOrder; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543255.png[/img][/url] isOK := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543302.png[/img][/url] for Loop := 0 to lvTemp.Items.Count - 1 do [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543364.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543411.png[/img][/url] if columnOrder <> SpecialItemOrder then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543458.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543521.png[/img][/url] if (columnOrder >= 0) and (columnOrder < lvTemp.Columns.Count) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543567.png[/img][/url] isOK := (lvTemp.Items[Loop].SubItems[columnOrder] = aKeyValue); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543630.png[/img][/url] end [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543677.png[/img][/url] else [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543739.png[/img][/url] isOK := (lvTemp.Items[Loop].Caption = aKeyValue); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543786.png[/img][/url] if isOK then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543849.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543896.png[/img][/url] Result := Loop; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543942.png[/img][/url] break; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408543989.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544052.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544099.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544146.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544208.png[/img][/url]function TLVCommonClass.InitListViewColumns(const displayName: array of string; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544255.png[/img][/url] const displayWidth: array of integer; var lvTemp: TListView): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544333.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544380.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544427.png[/img][/url] if Assigned(cxxLVC) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544474.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544521.png[/img][/url] cxxLVC.InitLVColumns(displayName,displayWidth,lvTemp); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544583.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544677.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544724.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544786.png[/img][/url]class function TLVCommonClass.StrIsNumber(const str: PChar): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544833.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544880.png[/img][/url] p:Char; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544927.png[/img][/url] i:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408544989.png[/img][/url] function CheckHex(p:Char):boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545036.png[/img][/url] var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545099.png[/img][/url] k:Byte; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545146.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545192.png[/img][/url] k := Ord(P); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545255.png[/img][/url] Result := ((k >= 48) and (k <= 57)) or ((k >= 65) and (k <= 70)) or ((k >= 97) and (k <= 102)); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545317.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545364.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545411.png[/img][/url] try [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545474.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545536.png[/img][/url] for i := 0 to Length(str)-1 do [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545599.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545646.png[/img][/url] p := str[i]; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545692.png[/img][/url] Result := CheckHex(p); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545755.png[/img][/url] if NOT Result then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545802.png[/img][/url] break; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545849.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545911.png[/img][/url] except [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408545958.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546005.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546052.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546099.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546161.png[/img][/url]function TLVCommonClass.UpdateDataFromListView( [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546208.png[/img][/url] const dataList: TStringList; var lvTemp: TListView): boolean; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546255.png[/img][/url]var [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546317.png[/img][/url] colIndex:integer; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546364.png[/img][/url] liTemp:TListItem; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546411.png[/img][/url]begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546458.png[/img][/url] Result := false; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546505.png[/img][/url] if dataList.Count > 0 then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546567.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546630.png[/img][/url] colIndex := GetLVItemOrderByValue(lvTemp,dataList.Strings[GetColumnOrder+1],GetColumnOrder); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546692.png[/img][/url] if (colIndex <> SpecialItemOrder) then [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546739.png[/img][/url] begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546786.png[/img][/url] lvTemp.Items.BeginUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546849.png[/img][/url] liTemp := lvTemp.Items[colIndex]; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546911.png[/img][/url] CommonListItemProcess(dataList,liTemp,true); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408546958.png[/img][/url] //liTemp.Caption := dataList.Strings[dataIndex]; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547021.png[/img][/url] //Inc(dataIndex); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547067.png[/img][/url] //while (dataIndex < dataList.Count) do [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547114.png[/img][/url] //begin [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547161.png[/img][/url] // liTemp.SubItems[dataIndex-1] := dataList.Strings[dataIndex]; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547224.png[/img][/url] // Inc(dataIndex); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547271.png[/img][/url] //end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547349.png[/img][/url] lvTemp.Items.EndUpdate(); [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547396.png[/img][/url] Result := true; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547474.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547521.png[/img][/url] end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547567.png[/img][/url]end; [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547614.png[/img][/url] [url=http://www.wangchao.net.cn/bbs/hydetail_999985.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1190408547692.png[/img][/url]end.
󰈣󰈤
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

网络安全治理:国家安全保障的主要方向是打击犯罪,而不是处置和惩罚受害者

来源:中国青年报 新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...

 
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
清淡自然的清纯模特
倩女幽魂_美丽女生
[i]黄山
雪棉
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有