【Delphi 基础知识 28】ListView控件的详细使用

文章目录

    • 控件设置
    • 增加数据
    • 删除选中的行
    • 按标题删除
    • 读取某行某列内容
    • 修改某行某列内容
    • 清空内容
    • 设置焦点
    • 上下移动条目
    • 读出选中行信息
    • 点击正反排序
    • 每行item显示不一样的颜色

控件设置

  • ViewStyle 设为vsReport
  • ReadOnly 设为True
  • GridLines 设为True
  • RowSelect 设为True
    在这里插入图片描述

增加数据

vari : integer;
begin//增加i := ListView1.Items.Count;with ListView1.Items.Add dobeginCaption:= IntToStr(i);SubItems.Add('第 '+IntToStr(i)+' 行');SubItems.Add('第三列内容');end;
end;

删除选中的行

vari : integer;
beginfor i:=ListView1.Items.Count-1 downto 0 do  //直接用to会报错if ListView1.Items[i].Selected then //i=ListView1.Selected.indexbeginListView1.Items.Delete(i); //删除当前选中行end;
end;

按标题删除

vari : integer;
begin//按标题删除for i:=ListView1.Items.Count-1 downto 0 Doif ListView1.Items[i].Caption = Edit1.Text thenbeginListView1.Items.Item[i].Delete(); //删除当前选中行end;
end;

读取某行某列内容

beginEdit1.Text := listview1.Items[0].Caption; //读第i行第1列Edit2.Text := listview1.Items[0].SubItems.strings[0]; //读第i行第2列Edit3.Text := listview1.Items[0].SubItems.strings[1]; //读第i行第3列
end;

修改某行某列内容

begin//必须原先存在数据,才能去修改,可以用Add('')新建数据初始化listview1.Items[0].Caption:= Edit1.Text;listview1.Items[0].SubItems.strings[0]:= Edit2.Text;listview1.Items[0].SubItems.strings[1]:= Edit3.Text;
end;

清空内容

beginListView1.Clear;
end;

设置焦点

//类似手动选中某一行
beginListView1.SetFocus;ListView1.ItemIndex:=3;
end;

上下移动条目

procedure ListViewItemMoveUpDown(lv: TListView; Item: TListItem; MoveUp, SetFocus: Boolean);
varDestItem: TListItem;
beginif (Item = nil) or ((Item.Index - 1 < 0) and MoveUp) or ((Item.Index + 1 >= lv.Items.Count) and (not MoveUp)) thenExit;lv.Items.BeginUpdate;tryif MoveUp thenDestItem := lv.Items.Insert(Item.Index - 1)elseDestItem := lv.Items.Insert(Item.Index + 2);DestItem.Assign(Item);lv.Selected := DestItem;Item.Free;finallylv.Items.EndUpdate;end;if SetFocus thenlv.SetFocus;DestItem.MakeVisible(False);
end;procedure TForm3.Button8Click(Sender: TObject);
beginListViewItemMoveUpDown(ListView1, ListView1.Selected, True, True);//上移
end;procedure TForm3.Button9Click(Sender: TObject);
beginListViewItemMoveUpDown(ListView1, ListView1.Selected, False, True);//下移
end;

读出选中行信息

vari: integer;
beginif ListView1.Selected <> nil thenbeginmemo1.Lines.Add('Caption:' + ListView1.Selected.Caption);for I := 0 to ListView1.Selected.SubItems.Count-1 dobeginmemo1.Lines.Add('SubItems:' + ListView1.Selected.SubItems[i]);end;end;
end;

点击正反排序

