示例1(此示例转自ccrun 妖哥):

__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{// 切换ListView的显示风格为详细信息ListView1->ViewStyle = vsReport;// 清除ListView所有列和行的内容ListView1->Columns->Clear();ListView1->Items->Clear();
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{// 添加第一列TListColumn *lc = ListView1->Columns->Add();lc->Caption = "第一列";lc->Width = 120;// 添加第二列lc = ListView1->Columns->Add();lc->Caption = "第二列";lc->Width = 80;// 添加第三列lc = ListView1->Columns->Add();lc->Caption = "第三列";lc->Width = 100;Application->ProcessMessages();// 修改第二列的标题ShowMessage("点击确定后修改第二列的标题");if (ListView1->Columns->Count > 1){lc = ListView1->Columns->Items[1];lc->Caption = "第二列新标题";lc->Width = 120;}// 添加第一行数据TListItem *li = ListView1->Items->Add();li->Caption = "一行一列";li->SubItems->Add("一行二列");li->SubItems->Add("一行三列");// 添加第二行数据li = ListView1->Items->Add();li->Caption = "二行一列";li->SubItems->Add("二行二列");li->SubItems->Add("二行三列");// 添加第三行数据li = ListView1->Items->Add();li->Caption = "二行一列";li->SubItems->Add("二行二列");li->SubItems->Add("二行三列");
    //加Application->ProcessMessages()只是为了让窗口处理一下其他的消息,界面上的显示更新一下而已.在有些情况下,窗口内容变化但界面没有刷新时,可以加这么一句.Application->ProcessMessages();// 修改第三行的数据ShowMessage("点击确定后修改第三行的数据");if (ListView1->Items->Count > 2){li = ListView1->Items->Item[2];li->Caption = "二行一列新内容";li->SubItems->Strings[0] = "二行二列新内容";li->SubItems->Strings[1] = "二行三列新内容";}
}

示例2: 

ListView右键点击图标弹出菜单的用法

将ListView的PopupMenu属性设为MyPopupMenu,这样只要选中ListView点右键即可出现我的MyPopupMenu菜单。

但这种方式,无论右击ListView上的任何位置,都会弹出菜单,要想必须选中某个子项后才能进行菜单事件的话,可以在菜单事件中加入判断,没有选中则返回

if(ListView1->Selected == NULL)
  return;

另一种方式是,将ListView的PopupMenu属性留空,在ListView的OnMouseDown事件中处理

void __fastcall TMainForm::ListView1MouseDown(TObject *Sender, TMouseButton Button,TShiftState Shift, int X, int Y)
{//不是右击或者没有点中则返回,不作反应if(Button != mbRight || NULL==ListView1->GetItemAt(X, Y))return;//只点选图标,不能点文字,可以加以下3行THitTests ht=ListView1->GetHitTestInfoAt(X,Y);if(!ht.Contains(htOnIcon))return;PopupMenuZW->Popup(Mouse->CursorPos.x, Mouse->CursorPos.y);
}

示例3

多个ListView共用一个PopupMenu,菜单事件中要传递被选中的项目信息,如果是数字,可以在点击事件中复制给PopupMenu的Tag,在菜单事件中调用Tag值即可,如果是文字信息,目前想到的是如下方法:

void __fastcall TMainForm::N2Click(TObject *Sender)
{if (PopupMenuZW->PopupComponent->Name=="ListView1"){if(ListView1->Selected == NULL)return;Edit4->Text=ListView1->Selected->Caption;}if (PopupMenuZW->PopupComponent->Name=="ListView2"){if(ListView2->Selected == NULL)return;Edit4->Text=ListView2->Selected->Caption;}if (PopupMenuZW->PopupComponent->Name=="ListView3"){if(ListView3->Selected == NULL)return;Edit4->Text=ListView3->Selected->Caption;}if (PopupMenuZW->PopupComponent->Name=="ListView4"){if(ListView4->Selected == NULL)return;Edit4->Text=ListView4->Selected->Caption;}if (PopupMenuZW->PopupComponent->Name=="ListView5"){if(ListView5->Selected == NULL)return;Edit4->Text=ListView5->Selected->Caption;}}

示例4  

获取ListView中某行某列的值,可以

ListView1->Items->Item[i]->Caption = "第i行第1列的值";
ListView1->Items->Item[i]->SubItems->Strings[0]= "第i行第2列的值";
ListView1->Items->Item[i]->SubItems->Strings[1]= "第i行第3列的值";
ListView1->Items->Item[i]->SubItems->Strings[2]= "第i行第4列的值";  

已知某项的值,修改对应的图标,目前想到的方法是

 for(int i=0;i<=ListView1->Items->Count-1;i++){if(ListView1->Items->Item[i]->Caption=="5排8座")     {ListView1->Items->Item[i]->ImageIndex=1;break;}}

  

其他搜集到的示例:

转自C++Builder 移动开发研究 (92227302) QQ群
让ListView控件失去焦点后仍保持选中状态:void __fastcall TForm1::FormCreate(TObject *Sender)
{ListView1->HideSelection = false; // 失去焦点后仍保持选中状态//suiTreeView1->HideSelection = false; // 失去焦点后仍保持选中状态
}对suiDBMemo控件等同样适用,但ListBox控件没有这样的属性。使用图标://ListView1->LargeImages=ImageList1; // 设置存放大图标的图标列表,当列表处于大图标显示方式时,列表使用这个图标列表中的图标显示ListView1->SmallImages=ImageList1; // 设置存放小图标的图标列表,当列表处于小图标显示方式时,列表使用这个图标列表中的图标显示//ListView1->StateImages=ImageList1; // 状态图标,用不同的的图像来表示节点的不同状态// 如果要在不是当前被选中的节点的左边显示图像,那么应该在编辑框Image Index// 中输入图像的索引号。要禁止显示图像可以把这个节点Image Index设置为缺省值-1。// 如果要在被选中的节点的左边显示图像,应该在编辑框Selected Index中指定图像的索引号,索引号是从0开始的。要禁止显示图像可以把它设置为缺省值-1。// 如果要在节点的左边多显示一个图像,可以在编辑框State Index中输入图像的索引号。这个索引号代表Tree View组件中的StateImages属性所表示的图像列表的索引。要禁止显示图像可以把这个项目设置为缺省值-1。// 注意:Image Index与 Selected Index 使用的是Images指定的ImageList;而State Index使用的是StateImages 指定的ImageList。ListView1->Items->Item[ListView1->Items->Count-1]->ImageIndex=0; // 最后一个节点是使用第一个图标1、常用代码:void __fastcall TForm1::Button2Click(TObject *Sender)
{//Edit1->Text=ListView1->SelCount; // 取得被选中的节点总数//ListView1->Selected->ImageIndex=1; // 改变选中节点图标//if(suiListView1->Items->Count<=0) // 判断是否为空//Edit1->Text=ListView1->Items->Count; // 取得节点总数//ListView2->Items=ListView1->Items; // 在两个ListView控件之间传递结构//ListView1->Items->Item[a] = ListView1->Items->Item[a+1]; // 在两个节点之间传递结构//ListView1->Items->Add()->Caption = Edit1->Text; // 增加新节点//ListView1->Items->Add()->SubItems->Add("str"); // 仅增加子节点//ListView1->RowSelect = true; // 允许整行选中//ListView1->Clear(); // 清空或://ListView1->Items->Clear(); // 清空//Edit1->Text=ListView1->Items->Count; // 取得总行数//Edit1->Text=ListView1->Selected->Index; // 取得选中行的行号或://Edit1->Text=ListView1->Items->IndexOf(ListView1->Selected); // 取得选中行的行号//Edit1->Text=ListView1->Selected->SubItems->Text; // 取得选中节点下所有子节点的文本,不同节点的文本之间用空格分开//ListView1->Selected->Delete(); // 从ListView视图中将选中的条目删除//Memo1->Lines->Add(ListView1->Items->Item[0]->Top); // 指定节点的竖向位置//Memo1->Lines->Add(ListView1->Items->Item[0]->Left); // 指定节点的横向位置//Edit1->Text=ListView1->Items->Item[0]->Caption; // 取得指定节点的文本//Edit1->Text=ListView1->Selected->Caption; // 取得选中节点的文本或://Edit1->Text=ListView1->Items->Item[ListView1->Selected->Index]->Caption; // 取得选中节点的文本//ListView1->Items->Item[0]->Caption = "sdfs"; // 修改第一层指定节点的文本//ListView1->Items->Item[ListView1->Items->Count-1]->SubItems->Add("buffer"); // 在最后一行追加子节点//ListView1->Items->Item[0]->SubItems->Add("buffer"); // 在指定行追加子节点// 本教程由 C++Builder 移动开发研究 (92227302) QQ群原创并群内首发,转载请注明出处,谢谢合作!ListView1->ViewStyle=vsIcon; // 大图标//ListView1->ViewStyle=vsSmallIcon; // 小图标//ListView1->ViewStyle=vsList; // 列表//ListView1->ViewStyle=vsReport; // 详细资料
}3、追加节点:void __fastcall TForm1::Button1Click(TObject *Sender)
{//ListView1->Clear(); // 清空ListView1->Items->Add(); // 增加节点ListView1->Items->Item[ListView1->Items->Count-1]->Caption = "hniuh"; // 给节点命名
}4、当鼠标指针移动到节点上时,改变字体颜色为蓝色:void __fastcall TForm1::FormCreate(TObject *Sender)
{ListView1->HotTrack=true; // 当鼠标指针移动到节点上时,改变字体颜色为蓝色
}或:
void __fastcall TForm1::ListView1CustomDrawItem(TCustomListView *Sender,TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
{ListView1->HotTrack=true; // 当鼠标指针移动到节点上时,改变字体颜色为蓝色
}5、禁止用户通过鼠标直接点击的方法修改节点的文本:void __fastcall TForm1::FormCreate(TObject *Sender)
{ListView1->ReadOnly=true; // 禁止用户直接修改节点的标题
}6、设置指定的行处于选中状态:void __fastcall TForm1::Button2Click(TObject *Sender)
{ListView1->Items->Item[0]->Selected=True; // 设置指定的行处于选中状态,行号从0开始ListView1->SetFocus(); // 获得焦点或://ListView1->Selected = ListView1->Items->Item[0];//ListView1->SetFocus(); // 获得焦点
}7、在控件中增加新列并显示列图标:void __fastcall TForm1::Button2Click(TObject *Sender)
{TListColumn* NewColumn; // 列表列//ListView1->RowSelect = true; // 准许可以整行选中NewColumn = ListView1->Columns->Add(); // 增加一列NewColumn->Caption = "自转周期(天)"; // 列的名称NewColumn->Width = 100; // 列的宽度NewColumn->ImageIndex=1; // 列头图标号//delete NewColumn; // 使用后添加的项目被清除
}8、添加新节点并指定节点图标:void __fastcall TForm1::Button2Click(TObject *Sender)
{//ListView1->Clear(); // 清空TListItem * pList = ListView1->Items->Add();pList->Caption = Edit1->Text;pList->SubItems->Add("str");pList->ImageIndex=1;//delete pList; // 使用后添加的项目被清除
}9、更换选中节点的图标:void __fastcall TForm1::Button1Click(TObject *Sender)
{if(ListView1->SelCount>0) // 如果有节点被选中ListView1->Selected->ImageIndex=1; // 更换选中节点的图标
}10、更换所有节点的图标:void __fastcall TForm1::Button1Click(TObject *Sender)
{for(int i=0;i<=ListView1->Items->Count-1;i++){ListView1->Items->Item[i]->ImageIndex=1;}
}

  

 

转载于:https://www.cnblogs.com/wxfame/p/4844294.html

C++Builder中ListView控件用法和示例总结整理相关推荐

  1. android中ListView控件onItemClick事件中获取listView传递的数据

    http://blog.csdn.net/aben_2005/article/details/6592205 本文转载自:android中ListView控件&&onItemClick ...

  2. vb html listview,VB中listview控件

    控件 listview控件可有4种不同的视图显示方法,跟"资源管理器"里的"查看"方式相似:(1)无图标:(2)小图标:(3)列表:(4)报表式. 使用哪种视图 ...

  3. listview控件Android,Android中ListView控件的简单使用

    文章引自郭霖<第一行代码> ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕 使用LIstView控件 1 在布局文件中引入Li ...

  4. wpf中ListView控件点击列头排序功能实现(超简洁实用)

    .xaml文件中的主要代码 <ListView Name="lvMeasureData" GridViewColumnHeader.Click="Sort_Clic ...

  5. VB.NET中LISTVIEW控件点击列首排序问题

    最近写的程序需要点击LISTVIEW控件的列首排序,搜索了一下网上的文章代码,很少,而且是C#的代码,看了下MSDN,终于搞清楚了VB的写法,MSDN上只有按照字母顺序排序的,于是我加工了一下,可以选 ...

  6. Windows MObile中ListView控件的用法详解

    -前言:ListView在Windows Mobile中的应用非常广泛,也是Windows Mobile中很重要的一个控件,在此俺新手给他做个总结,方便其它新手参考哈! --------------- ...

  7. c++builder中dbgrid控件排序_如何实现APP中各种布局效果?学会这几个控件就够了...

    学习Flutter有一段时间了,也做了一些APP,但是总感觉对控件的使用一知半解,没有系统的概念,所以特意花了几天时间,把所有的控件都研究了一遍,总结出了常用的控件和使用方法, 俗话说:工欲善其事,必 ...

  8. 【2017-04--28】Winform中ListView控件

    ListView 1.先设置列,设置视图属性选择Details. 添加列,修改列名. 2.编辑项(添加行数据) 添加一个ListViewItem对象,该对象的Text对应着是第一列的数据, 在该对象的 ...

  9. 【转】 ASP.NET 3.5中使用新的ListView控件

    ASP.NET中新的ListView控件为显示和CURD数据库操作提供了基于模板的布局,使之成为一项极好的方式,建立以数据为中心的Web应用程序. 当你编写以用户为中心的应用程序时,总需要某种形式的数 ...

最新文章

  1. rpm怎样在win安装mysql_centos7.6安装mysql的正确步骤
  2. 逆序对(树状数组解决)
  3. excel匹配_Excel中的数据匹配和查找
  4. P1576 最小花费
  5. mysqls压力测试怎么用_用 Swagger 测试接口,怎么在请求头中携带 Token?
  6. mysql到pg怎么高效_干货 | Debezium实现Mysql到Elasticsearch高效实时同步(示例代码)
  7. AD服务器不愿意处理该请求
  8. python 数列第几项开始,数值超过1200
  9. mysql 文卷_mysql数据库试卷
  10. C++之函数返回数组
  11. js中的正则表达式(2)
  12. keras实战项目——CIFAR-10 图像分类
  13. 手把手玩转win8开发系列课程(9)
  14. 2021中国研究生数学建模竞赛
  15. 高校科研项目管理系统
  16. 百度api实现实时摄像头人脸识别
  17. 1.2GHz Atom处理器 诺基亚N9配置曝光
  18. python怎么算阶乘_python专家写阶乘 ()用python计算阶乘
  19. 移动安全规范 — 2 -蓝牙安全规范
  20. 基于simulink的无刷直流电动机性能仿真

热门文章

  1. 打印出所有的水仙花数javascript_习题4-6 水仙花数 (20分)
  2. 【spring-session】介绍
  3. springcloud实体类抽离
  4. mysql 不匹配的_mysql – 如何从两个表中获取不匹配的记录
  5. php环境搭建5.6_WIN8.1下搭建PHP5.6环境
  6. 深入理解计算机系统学后感,深入理解计算机系统(读书笔记)
  7. 从零开始学习docker(二十一)service管理
  8. 从零开始学习docker(五)网络的另外两种类型host,none
  9. GitHub 发布重磅更新:你电脑上的 IDE 可以删了?!
  10. 万里挑一!北大AI女神每天必看的几个优质公众号