Ну не знаю, у меня работает (Delphi 10.2):
Код:
procedure TForm1.acEditInsertDateTimeExecute(Sender: TObject);
var
S : String;
begin
S := FormatDateTime('yyyy-mm-dd hh:nn:ss',Now);
SendTextMessage(Memo1.Handle, EM_REPLACESEL, 1, S);
end;
procedure TForm1.acEditUndoExecute(Sender: TObject);
begin
Memo1.Undo;
end;
procedure TForm1.ActionList1Update(Action: TBasicAction; var Handled: Boolean);
begin
acEditUndo.Enabled := Memo1.CanUndo;
end;
Только оно хитро работает. Как бы оно отменяет последнее действие, а второе использование команды отменяет отмену.
Если хочется чего-то более навороченного (например, отмену нескольких шагов, отмену после сохранения и т.д.), то придется самому писать.