Ответ 1
Это более элегантно:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = ^A then
begin
(Sender as TMemo).SelectAll;
Key := #0;
end;
end;
В 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;
Есть ли трюк, чтобы мне не пришлось выполнять эту процедуру? А если нет, значит, эта процедура выглядит нормально?
Это более элегантно:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = ^A then
begin
(Sender as TMemo).SelectAll;
Key := #0;
end;
end;
Я использовал предыдущий ответ и обсуждение для создания автономного компонента, который обрабатывает событие 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;
Другим способом добавления поведения "выбрать все" ко всем компонентам в форме является добавление списка действий в вашу форму со стандартным выбором всех действий.