在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;

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

===============>>#1 票数:25 已采纳

这更优雅:

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

===============>>#2 票数: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;

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

  ask by Jerry Dodge translate from so

未解决问题?本站智能推荐: