可以使用发替换内容的消息来达到可以撤销的目的
测试代码如下:
var nPC: PChar; begin Memo1.SelectAll; {选择所有内容} GetMem(nPC, 5); StrPCopy(nPC, '11111'); SendMessage(Memo1.Handle, EM_REPLACESEL, 1, Integer(nPC)); {替换所选内容, WParam为1代表可以撤销, 0为不可撤销} FreeMem(nPC, 5); end;
建立1个字符串副本 撤销的时候加载这个副本 MEMO这个说做1个副本就足够了 反正只需要撤销一步