Andreas Rejbrandによって受け入れられた答えは正しいですが、それは期待されるWindowsの視覚的動作ではありません。カーソル位置は変更されません。Ctrl-A(すべて選択)は、カーソルをテキストの下部に置き、カーソルが表示されるようにコントロールをスクロールする必要があります。
これが行われない場合、コントロールは奇妙な動作を示します。たとえば、ウィンドウに収まるよりも多くのテキストがあり、ウィンドウが一番下までスクロールされていないとします。Ctrl-Aを押すと、すべてのテキストが選択されます。Ctrl-Cは、すべてのテキストをクリップボードにコピーします。表示されていませんが、カーソルはビューの下部にあり、スクロールされていません。Ctrlキーを押しながら下に押すと、選択したテキストが表示されているテキストだけになり、カーソルが下に移動し、ウィンドウが1行下にスクロールします。新しいボトムラインは選択されていません。これにより、[すべて選択]で表示されているテキストのみが選択されたように見えます。
修正は、SelectAllの前のテキストの最後にキャレットを移動することです。
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = ^A then begin
With Sender as TMemo do begin
SelStart := Length(Text);
Perform(EM_SCROLLCARET, 0, 0);
SelectAll;
end;
Key := #0; //Eat the key to suppress the beep
end;
end;
'Eat the key'はOnKeyPressイベントでのみ機能し、OnKeyDownまたはOnKeyUpイベントでは機能しないことに注意してください。