首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

判断ListView1选择了哪一列,该如何解决

2012-02-05 
判断ListView1选择了哪一列TListItem*pItempItemListView1- Selectedintii?想用i得到选定了ListView

判断ListView1选择了哪一列
TListItem     *pItem;    
pItem     =     ListView1-> Selected;    
int     i;    
i=?    
想用i得到选定了ListView1选择了哪一列该怎么做?

[解决办法]
int i = ListView1-> ItemIndex;
[解决办法]
楼主是想判断选中的行中用户选择了哪一列吧?
这个没有直接的方法(至少我知道的就没有这个方法)

但可以用另外的方式去实现:
先取得当前鼠标的位置,然后使用然后使用ListView的ScreenToClient把当前鼠标位置从屏幕的位置转换成相对ListView的位置
接着根据得到的位置的X方向值判断当前是在哪一列中,方法是,取ListView的每个Column的Width,先判断第一个Column的Width,判断一下X方向的值是否大于这个Width,大于的话,就说明点击的在后面的列,接着把第二列的Width加上第一列的Width,得到的值再与X方向值判断,如果小于这两列的Width的和,就说点击了第二列,否则就继续类推。。。
[解决办法]
这样就搞定了,是lv的一个事件
void __fastcall TForm1::lv1ColumnClick(TObject *Sender,
TListColumn *Column)
{
ShowMessage(Column-> Index ) ;
ShowMessage(Column-> Caption ) ;
}

热点排行