自动允许Ctrl + A在TMemo中选择全部?

Jer*_*dge 11 delphi keyboard-shortcuts delphi-7 tmemo

在Delphi 7的TMemo控件中,尝试使用键组合Ctrl + A来选择all并不做任何事情(不选择全部).所以我做了这个程序:

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  C: String;
begin
  if ssCtrl in Shift then begin
    C:= LowerCase(Char(Key));
    if C = 'a' then begin
      Memo1.SelectAll;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

有没有一个技巧,所以我不必这样做?如果没有,那么这个程序看起来不错吗?

And*_*and 25

这更优雅:

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = ^A then
  begin
    (Sender as TMemo).SelectAll;
    Key := #0;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

  • Ctrl + A键击作为序号为1的字符发送(Ctrl + B为2,Ctrl + C为3等).基本上我认为这是旧时代的残余.这些'字符'通常写成`^ A`,`^ B`等,Delphi支持这些.你可以在ASCII表中看到它们,比如[维基百科](http://en.wikipedia.org/wiki/ASCII). (10认同)
  • @Jerry:结果并不完全一样.你的代码不会处理恼人的'哔'声! (5认同)
  • 我知道我会继续下去,但是你可以为那些没有经验的人解释`^ A`(例如我!) (4认同)
  • 多年来没有见过,必须来自TP天. (2认同)
  • @Jerry - AFAIK没有解决这个问题.这是Windows编辑控件的默认行为,您可以阅读编辑控件的预期行为[此处](http://msdn.microsoft.com/en-us/library/bb775460%28v=vs.85%29的.aspx). (2认同)