【发布时间】:2011-12-26 14:06:16
【问题描述】:
我想将 TListView (vsIcon) 用作一种选项卡 - 这样只能像选项卡一样选择一个项目。只选择一项没有问题(禁用多选属性)。问题是单击列表视图中图标和文本之间的空白点时取消选择项目。
这是我目前尝试过的:
void __fastcall TForm::ListViewChanging(TObject *Sender, TListItem *Item, TItemChange Change, bool &AllowChange)
{
if (Change == ctState)
{
TPoint CursorRel = ListView->ScreenToClient(Mouse->CursorPos);
AllowChange = (ListView->GetItemAt(CursorRel.x, CursorRel.y) != NULL);
StatusBar->SimpleText = (AllowChange)? "YES" : "NO";
}
}
上述方法有效,但存在问题。当鼠标单击空白区域时,它会取消选择该项目,并且键盘向上/向下箭头不再起作用,尽管该项目看起来仍处于选中状态。如果我忽略键盘,对于鼠标选择它可以正常工作,它会忽略在状态栏中显示“NO”消息的空白区域的点击。
任何想法如何解决此问题,使其适用于所有可能的选择方法(键盘、鼠标(任何其他?))。
【问题讨论】:
标签: delphi c++builder tlistview