检测在Delphi的备忘录中输入

时间:2015-05-25 22:31:32

标签: delphi

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

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

3 个答案:

答案 0 :(得分:9)

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

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

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

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

  • 设置 WantReturns = FALSE 。你仍然会得到 KeyPress 输入键的事件,但备忘录不会添加新行 响应(如果用户按 Ctrl +,仍然可以添加它们 输入

OR

  • 保持 WantReturns = TRUE ,但将Key设置为任意键的值#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;

注意: OnKeyPress 事件仅允许您响应键事件的子集,特别是那些与 CHAR 类型值对应的事件(虽然这确实包括一些非打印字符,例如 Tab Backspace ,但是。)

如果您想要或需要检测更广泛的非字符键的状态或可靠地处理键组合,例如 Ctrl + Key Shift +键那么你需要查询那些修饰键的状态。但是,当您响应键事件时,修饰键的状态可能已更改,在这种情况下更好的方法是使用备用事件,该事件提供更大范围的键事件,包括<的状态密钥事件本身时的em> Shift 键(以及 Control 键),例如 OnKeyDown

答案 1 :(得分:3)

您可以使用OnKeyDown事件,例如:

procedure TForm.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_Return then
  begin
    // Your code here ...

    // set Key to 0 if you do not want the key
    // to be default-processed by the control...
    Key := 0 ;
  end;
end;

答案 2 :(得分:2)

if(@post) .... else .... end 控件中检测回车键很简单。只需添加TMemo事件:

OnKeyPress