转自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:

istView1CustomDrawItem(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
->ImageIndex=1;
}
}