Articles

You may use Perform method with EM_UNDO message for undo operation, and you can use EM_CANUNDO message to determine whether an edit operation can be undone.

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Perform(EM_UNDO, 0, 0);
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  if Edit1.Perform(EM_CANUNDO, 0, 0)<>0 then
    Button1.Enabled:=True;
end;