#delphi #edit #delphi-6 #tlistview
#delphi #Редактировать #delphi-6 #tlistview
Вопрос:
Я хочу отключить вход в режим редактирования при нажатии на выбранный элемент TListView, но не отключать его полностью (установив свойство только для чтения = True). Я хочу по-прежнему иметь возможность редактировать его другими методами. Это возможно?
Ответ №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;