рдФрд░ рдХреНрдпрд╛ рдкреВрд░реНрд╡рд╡рдд рд╣реИ / рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИ

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ / рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ рдФрд░ рд░реЛрд▓рдмреИрдХ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред







XtraRichEdit рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рд╕рдордп рдЖ рдЧрдпрд╛ рдЬрдм рд╣рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдереА рдЬреЛ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреА рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рдерд╛ред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ isModified рд╡реИрд░рд┐рдПрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рдЗрд╕реЗ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЙрд╕ рдХреНрд╖рдг рдореЗрдВ, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рд╣реЗрдЬрд╛, рддреЛ рдЗрд╕реЗ рдЭреВрдареЗ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдмреЗрд╢рдХ, рдЪрд░ рдХрд╛ рдореВрд▓ рдореВрд▓реНрдп рднреА рдЧрд▓рдд рдерд╛, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рдерд╛ред



рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдерд╛, рдФрд░ рд╣рдордиреЗ рдХрд╛рдо рдХрд░рдирд╛ рддрдп рдХрд┐рдпрд╛ред



рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреЛ рдмрдЯрди рдЯреВрд▓рдмрд╛рд░ рдкрд░ рд░рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рдереЗ, рдЙрдирдореЗрдВ рд╕реМ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдереЗред рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ isModified рдореЗрдВ рд╕рд╣реА рдорд╛рди рд▓рд┐рдЦрдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред



рдмреЗрд╢рдХ, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдереЛрдбрд╝реА рд╕реА рднреА рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рдереАред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдЙрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рдереАред рдФрд░ рдпрд╣ рд╕реНрдерд╛рди рдкреВрд░реНрд╡рд╡рдд / рдкреБрди: рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛ред



рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реНрд╡рд╡рддреН / рдлрд┐рд░ рд╕реЗ рдХреНрдпреЛрдВ рдХрд░реЗрдВ? рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ / рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдФрд░ рдкреВрд░реНрд╡рд╡рдд рдмрдлрд░ рдореЗрдВ рд░реЛрд▓рдмреИрдХ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╡рд╣рд╛рдБ рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдирд╛ред рдЪрд░ рд╢реБрд░реВ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред



рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ / рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВ:



int currentIndex = -1; public bool CanUndo { get { return currentIndex >= 0; } } public bool CanRedo { get { return items.Count > 0 && currentIndex < items.Count - 1; } } public void Undo() { if (!CanUndo) return; items[currentIndex].Undo(document); this.currentIndex--; } public void Redo() { if (!CanRedo) return; this.currentIndex++; items[currentIndex].Redo(document); } public void Add(HistoryItem item) { CutOffHistory(); items.Add(item); this.currentIndex++; }
      
      





рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдкрдиреЗ рд╕рдВрдХреЗрдд рдХреЛ рдпрд╣рд╛рдБ рдЬреЛрдбрд╝рдирд╛ рдерд╛:



 bool isModified; public bool IsModified { get { return isModified; } set { isModified = value; } } public void Add(HistoryItem item) { CutOffHistory(); items.Add(item); this.currentIndex++; this.isModified = true; }
      
      





рдРрдб рдореЗрдердб рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рд╡реИрд░рд┐рдПрдмрд▓ рдкрд░ рд╕рд╣реА рдирд┐рдпрдд рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрд╡рд╡рдд рдмрдлрд╝рд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдмрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИред рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЬрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдмрд╕ IsModified рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╡рд╣ рд╕рдм рд╣реИ?



рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рд▓реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдХ рд╡рд░реНрдг рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, IsModified == рдЕрд╕рддреНрдп, рдХреНрдпреЛрдВрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд░реНрдг рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреВрд░реНрд╡рд╡рдд рдмрдлрд╝рд░ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, IsModified рд╕рддреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрднреА рддрдХ рддреЛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЕрдм рд░реЛрд▓рдмреИрдХ (рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ) рдХрд░реЗрдВред рдЪрд░рд┐рддреНрд░ рдЗрдирдкреБрдЯ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди IsModified рдЬрд╛рд░реА рд╣реИ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрд▓рдд рд╣реИред



рдареАрдХ рд╣реИ, рд╣рдо рдкреВрд░реНрд╡рд╡рдд рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдВрдкрд╛рджрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗ:



 public void Undo() { if (!CanUndo) return; items[currentIndex].Undo(document); this.currentIndex--; this.isModified = CanUndo(); }
      
      





рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



рдФрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЛрд▓рдмреИрдХ рдХреЗ рдмрд╛рдж Redo рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Redo рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:



 public void Redo() { if (!CanRedo) return; this.currentIndex++; items[currentIndex].Redo(document); this.isModified = CanUndo(); }
      
      





рдФрд░ рдЕрдЧрд░ ...



рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ 3 рд╡рд░реНрдг рджрд░реНрдЬ рдХрд░рдиреЗ рджреЗрдВ, рдлрд┐рд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд╣реЗрдЬреЗрдВред рдлрд┐рд░ 2 рдФрд░ рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдПрдХ рдкреВрд░реНрд╡ рдмрдлрд░ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдЕрдЧрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рдж, рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ / рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред



рдЖрдЗрдП рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ:







рдкреИрд░рд╛рдЧреНрд░рд╛рдл 4, 8 рдФрд░ 14. рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдкреИрд░рд╛рдЧреНрд░рд╛рдл 4 рдореЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЙрд╕рдХрд╛ рд░рд╛рдЬреНрдп рдЕрдВрддрд┐рдо рдмрдЪрдд рдХреЗ рд╕рдордп рд░рд╛рдЬреНрдп рд╕реЗ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЕрдВрдХ 8 рдФрд░ 14 рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред



рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрджрд┐ рд╣рдо рдзреНрдпрд╛рди рд╕реЗ IsModified рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрдХрд▓рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рд╣рдореЗрдВ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рд░реНрдп рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 4, 8 рдФрд░ 14 рдореЗрдВ, рдХрд░рдВрдЯрдЗрдВрдбреЗрдХреНрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рд╕рдорд╛рди рдорд╛рди рд▓реЗрддрд╛ рд╣реИ 2. рд╡рд╣ рд╣реИ, IsModified == рдЕрд╕рддреНрдп рдЬрдм CurrentIndex == 2ред



рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдмреВрд▓рд┐рдпрди рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд╕рдордп рдПрдХ рдЕрд▓рдЧ рдЪрд░ рдореЗрдВ CurrentIndex рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ IsModified рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ:



 const int ForceModifiedIndex = -2; int currentIndex = -1; int unmodifiedIndex = -1; public bool IsModified { get { return currentIndex != unmodifiedIndex; } set { if (value == IsModified) return; if (value) unmodifiedIndex = ForceModifiedIndex; else unmodifiedIndex = currentIndex; } } void CutOffHistory() { int index = currentIndex + 1; while (index < Count) { this[index].Dispose(); items.RemoveAt(index); } if (unmodifiedIndex > currentIndex) unmodifiedIndex = ForceModifiedIndex; }
      
      





UnmodifiedIndex рдлрд╝реАрд▓реНрдб рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ currentIndex рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдХреЗ рдмрд░рд╛рдмрд░ -1 рдкрд░ рд╕реЗрдЯ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ IsModified рд╕рдВрдкрддреНрддрд┐ рдПрдХ рдирдП рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЭреВрдареА рд╣реЛ рдЬрд╛рдПред



рд╣рдордиреЗ CutOffHistory рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдореМрдЬреВрджрд╛ UnmodifiedIndex рдорд╛рди рдХреЛ currentIndex рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ, рддреЛ рдпрд╣ UnmodifiedIndex рдЪрд░ рдХреЛ ForceModifiedIndex рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХреНрдпреЛрдВ? CutOffHistory рд╡рд┐рдзрд┐ рдореЗрдВ unmodifiedIndex> currentIndex рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрддрд┐рдо рд╕рд╣реЗрдЬ рдХреЗ рдЕрдиреБрд░реВрдк рдкреВрд░реНрд╡-рдмрдлрд░ рддрддреНрд╡ рдкрд░рд┐рд╡рд░реНрддрди рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд╣рдЯрд╛рдП рдЧрдП рднрд╛рдЧ рдореЗрдВ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, Redo рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрдВрддрд┐рдо рдмрдЪрдд рдХреЗ рдЕрдиреБрд░реВрдк рд░рд╛рдЬреНрдп рдореЗрдВ рд▓рд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдФрд░ рдХреНрдпреЛрдВ рд╣рдордиреЗ ForceModifiedIndex == -2 рдХреЛ unmodifiedIndex рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛, -1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдЬрдЧрд╣ рдореЗрдВ -1 рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рд╕реНрдЯреЙрдк рдкрд░" рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ, рд╣рдореЗрдВ IsModified == рдЧрд▓рдд рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ -1 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ currentIndex рд╕рдорд╛рди рдореВрд▓реНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдордиреЗ -2 рдЪреБрдирд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдирд╛рдо рд╕реНрдерд┐рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛, рдЬреЛ рд╣рдордиреЗ рдХрд┐рдпрд╛ред



рдЕрдм рд╣рдорд╛рд░рд╛ IsModified рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред



рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреВрд░реНрд╡рд╡рдд рдмрдлрд░ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд┐рдЫрд▓реЗ рдмрдЪрдд рдХреЗ рдмрд╛рдж рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реБрдП рд╣реИрдВред



рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦ



рдЙрд╕реА рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рдкрд╣рд▓рд╛ рд▓реЗрдЦред



All Articles