读书人

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

发布时间: 2012-02-05 12:07:15 作者: rapoo

判断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 ) ;
}

读书人网 >C++ Builder

热点推荐