Отмена последних действий в Memo

Копирую текст из Memo2 (Первую строку Memo2) в Memo1 туда где установлен курсор - мышки.

Memo1.SetFocus;
Memo1.SetSelTextBuf(PWideChar(Memo2.Lines[0]));

Возник вопрос: Как отменить последнее действие ? То есть после нажатия на кнопку последнее действие должно отмениться.

Пробовала через (но это отмена только ручных действий и не срабатывает):

Memo1.Undo;

Ответы (1 шт):

Автор решения: MBo

Можно просто запоминать Memo1.Lines.

Вторая строчка,кстати, может выглядеть попроще.

При действии, изменяющем Memo1.Lines:

TempList.Assign(Memo1.Lines);
Memo1.SelText := Memo2.Lines[0];

Восстановление:

Memo1.Lines.Assign(TempList);

Более продвинутый метод - запоминать только изменения - для этого понадобится какая либо diff-библиотека (TDiff, некое обновление), тогда можно не один шаг запоминать.

→ Ссылка