У меня есть TListview
, где я хочу использовать флажки, чтобы указать, произошло ли событие с элементом в списке.
Я могу прочитать и установить статус флажка, но я действительно хочу отключить возможность пользователя изменять статус с помощью щелчка мыши.
Для TCheckList
я могу установить обратное состояние checked
с помощью OnClickCheck.
То же самое не работает для TListview
. В этот момент я вижу, что флажок установлен в OnMouseDown
, но не могу отключить прохождение клика.
procedure TMF.ListViewMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
MyHitTest : THitTests;
begin
MyHitTest := (Sender as TListView).GetHitTestInfoAt(X,Y);
if htOnStateIcon in MyHitTest then
(Sender as TListView).OnMouseDown := nil;
end;
Предложения?
Rowselect
), просто состояние флажков должно быть под моим контролем - person Dan Kelly   schedule 28.10.2013ViewStyle
вашего списка? Кроме того, есть событияOnChange
иOnChanging
, которые выглядят именно так, как вы хотите. - person Günther the Beautiful   schedule 28.10.2013TListView
сCheckBoxes=True
иViewStyle=vsReport
. Вы хотите иметь возможность устанавливать флажки по коду, но список должен оставаться доступным пользователю только для чтения. Верно? Вы можете использовать событиеOnChanging
илиOnChange
, чтобы вернуть состояниеChecked
TListItems
к тому, каким вы хотите его видеть. Таким образом, вы даже можете сделать так, чтобы только определенные флажки отображались только для чтения. - person Günther the Beautiful   schedule 29.10.2013OnChange
заключается в том, что он вызывается, даже если вы не меняете элемент (Delphi XE). Пример, когда пользователь использует клавиши со стрелками на клавиатуре для перехода от одного элемента к другому. Не уверен, что это жесткая ошибка. - person EMBarbosa   schedule 29.10.2013