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

时间:2011-12-11 19:24:56

标签: delphi keyboard-shortcuts delphi-7 tmemo

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

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;

是否有一个技巧,以便我不必执行此过程?如果没有,那么这个程序看起来不错吗?

2 个答案:

答案 0 :(得分:25)

这更优雅:

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

答案 1 :(得分:0)

我使用前面的答案和讨论来创建一个独立的组件来处理我在小型测试程序中使用的KeyPress事件。

TSelectMemo = class(TMemo)
protected
  procedure KeyPress(var Key: Char); override;
end;

...

procedure TSelectMemo.KeyPress(var Key: Char);
begin
  inherited;
  if Key = ^A then
    SelectAll;
end;

向表单上的所有组件添加“全选”行为的另一种方法是使用标准的全选操作向表单添加操作列表。