m_bSort: boolean = false; // 控制正反排序的变量function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
vartxt1, txt2: string;Num1, Num2: Integer;
beginif ParamSort <> 0 then  //点击subItemsbegintrytxt1 := Item1.SubItems.strings[ParamSort - 1];txt2 := Item2.SubItems.strings[ParamSort - 1];if m_bSort thenbeginResult := CompareText(txt1, txt2);end else beginResult := -CompareText(txt1, txt2);end;exceptend;endelse   //点击captionbegintxt1:= Item1.Caption;txt2:= Item2.Caption;// 将字符串转换为数字Num1 := StrToIntDef(txt1, MaxInt);Num2 := StrToIntDef(txt2, MaxInt);// 进行数字比较Result := Num1 - Num2;//如果都不是数字安装默认排序法排序if (Num1 = MaxInt) and (Num2 = MaxInt) thenResult := AnsiCompareText(txt1, txt2);if m_bSort thenbeginResult:= -Result;endend;
end;procedure TForm3.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
beginListView1.CustomSort(@CustomSortProc, Column.Index);m_bSort := not m_bSort;
end;

每行item显示不一样的颜色

添加AdvancedCustomDrawItem事件

procedure TForm3.ListView1AdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem;State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
beginif Odd(Item.Caption.ToInteger)  thenbeginSender.Canvas.Font.Color := clWindowText;Sender.Canvas.Font.Name := '宋体';Sender.Canvas.Font.Size := 12;Sender.Canvas.Brush.Color := $d0d0f2;endelsebeginSender.Canvas.Font.Color := clWindowText;Sender.Canvas.Font.Name := '宋体';Sender.Canvas.Font.Size := 12;Sender.Canvas.Brush.Color := $e6c8c8;end
end;

最后上个Demo合照,点击下载Demo源码
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/251896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud + Nacos环境下抽取Feign独立模块并支持MultipartFile

文章目录 一、前提条件和背景1. 前提2. 背景 二、Feign模块1. 依赖引入2. application.yaml配置3. 扩展支持MultipartFile4. 将media-api注册到feign 三、Media模块四、Content模块1. 引入依赖2. 启用FeignClient3. 测试 五、需要澄清的几点 一、前提条件和背景 1. 前提 已经…

sql相关子查询

1.什么是相关子查询 相关子查询是一个嵌套在外部查询中的查询&#xff0c;它使用了外部查询的某些值。每当外部查询处理一行数据时&#xff0c;相关子查询就会针对那行数据执行一次&#xff0c;因此它的结果可以依赖于外部查询中正在处理的行。 2.为什么要使用相关子…

解决hive表新增的字段查询为空null问题

Hive分区表新增字段&#xff0c;查询时数据为NULL的解决方案 由于业务拓展&#xff0c;需要往hive分区表新增新的字段&#xff0c;hive版本为2点多。 于是利用 alter table table_name add columns (col_name string )新增字段&#xff0c;然后向已存在分区中插入数据&#x…

JAVASE进阶:Collection高级(2)——源码剖析ArrayList、LinkedList、迭代器

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;JAVASE进阶&#xff1a;Collection高级&#xff08;1&#xff09;——源码分析contains方法、lambda遍历集合 &#x1f4da;订阅…

2024年2月更新阿里云服务器租用价格表,最新报价

2024年2月阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核…

mysql:事务的特性ACID、并发事务(脏读、不可重复读、幻读、如何解决、隔离级别)、undo log和redo log的区别、相关面试题和答案

事务是一组操作的集合&#xff0c;它会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 事务的特性&#xff08;ACID&#xff09; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务是不可分割的…

C#实现坐标系转换

已知坐标系的向量线段AB&#xff0c;旋转指定角度后平移到达坐标AB 获取旋转角度以及新的其他坐标转换。 新建窗体应用程序CoordinateTransDemo&#xff0c;将默认的Form1重命名为FormCoordinateTrans&#xff0c;窗体设计如图&#xff1a; 窗体设计代码如下&#xff1a; 部分…

群晖NAS开启FTP服务结合内网穿透实现公网远程访问本地服务

⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 文章目录 ⛳️ 推荐1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP…

C# wpf 字体图标预览,html字符与unicode转换

在进行wpf 开发工作过程中遇到字体图标无法预览的问题&#xff0c;特此记录。 1、把需要预览的字体文件上传到网站上进行转换 Create Your Own font-face Kits Font Squirrel2、下载文件后进行解压。 3、找到 Glyph Chart 查看字体html字符编码4、在wpf中直接使用即可 <…

