如何在单击项目时禁用TListView编辑?

时间:2014-07-06 19:56:57

标签: delphi edit delphi-6 tlistview

我想在单击TListView所选项目时禁用进入编辑模式但不完全禁用它(设置属性ReadOnly = True)。我想仍然可以通过其他方法编辑它。有可能吗?

1 个答案:

答案 0 :(得分:3)

我没有看到任何简单的方法来准确检测LVN_BEGINLABELEDIT通知是如何产生的。而LVN_BEGINLABELEDIT通知会触发列表视图的就地编辑。

所以,我认为你可能需要提出一个有点hacky的解决方案。在表单中添加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;