层次关系:

TListView:
           ->Columns:
           ->Items  : -->TListItems:   
                      -->Clear:                        
                      -->BeginUpdate:
                      -->Add:      --->TListItem:  ---->Caption:
                                                   ----> SubItems:-->TStrings:->Add
TListView:代表整个列表,所有的行和列的属性方法的集合
->Columns:所有列
->Items  :所有行,TListItems类型
       -->TListItems: 所有行即条目的属性方法的集合 
       -->Clear: 移除所有的条目                      
       -->BeginUpdate: 更新所有的条目
       -->Add: 添加新的条目 ,TListItem类型  
            --->TListItem: 一行或者条目的属性方法的集合
            --->Caption:一个条目的名称
            ---> SubItems:一个条目的子条目,TStrings类型
                   -->TStrings:一个字符串的集合
                        ->Add:添加一个字符串

一、属性

1.ListView主要属性

(1)ViewStyle属性
ViewStyle属性用于选择数据项的4种显示方式,因此该属性有4个选项值:vsIcon大图标、vsSmallIcon小图标、vsList列表、vsReport详细列表

区别参考资料:http://www.cnblogs.com/del/archive/2009/01/04/1368187.html

vsReport:

1)可以像grid一样展示

2)如果要有线条..设gridLines = true

二、添加、修改、删除

实例:

添加

  加载到列表

item := ListView1.Items.Add;//增加一行
item.Caption := cbb_inputs.Text;
item.SubItems.Add(cbb_VAL.Text);
item.SubItems.Add(edt_inputDev.Text);
item.SubItems.Add(edt_inputch.Text);
item.SubItems.Add(edt_CONSTANTS.Text);

最好加个BeginUpdate , EndUpdate如下

lv_Item.Items.BeginUpdate;
try
  for j := 0 to ItemArr.Size-1 do
  begin
    Itemsnum:=ItemArr.items[j].Value;
    ddevcondition:=JSON(['_id',Itemsnum]);
    ddev:=FMongoWire.Get(devCol,ddevcondition);
    li:=lv_Item.Items.Add;
    li.Caption:=Itemsnum;
    li.SubItems.Add(VarToStr(ddev['name']));//siType
  end;
finally
  lv_Item.Items.EndUpdate;
end;

修改

  将列表数据传EDIT中  

  if ListView1.Selected=nil then raise Exception.Create('请选择要修改的数据!');
  cbb_inputs.Text:=ListView1.Selected.Caption;
  stype:= ListView1.Selected.SubItems.Strings[0];
  cbb_VAL.Text:=stype;
  edt_inputDev.Text:=stype;
  if(stype='VALUE')then
  begin
    edt_inputDev.Text:=ListView1.Selected.SubItems.Strings[1];
    edt_inputch.Text:=ListView1.Selected.SubItems.Strings[2];
    edt_CONSTANTS.Text:='';
    btn_dev.Enabled:=True;
    btn_ch.Enabled:=True;
  end
  else if (stype='CONSTANTS') then
  begin
    edt_inputDev.Text:='';
    edt_inputch.Text:='';
    edt_CONSTANTS.Enabled:=true;
    edt_CONSTANTS.Text:=ListView1.Selected.SubItems.Strings[3];
end;

  加载到列表

  ListView1.Selected.Caption:=cbb_inputs.Text;//选择的行
  ListView1.Selected.SubItems.Strings[0]:=cbb_VAL.Text;

  if(ListView1.Selected.SubItems.Strings[0]='VALUE') then
  begin
    ListView1.Selected.SubItems.Strings[1]:=edt_inputDev.Text;
    ListView1.Selected.SubItems.Strings[2]:=edt_inputch.Text;
  end
  else if(ListView1.Selected.SubItems.Strings[0]='CONSTANTS') then
    ListView1.Selected.SubItems.Strings[3]:=edt_CONSTANTS.Text;

删除

if listview1.Selected= nil then exit ;

ListView1.Selected.Delete;

判断行记录是否已存在

首先介绍一下TlistView中FindCaption的用法:

function FindCaption(StartIndex: Integer; Value: string; Partial, Inclusive, Wrap: Boolean): TListItem;

这个函数用于查找listview中caption为某个值的记录,返回值为这个记录对应的ListItem,如果不存在这个记录,则返回nil.

当caption的长度大于255时,即使listview中存在这条记录,该函数亦会返回nil,

if( ListView1.FindCaption(0, Trim(cbb_inputs.Text), True, True, True)=nil)then
begin
ListView1.Selected.Caption:=cbb_inputs.Text;
ListView1.Selected.SubItems.Strings[0]:=cbb_VAL.Text;

