라인을 삭제 한 다음 TSynMemo에 새로운 라인을 삽입하면 UndoList와 RedoList를 어떻게 업데이트하여 SynMemo.Undo에서 변경 사항을 실행 취소 할 수 있습니까?라인을 삭제하고 삽입 할 때 SynMemo 실행 취소/재실행 목록을 업데이트하는 방법
SynMemo1.BeginUpdate;
iLineIndex := SynMemo1.Lines.IndexOf(SynMemo1.LineText);
SynMemo1.Lines.Delete(iLineIndex);
iStartTag := SourceStyleComboBox1.CurText;
iEndTag := SourceStyleComboBox1.CurText;
System.Insert('/', iEndTag, 2);
iHTML := iStartTag + iElement + iEndTag;
SynMemo1.Lines.Insert(iLineIndex, iHTML);
SynMemo1.EndUpdate;
편집 이 시도하지만, 실행 취소 및 다시 실행은 제가이 의미하는 것은 선이는 행동하기 전에 무엇으로 복원되지 않는 취소 후입니다 ... 제대로 작동하지 않습니다.
StartOfBlock.Line := SynMemo1.CaretY;
StartOfBlock.Char := 0;
EndOfBlock.Line := SynMemo1.CaretY;
EndOfBlock.Char := Length(iHTML);
SynMemo1.UndoList.BeginBlock;
SynMemo1.UndoList.AddChange(crInsert, StartOfBlock, EndOfBlock, iHTML, smNormal);
SynMemo1.UndoList.EndBlock;
SynMemo1.RedoList.BeginBlock;
SynMemo1.RedoList.AddChange(crInsert, StartOfBlock, EndOfBlock, iHTML, smNormal);
SynMemo1.RedoList.EndBlock;
StartOfBlock 및 EdifOfBlock 매개 변수 설정에 대한 지침을 찾을 수 없습니다. 두 개의 "작업"을 결합하여 "결합 된"작업에 대해 한 번 실행 취소 및 다시 실행 - eoGroupUndo = True 옵션을 사용하여 "삽입 및 삭제"만 수행해야합니다.
'Editor.UndoList.AddChange()'를보세요 – ComputerSaysNo
@ 도린 : 이미 성공하지 않고 AddChange를 시도했습니다. 내 편집을 참조하십시오 ... – Bill
아야, 그러면 내부적으로 실행 취소/다시 실행을 처리하는 방법을 살펴 보는 것이 좋습니다. 어딘가에서 얻을 수 있다고 확신합니다. – ComputerSaysNo