Use the event Onchanging
and set AllowChange
to False
.
procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem;
Change: TItemChange; var AllowChange: Boolean);
begin
AllowChange := False;
end;
Update: OP want the user to be able to select the item. So, maybe, a little hack using OnItemChecked
event can do.
procedure TForm1.ListView1ItemChecked(Sender: TObject; Item: TListItem);
begin
if TComponent(Sender).Tag = 0 then
begin
TComponent(Sender).Tag := 1;
Item.Checked := not Item.Checked;
TComponent(Sender).Tag := 0;
end;
end;
Update2: The problem using this trick is that you must disable it before you change any item status. For example:
Procedure LoadListViewItems;
begin
//Let's permit modification in ListView Items.
ListView1.OnItemChecked := nil;
try
//put Load Items code Here!
finally
//User cannot change Items statuses
ListView1.OnItemChecked := ListView1ItemChecked;
end;
end;