if(ListView1.Selected.SubItems.Strings[0]='VALUE') then
begin
ListView1.Selected.SubItems.Strings[1]:=edt_inputDev.Text;
ListView1.Selected.SubItems.Strings[2]:=edt_inputch.Text;
end
else if(ListView1.Selected.SubItems.Strings[0]='CONSTANTS') then
ListView1.Selected.SubItems.Strings[3]:=edt_CONSTANTS.Text;
end
else begin
ShowErrMsg('已存在【'''+Trim(cbb_inputs.Text)+''' 】');
Exit;
end;

修改时,判断行记录是否已存在

selectNum:=ListView1.Selected.index;//当前行的序号
scaption:= Trim(cbb_inputs.Text);
For i:=0 to ListView1.Items.Count-1 Do
begin
  if(i<>selectNum)then
  begin
    if(scaption= ListView1.Items[i].Caption ) then
    begin
      ShowErrMsg('已存在输入量【'''+Trim(cbb_inputs.Text)+''' 】');
      Exit
    end;
  end;
end;

判断某列值是否设置

For i:=0 to ListView1.Items.Count-1 Do
begin
  if(listview1.Items[i].SubItems.strings[4]='√') then
  begin
    bzcb:=True;
    Break;
  end;
end;
if(bzcb=False)then
begin
  ShowErrMsg('请设置主设备');
Exit;

已有个数: ListView1.Items.Count

delphi -----TListView的用法的更多相关文章

  1. (转载)Delphi TStringList的用法

    Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...

  2. Delphi TStringList的用法

    Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...

  3. Delphi Inputbox,InputQuery用法

    Delphi :InputQuery,InputBox用法及区别 function InputQuery(const ACaption, APrompt: string; var Value: str ...

  4. Delphi XE4 TStringHelper用法详解

    原文地址:Delphi XE4 TStringHelper用法详解作者:天下为公 Delphi XE4的TStringHelper,对操作字符串进一步带来更多的方法,估计XE5还能继续用到. Syst ...

  5. delphi FillChar的用法(转)

    delphi FillChar的用法(转) (2012-12-24 15:12:06) 转载▼ 标签: it 分类: delphi7 FillChar的用法(delphi) Fillchar是Turb ...

  6. Delphi常用关键字用法详解

    本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, ...

  7. Delphi中Messagedlg用法

    if MessageDlg('Welcome to my Delphi application. Exit now?', mtConfirmation, [mbYes, mbNo], 0) = mrY ...

  8. Delphi GDI+基本用法总结

    GDI+以前只是听说过,还没怎么用过,这段时间用了用,觉得挺好用的.在这里总结一下.留个备忘. GDI+(Graphics Device Interface plus)是Windows XP中的一个子 ...

  9. Delphi ListView基本用法大全

    //增加项或列(字段) ListView1.Clear; ListView1.Columns.Clear; ListView1.Columns.Add; ListView1.Columns.Add; ...

随机推荐

  1. python-循环(loop)-for循环

    for 循环 for every_letter in 'Hello world': print(every_letter) 输出结果为 把 for 循环所做的事情概括成一句话就是:于...其中的每一个 ...

  2. NYOJ 10 skiing (深搜和动归)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪. 由于滑雪的确非常刺激.但是为了获得速度.滑的区域必须向下倾斜.并且 ...

  3. Team Foundation Server安装指南(转载)

    1.说明 Team Foundation Server(以下简称VSTF)的安装并不是一件轻松的事情,在安装的过程中相信很多人都或多或少碰到一些问题而安装不成功,虽然手头有微软提供的所谓安装手册,也曾 ...

  4. 阿里云ECS网站备案流程

    首先登录阿里云账号-->点击选项卡中的备案专区-->开始备案选项卡-->增加网站 然后是一大堆信息核查,之后填写网站备案信息,这里注意,有个文件审批号的选项可以不填(选择“请选择”) ...

  5. 使用ZBar来读取条形码和二维码的方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.使用ZBar项目.下载地址是: http://zbar.sourceforge.net/iphone/index.html 2.新建一个项目. ...

  6. hdu 1213 (How Many Tables)(简单的并查集,纯模板)

    How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. 如何编写Makefile?

    //swap.c #include<stdio.h> int swap(int *x,int *y) {printf("a=%d b=%d\n",*x,*y); int ...

  8. U盘工作原理(转)

    u盘工作原理 一. U盘基本工作原理 通用串行总线(Universal serial Bus)是一种快速灵活的接口, 当一个USB设备插入主机时,由于USB设备硬件本身的原因,它会使USB总线的数据信 ...

  9. linux 启动jar命令

    进入ECS目录jar 存放目录: 1.执行命令: linux:启动jar nohup java -jar qualityshop-api.jar>log.file 2>&1 &am ...

  10. 小白用advanced installer建安装包

    写这篇文章的目的是由于肯定有人跟我一样非常小白,对安装包的构建又好奇.而我自己呢也要mark一下下,so--- 一.VS安装项目 首先关于安装包的构建,实用VS自带建安装项目的方式.网上有个中文工具叫 ...