Я хотел бы использовать TListView (vsIcon) в качестве вкладок - так что только один элемент может быть выбран так же, как вкладки. Выбор только одного элемента не является проблемой (отключение свойства Multiselect). Проблема заключается в отмене выбора элементов при нажатии на пустые места между значками и текстом в представлении списка.
Вот что я попробовал:
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";
}
}
Выше работает, но есть проблема. При щелчке мышью по пустой области снимается выделение элемента, и стрелка вверх / вниз клавиатуры больше не работает, хотя элемент по-прежнему выглядит выделенным. Если я игнорирую клавиатуру, то при выборе мыши она работает нормально и игнорирует щелчки в пустых областях с сообщением «НЕТ» в строке состояния.
Есть идеи, как это исправить, чтобы оно работало со всеми возможными методами выбора (клавиатура, мышь (любая другая?)).