如何在编辑TTreeView节点时停止对话框默认和取消行为

Jam*_*mie 5 delphi

我有一个带有TTreeView控件的对话框,还有一个OK和Cancel按钮.按钮的Default和Canel属性分别设置为true,并且已正确设置ModalResult.

用户可以使用内置控件的功能编辑树节点的标题.

如果用户在编辑树节点时遇到转义或进入,则对话框将消失,而不是仅取消或接受对节点标题的编辑.

例如,在逃避的情况下,我希望一旦命中转换来修改标题的编辑,然后再次触发转义以取消对话框.

处理这种情况的最佳方法是什么?

TMemo有WantReturns属性来处理这个问题,但我看不到TTreeView的任何内容.

Wae*_*oul 3

您应该从按钮中删除“默认”和“取消”属性,而应该在表单 keyDown 上按下按键,然后执行“确定”或“取消”。

编辑:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Key = VK_ESCAPE)and not (TreeView1.IsEditing) then
  CancelClick(sender)
else
  if (Key = VK_RETURN) and not (TreeView1.IsEditing) then
    OkClick(sender);
end;
Run Code Online (Sandbox Code Playgroud)

您还需要将 keypreview 设置为 true。