diff --git a/lcl/include/customlistview.inc b/lcl/include/customlistview.inc index 0da1083fca..f5ab43d9c4 100644 --- a/lcl/include/customlistview.inc +++ b/lcl/include/customlistview.inc @@ -1193,10 +1193,20 @@ procedure TCustomListView.SetItemIndex(const AValue: Integer); begin if (AValue < -1) or (AValue >= Items.Count) then raise Exception.CreateFmt(rsListIndexExceedsBounds,[AValue]); + + if OwnerData then + FSelectedIdx := AValue; if AValue = -1 then - Selected := nil - else - Selected := Items.Item[AValue]; + begin + Selected := nil; + end else + begin + // trigger ws selection update, it'll update Selected too + if OwnerData then + Items.Item[AValue].Selected := True + else + Selected := Items.Item[AValue]; + end; end; {------------------------------------------------------------------------------