Я хочу отключить вход в режим редактирования, когда я нажимаю на выбранный элемент TListView, но не отключаю его полностью (устанавливая свойство ReadOnly=True). Я хочу по-прежнему иметь возможность редактировать его другими способами. Это возможно ?
Как отключить редактирование TListView при нажатии элемента?
Ответы (1)
Я не вижу простого способа определить, как именно возникает уведомление LVN_BEGINLABELEDIT
. И это уведомление LVN_BEGINLABELEDIT
запускает редактирование представления списка на месте.
Итак, я думаю, вам, вероятно, придется придумать немного хакерское решение. Добавьте в форму поле Boolean
, например, с именем FCanEditListView
. Затем, где бы вы ни запускали режим редактирования, установите этот флаг True
непосредственно перед запуском режима редактирования, а затем верните его на False
после этого:
procedure TForm1.Button1Click(Sender: TObject);
var
Item: TListItem;
begin
Item := ListView1.Selected;
if Assigned(Item) then
begin
FCanEditListView := True;
Item.EditCaption;
FCanEditListView := False;
end;
end;
Затем добавьте обработчик события OnEditing
представления списка, чтобы переключить поведение следующим образом:
procedure TForm1.ListView1Editing(Sender: TObject; Item: TListItem;
var AllowEdit: Boolean);
begin
AllowEdit := FCanEditListView;
end;
person
David Heffernan
schedule
06.07.2014