Автоматически разрешать Ctrl + A выбирать все в TMemo?

В управлении TMemo Delphi 7 попытка сделать комбинацию клавиш 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;

Есть ли трюк, чтобы мне не пришлось выполнять эту процедуру? А если нет, значит, эта процедура выглядит нормально?

delphi,keyboard-shortcuts,delphi-7,tmemo,

10

Ответов: 2


24 голосов принято

Это более элегантно:

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

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;

Другим способом добавления поведения «выбрать все» ко всем компонентам в форме является добавление списка действий в вашу форму со стандартным выбором всех действий.

Дельфы, клавиатура-ярлыки, Дельфы-7, TMemo,