检测在Delphi的备忘录中输入

Mat*_*sen 1 delphi

嗨,我正在使用Delphi中的备忘录执行命令shell,问题是检测写入的最后一行并读取我需要知道如何检测备忘录上的回车键的命令.

因为我可以在备忘录中检测到回车键?

Del*_*ics 9

OnKeypress事件中,您可以检查某些键并按照您的意愿处理它们.enter键是这些键之一.

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
const
  ENTER = #13;
begin
  case Key of
    ENTER : begin
              // Do something
            end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

默认情况下,TMemoWantReturns属性设置为TRUE.这意味着,除了您可能在代码中实现的对按键的任何响应之外,TMemo仍将接收键事件并在备忘录的内容中添加新行.

如果您不想要这个,那么您可以:

  • 设置WantReturns = FALSE.您仍将获得 Enter键的KeyPress事件,但备忘录不会添加新行作为响应(如果用户按Ctrl + Enter,它们仍然可以添加)

要么

  • 保持WantReturns = TRUE,但为要抑制的任何键事件(即阻止到达备忘录控件)将键设置为值#0.

后一种方法的一个例子可能如下所示:

const
  NO_KEY = #0;
  ENTER  = #13;
begin
  case Key of
    ENTER : begin
              // Do something

              if NOT AddNewLine then
                Key := NO_KEY;
            end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

注意:所述的的OnKeyPress唯一事件可用于关键事件的子集反应,尤其是那些对应于CHAR类型值(尽管这确实包括一些非打印字符,如标签退格键,例如).

如果您想要或需要检测更多范围的非字符键的状态或可靠地处理键组合(如Ctrl + KeyShift + Key),则需要查询这些修饰键的状态.但是,当您响应键事件时,修改键的状态可能已更改,在这种情况下更好的方法是使用备用事件,该事件提供更大范围的键事件,包括Shift的状态键事件本身时的键(和控制键),例如OnKeyDown.