Подтвердить что ты не робот

Автоматически разрешать Ctrl + A выбирать все в 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;

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

4b9b3361

Ответ 1

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

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

Ответ 2

Я использовал предыдущий ответ и обсуждение для создания автономного компонента, который обрабатывает событие 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;

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