我正在使用Delphi中的备忘录执行命令shell,问题是检测写入的最后一行并读取我需要知道如何检测备忘录上的回车键的命令。
因为我可以在备忘录中检测到回车键吗?
答案 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 仍将接收键事件并在备忘录的内容中添加新行。
如果您不想这样,那么您可以:
OR
后一种方法的一个例子可能如下所示:
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