ListView中Items反选无动作解决办法
ListView中Items反选无动作
ListView(带有Checkbox)显示文本文档,CheckBox2控件用于反选操作。
问题1:鼠标选择ListView中某几项,每项前面的Checkbox也checked了。现在点击CheckBox2使其Checked,然后ListView中选中的项退出选中状态,未选中项进入选中状态。代码如下,不知何原因,原来选中的项没有退出选中状态,从而使得所有项前面的checkbox都处于checked状态。
代码如下:
问题2:ListView中每项前面的checkbox被选中后,即checked状态,是不是意味着这一行(项)被选中呢?用代码表达我的意思就是:
这几个问题没有搞明白,请高手指点迷津,非常感谢!!!!
由于级别低,现在只能发最高分为30分的帖子,不过不要紧,结贴时还会加的。
------解决方案--------------------
ListView1 -> Items -> Item[i] -> Checked == true
这样的用法不推荐, 因为是 bool 类型,所以直接 ListView1 -> Items -> Item[i] -> Checked 就行了
另外, 顶楼问题可以这样:
ListView1 -> Items -> Item[i] -> Checked = !ListView1 -> Items -> Item[i] -> Checked ;
------解决方案--------------------
ListView1 -> Items -> Item[i] -> Selected = false; //表listview中某项(行)被选中
和
ListView1 -> Items -> Item[i] -> Checked = false; //表listview中某项前面的checkbox处于checked状态
意义一样吗?
不一样, Checked 只是一个状态标志而已
------解决方案--------------------
在 ListView 的 OnClick 事件处理选中,
OnDblClick 处理去选中状态。
void __fastcall TForm1::ListView1Click(TObject *Sender)
{
if ( ListView1->Selected != NULL )
{
ListView1->Selected->Checked = true;
}
}
//---------------------------------------
void __fastcall TForm1::ListView1DblClick(TObject *Sender)
{
if ( ListView1->Selected != NULL )
{
ListView1->Selected->Checked = false;
}
}
//---------------------------------------
ListView(带有Checkbox)显示文本文档,CheckBox2控件用于反选操作。
问题1:鼠标选择ListView中某几项,每项前面的Checkbox也checked了。现在点击CheckBox2使其Checked,然后ListView中选中的项退出选中状态,未选中项进入选中状态。代码如下,不知何原因,原来选中的项没有退出选中状态,从而使得所有项前面的checkbox都处于checked状态。
代码如下:
- C/C++ code
for(int i = 0; i < ListView1 -> Items -> Count; i++) { ListView1 -> MultiSelect = true; if(CheckBox2 -> Checked == true) { if(ListView1 -> Items -> Item[i] -> Checked == true) { ListView1 -> Items -> Item[i] -> Selected = false; ListView1 -> Items -> Item[i] -> Checked = false; } else ListView1 -> Items -> Item[i] -> Selected = true; ListView1 -> Items -> Item[i] -> Checked = true; } }
问题2:ListView中每项前面的checkbox被选中后,即checked状态,是不是意味着这一行(项)被选中呢?用代码表达我的意思就是:
- C/C++ code
ListView1 -> Items -> Item[i] -> Selected = false; //表listview中某项(行)被选中 和 ListView1 -> Items -> Item[i] -> Checked = false; //表listview中某项前面的checkbox处于checked状态 意义一样吗?
这几个问题没有搞明白,请高手指点迷津,非常感谢!!!!
由于级别低,现在只能发最高分为30分的帖子,不过不要紧,结贴时还会加的。
------解决方案--------------------
ListView1 -> Items -> Item[i] -> Checked == true
这样的用法不推荐, 因为是 bool 类型,所以直接 ListView1 -> Items -> Item[i] -> Checked 就行了
另外, 顶楼问题可以这样:
ListView1 -> Items -> Item[i] -> Checked = !ListView1 -> Items -> Item[i] -> Checked ;
------解决方案--------------------
ListView1 -> Items -> Item[i] -> Selected = false; //表listview中某项(行)被选中
和
ListView1 -> Items -> Item[i] -> Checked = false; //表listview中某项前面的checkbox处于checked状态
意义一样吗?
不一样, Checked 只是一个状态标志而已
------解决方案--------------------
在 ListView 的 OnClick 事件处理选中,
OnDblClick 处理去选中状态。
void __fastcall TForm1::ListView1Click(TObject *Sender)
{
if ( ListView1->Selected != NULL )
{
ListView1->Selected->Checked = true;
}
}
//---------------------------------------
void __fastcall TForm1::ListView1DblClick(TObject *Sender)
{
if ( ListView1->Selected != NULL )
{
ListView1->Selected->Checked = false;
}
}
//---------------------------------------