博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在listview中的某一列添加按钮
阅读量:5914 次
发布时间:2019-06-19

本文共 2011 字,大约阅读时间需要 6 分钟。

1.先定义结构:

type
  PItemCtrl = ^TItemCtrl;
  TItemCtrl = record
  viewCheckBox: TCheckBox;
  markCheckBox: TCheckBox;
  guidCheckBox: TCheckBox;
 end; 
2.在listview的CustomDrawSubItem事件中写如下代码;
var
  Rect: TRect;
  P: PItemCtrl;
begin
  if SubItem in [1,2,3] then
  begin
  DefaultDraw:= False; // 不显示默认的文本.
  Rect:= Item.DisplayRect(drBounds); // 获取Item显示的区域.
  if Item.Data = nil then // 如果为空则创建CheckBox及Button.
  begin
  new(P); // 创建一个指针用于存储CheckBox及Button.
  { 创建并显示CheckBox }
  P.viewCheckBox:= TCheckBox.Create(ListView1);
  P.viewCheckBox.Parent:= ListView1;
  P.viewCheckBox.Caption:= '';
  P.viewCheckBox.Width:= 20;
  P.viewCheckBox.Height:= 20;
  P.viewCheckBox.Left:= Rect.Right - ListView1.Columns[2].Width
  - ListView1.Columns[3].Width
  - ((ListView1.Columns[1].Width + P.viewCheckBox.Width) div 2);
  P.viewCheckBox.Top:= Rect.Top;
  P.viewCheckBox.Visible:= True;
  // showmessage(inttostr(SubItem));
  { SubItems[2 -1].Caption为0和1,直接转换为Boolean型并给CheckBox赋值. }
  P.CheckBox.Checked:= StrToBool(Item.SubItems[SubItem-1]);
  //创建并显示Button
  {P.Button:= TRadioButton.Create(ListView1);
  P.Button.Parent:= ListView1;
  P.Button.Caption:= '...';
  P.Button.Width:= 20;
  P.Button.Height:= 20;
  P.Button.Left:= Rect.Right - ((ListView1.Columns[3].Width
  + P.Button.Width) div 2);
  P.Button.Top:= Rect.Top;
  P.Button.Visible:= True;}
  P.markCheckBox:= TCheckBox.Create(ListView1);
  P.markCheckBox.Parent:= ListView1;
  P.markCheckBox.Caption:= '';
  P.markCheckBox.Width:= 20;
  P.markCheckBox.Height:= 20;
  P.markCheckBox.Left:= Rect.Right - ListView1.Columns[3].Width
  - ((ListView1.Columns[2].Width + P.markCheckBox.Width) div 2);
  P.markCheckBox.Top:= Rect.Top;
  P.markCheckBox.Visible:= True;
 
  P.guidCheckBox:= TCheckBox.Create(ListView1);
  P.guidCheckBox.Parent:= ListView1;
  P.guidCheckBox.Caption:= '';
  P.guidCheckBox.Width:= 20;
  P.guidCheckBox.Height:= 20;
  P.guidCheckBox.Left:= Rect.Right
  - ((ListView1.Columns[3].Width + P.guidCheckBox.Width) div 2);
  P.guidCheckBox.Top:= Rect.Top;
  P.guidCheckBox.Visible:= True;
  Item.Data:= P; // 将CheckBox及Button的结构指针保存于Item.Data属性.
  end;
  end;
end;

转载地址:http://mygpx.baihongyu.com/

你可能感兴趣的文章
【推荐】关于JS中的constructor与prototype【转】
查看>>
Eclipse下启动tomcat报错:/bin/bootstrap.jar which is referenced by the classpath, does not exist....
查看>>
oracle创建表之前判断表是否存在,如果存在则删除已有表
查看>>
六: 表单标签(2)
查看>>
计算机领域世界顶尖学术期刊与会议论文
查看>>
DTD Tutorial
查看>>
学习linux下的c/c++编程
查看>>
Tomcat 配置
查看>>
Android Fragment 真正的完全解析(下)
查看>>
指针复杂声明
查看>>
为什么要用 C# 来作为您的首选编程语言
查看>>
ediplus注册码在线生成
查看>>
正则表达式和re模块
查看>>
Python 基础学习之序列及列表操作小结
查看>>
PyCharm的搜索/替换快捷键使用教学
查看>>
代码上线流程以及版本发布小结
查看>>
Idea 使用教程
查看>>
JavaScript基础总结
查看>>
Architecture Components
查看>>
获取Xml指定节点的值
查看>>