delphi -----TListView的用法
层次关系:
TListView:
->Columns:
->Items : -->TListItems:
-->Clear:
-->BeginUpdate:
-->Add: --->TListItem: ---->Caption:
----> SubItems:-->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的用法的更多相关文章
- (转载)Delphi TStringList的用法
Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...
- Delphi TStringList的用法
Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...
- Delphi Inputbox,InputQuery用法
Delphi :InputQuery,InputBox用法及区别 function InputQuery(const ACaption, APrompt: string; var Value: str ...
- Delphi XE4 TStringHelper用法详解
原文地址:Delphi XE4 TStringHelper用法详解作者:天下为公 Delphi XE4的TStringHelper,对操作字符串进一步带来更多的方法,估计XE5还能继续用到. Syst ...
- delphi FillChar的用法(转)
delphi FillChar的用法(转) (2012-12-24 15:12:06) 转载▼ 标签: it 分类: delphi7 FillChar的用法(delphi) Fillchar是Turb ...
- Delphi常用关键字用法详解
本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, ...
- Delphi中Messagedlg用法
if MessageDlg('Welcome to my Delphi application. Exit now?', mtConfirmation, [mbYes, mbNo], 0) = mrY ...
- Delphi GDI+基本用法总结
GDI+以前只是听说过,还没怎么用过,这段时间用了用,觉得挺好用的.在这里总结一下.留个备忘. GDI+(Graphics Device Interface plus)是Windows XP中的一个子 ...
- Delphi ListView基本用法大全
//增加项或列(字段) ListView1.Clear; ListView1.Columns.Clear; ListView1.Columns.Add; ListView1.Columns.Add; ...
随机推荐
- Shell编程二
告警系统需求分析 1.(虽然之前我们学习了zabbix,但有时候也不能满足我们的需求,比如比较冷门的监控项目需要写自定义脚本,或者服务器网络有问题,没有办法将客户端的数据发送到服务端.) 程序架构: ...
- Android图片二级缓存
点击下载源代码 想起刚開始写代码的时候,领导叫我写一个头像下载的方法,当时屁颠屁颠就写了一个图片下载的,每次都要去网络上请求,最后直接被pass掉了 当时的思路是这种 后来渐渐地就知道了有二级缓存这东 ...
- Struts1小案例问题教训总结(含中文乱码问题及解决)
1. 提交form后页面空白,没有任何显示,Debug发现form的validate()以及action的execute()根本没有被调用. 原因:validate()和execute()有2个互为o ...
- 2种实现CXF方法例子
转载自:http://www.blogjava.net/sai5201314vicky/articles/353078.html 大家好,今天我要介绍的现实webservice的一种技术——CXF 由 ...
- linux进程D状态_转
Linux进程状态:S (TASK_INTERRUPTIBLE),可中断的睡眠状态. 处于这个状态的进程因为等待某某事件的发生(比如等待socket连接.等待信号量),而被挂起.这些进程的task_s ...
- 在一个验证form的实例中扩展jQuery.validate
需求很简单,直接上图: 要验证表单上的3个input输入框的格式,要求如下: 主关键词情形1: 浙江 杭州 温州 主关键词情形2: 浙江|江苏|上海,但是不能用 空格和 | 混合用,也就是情形1和2不 ...
- 今天升级netbean出错
出现:无法初始化 UI netbean 由于ubuntun装的是open jdk 直接删除open jdk就可以 sudo apt-get autoremove open-jdk*
- spoj7001 Visible Lattice Points 莫比乌斯反演+三维空间互质对数
/** 题目:Visible Lattice Points 链接:https://vjudge.net/contest/178455#problem/A 题意:一个n*n*n大小的三维空间.一侧为(0 ...
- hdu6000 Wash 巧妙地贪心
/** 题目:hdu6000 Wash 巧妙地贪心 链接:https://vjudge.net/contest/173364#problem/B 转自:http://blog.csdn.net/ove ...
- Java反射小结
一.什么是反射? 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法 ...