削峰有高招!评价QPS降低85%的背后逻辑-京东零售技术实践

一、背景 京东APP商品详情页展示的评价数据通过单独请求评价接口获取&#xff0c;与商详模块流量近乎1:1&#xff0c;需要共同应对秒杀等海量流量的冲击&#xff0c;存在突发流量风险。经过对用户操作行为和评价埋点信息分析&#xff0c;评价调用与商详流量解耦可行&#xff0…

自动驾驶IPO第一股及商业化行业标杆 Mobileye

一、Mobileye 简介 Mobileye 是全球领先的自动驾驶技术公司&#xff0c;成立于 1999 年&#xff0c;总部位于以色列耶路撒冷。公司专注于开发视觉感知技术和辅助驾驶系统 (ADAS)&#xff0c;并在自动驾驶领域处于领先地位。Mobileye 是高级驾驶辅助系统&#xff08;ADAS&#…

Mac利用brew安装mysql并设置初始密码

前言 之前一直是在windows上开发后段程序&#xff0c;所以只在windows上装mysql。(我记得linux只需要适应yum之类的命令即可) 安装mysql brew install mysql等它装完就好啦 开启mysql mysql.server start顺带一提&#xff0c;关闭命令是 mysql.server stop设置初始密码 …

[opencvsharp]C#基于Fast算法实现角点检测

角点检测算法有很多&#xff0c;比如Harris角点检测、Shi-Tomas算法、sift算法、SURF算法、ORB算法、BRIEF算法、Fast算法等&#xff0c;今天我们使用C#的opencvsharp库实现Fast角点检测 【算法介绍】 fast算法 Fast(全称Features from accelerated segment test)是一种用于角…

WordPress主题YIA如何将首页的置顶小工具改为站长推荐小工具?

YIA主题有“置顶推荐”小工具&#xff0c;首页文章列表页有置顶功能&#xff0c;可在YIA主题设置 >> 列表 >> 首页-最新发布 >> 显示置顶文章中开启或关闭。如果将“置顶推荐”小工具添加到“首页顶栏”&#xff0c;同时也开启首页最新发布的“显示置顶文章”…

【产业实践】使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通

使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通 效果图 背景介绍 当谈到目标检测算法时,YOLO(You Only Look Once)系列算法是一个备受关注的领域。YOLO通过将目标检测任务转化为一个回归问题,实现了快速且准确的目标检测。以下是YOLO的基…

【JavaScript + CSS】随机生成十六进制颜色

效果图 实现 <template><div class"year_area"><div class"year_list"><el-row :span"24"><div :class"showAll"><el-col :span"5" v-for"(item, index) in defaulList" :key&…

Office恢复旧UI|Office UI问题|Word UI|小喇叭找不到

Office恢复旧UI&#xff5c;Office UI问题&#xff5c;Word UI&#xff5c;小喇叭找不到 问题描述&#xff1a;Office新版本默认新UI&#xff0c;主界面没有小喇叭可以切换到旧UI. 解决方案&#xff1a; 以下述内容新建.txt&#xff0c;保存并改后缀为.reg&#xff0c;双击打开…

redis下载与安装教程(centos下)

文章目录 一&#xff0c;redis下载1.1上传到linux服务器上 二&#xff0c;redis安装2.1 安装依赖2.2 解压包2.3 编译并安装2.4 指定配置启动2.5 设置redis开机自启 一&#xff0c;redis下载 官网&#xff1a; https://redis.io1.1上传到linux服务器上 我用filezila上传到/us…

使用PHPStudy搭建本地web网站并实现任意浏览器公网访问

文章目录 [toc]使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2…

失物招领|基于Springboot的校园失物招领系统设计与实现(源码+数据库+文档)

校园失物招领系统目录 目录 基于Springboot的校园失物招领系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、 管理员功能实现 (1) 失物招领管理 (2) 寻物启事管理 (3) 公告管理 (4) 公告类型管理 2、用户功能实现 (1) 失物招领 (2) 寻物启事 (3) 公告 …