嗨,我正在使用Delphi中的备忘录编写命令shell,问题是要检测编写的最后一行,并读取我需要知道如何检测备忘录上的enter键的命令。
因为我能检测到备忘录上的回车键?
发布于 2015-05-25 22:37:43
在TMemo控件中检测enter键很容易。只需添加一个OnKeyPress事件:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
// Do something
end;
end;发布于 2015-05-25 23:20:11
在OnKeypress事件中,您可以检查某些密钥并根据自己的意愿处理它们。enter键是这些键之一。
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还将接收密钥事件,并在备忘录的内容中添加新行。
如果您不想这样做,那么您可以:
或
后一种方法的示例可能如下所示:
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+Key ),则需要查询这些修饰符键的状态。但是,在响应键事件时,修饰符键的状态可能已经更改,在这种情况下,更好的方法是使用另一个事件,它提供更多的键事件范围,包括键事件本身时的Shift键(和控制键)的状态,例如OnKeyDown。
发布于 2015-05-25 22:42:49
您可以使用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;https://stackoverflow.com/questions/30446848
复制相似问题