рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ / рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ - рд╕рд╛рджрдЧреА рдХрд╛ рднреНрд░рдо

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







рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдПрдХ рд╡рд╕реНрддреБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реЗ рддрддреНрд╡ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ (рдкреВрд░реНрд╡рд╡рдд) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕реЗ (Redo) рднреА рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



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



public abstract class HistoryItem { public abstract void Undo(Document document); public abstract void Redo(Document document); }
      
      





рдкреВрд░реНрд╡рд╡рдд рдмрдлрд░ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛:



 public class History { readonly List<HistoryItem> items = new List<HistoryItem>(); public History(Document document) { this.document = document; } public void Undo() { } public void Redo() { } public void Add(HistoryItem item) { items.Add(item); } }
      
      





рд╣рд╛рде рдмрд╛рд╣рд░ рдкрд╣реБрдВрдЪреЗрдВ рдФрд░ рдкреВрд░реНрд╡рд╡рдд рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ:



 public void Undo() { items[items.Count - 1].Undo(document); }
      
      





рдЧрд░реНрд╡ рд╕реЗ, рд╢рд╛рди рд╕реЗ ... рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рддред



рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдЦрд╛рд▓реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдкреВрд░реНрд╡рд╡рдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ:



 public bool CanUndo { get { return items.Count > 0; } } public void Undo() { if (!CanUndo) return; items[items.Count - 1].Undo(document); }
      
      





рдФрд░ рдлрд┐рд░ рд╕реЗ рд╣рдореЗрдВ рдЧрд▓рдд рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдкреВрд░реНрд╡рд╡рддреН рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреВрд░реНрд╡рд╡рддреН рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЧрд▓рдд рд╣реИред рд╣рдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ:



 public void Undo() { if (!CanUndo) return; items[items.Count - 1].Undo(document); items.RemoveAt(items.Count - 1); }
      
      





рдЕрдм рд╕рдм рдареАрдХ рд╣реИред рдЦреИрд░, рдпрд╣ рд░реЗрдбреЛ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ ...



 public void Redo() { if (!CanRedo) return; // ??? }
      
      





рдКрдкреНрд╕! рд╣рдо рдкрд╣реБрдВрдЪреЗред

Undo рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд░реЛрд▓рдмреИрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдЕрдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд░реЛрд▓ рдХрд┐рдП рдЧрдП рдмреИрдХ рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдХреЛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП Redo рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЖрдЗрдЯрдо рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддреЛ:



 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) { items.Add(item); this.currentIndex++; }
      
      





рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрд╣рддрд░ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рд░реЛрд▓рдмреИрдХ рдХреЗ рдмрд╛рдж рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рд░реЛрд▓реЛ рдХреЗ рдкрд╣рд▓реЗ - рд░реЛрд▓рдмреИрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдмрдврд╝рд╛рдирд╛ рднреА рдирд╣реАрдВ рднреВрд▓реЗред



рдФрд░ рдЕрдм рдЖрдЗрдП Add рд╡рд┐рдзрд┐ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ 5 рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ 3 рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рд▓рд┐рдпрд╛ рдФрд░ рдПрдХ рдирдИ рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдпрд╣ рд╕реЛрдЪрдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╣реА рдЪреЛрд░реА рд╣реЛ рдЪреБрдХрд╛ рд╣реИ), рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рдд рд╣реИ, рдЙрд╕реЗ рдЦреЛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╢реБрд░реВ рд╣реЛрдЧрд╛:



 public void Add(HistoryItem item) { CutOffHistory(); items.Add(item); this.currentIndex++; } void CutOffHistory() { int index = currentIndex + 1; if (index < Count) items.RemoveRange(index, Count - index); }
      
      





рдЕрдм, рдЕрдВрдд рдореЗрдВ, рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ / рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред



рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЗ рд╕рд┐рд░ рдореЗрдВ рдЬрд╛рддреА рд╣реИ рд╡рд╣ рд╣реИ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо:

  1. рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВ;
  2. рд╣рдордиреЗ рдЗрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЖрдЧреЗ рд░реЛрд▓рдмреИрдХ / рд░рд┐рдЯреНрд░реА рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╡рдд рдмрдлрд░ рдореЗрдВ рдбрд╛рд▓ рджреАред


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

  1. рд╣рдо рдПрдХ рдкреВрд░реНрд╡рд╡рдд рдмрдлрд░ рддрддреНрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рд░реЛрд▓рдмреИрдХ / рд░реАрдбреЛ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╡рдд рдмрдлрд░ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ;
  2. рдЗрд╕ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП Redo рдЪрд▓рд╛рдПрдБ:


 void DoAction() { HistoryItem item = CreateActionHistoryItem(); document.History.Add(item); item.Redo(document); }
      
      





рдпрд╣ рд╕реБрдВрджрд░ рдФрд░ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдирд┐рдХрд▓рд╛ред рдХрд┐рд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдкрд╣рд▓рд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЙрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ Redo рд╣реИред рд░реЛрд▓рдмреИрдХ - рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВред рдЙрд╕ рд╕рдордп рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХрд┐рд╕реА рдСрдкрд░реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ред



рдЕрдВрддрд┐рдо рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдХрдИ рдмрд╛рд░ рд░рд╛рдЬреНрдп рд╢рдмреНрдж рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реНрд╡рд╡рдд рдмрдлрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдЬрд╛рдирдХрд╛рд░реА рдмрдЪрдд рдХреЗ рд╕рдордп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЧрд▓реЗ рдХреНрд╖рдг рдпрд╣ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рда рд╣реИ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!"ред







рд╣рдо "рд╡рд┐рд╢реНрд╡" рд╢рдмреНрдж рд╕реЗ рдкрд╣рд▓реЗ "DevExpress" рдкрд╛рда рдбрд╛рд▓рдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рд╣рдо рдкреВрд░реНрд╡рд╡рдд рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдбрд╛рд▓ рджреЗрдВрдЧреЗ рдХрд┐ рдкрд╛рда "DevExpress" рд╕реВрдЪрдХрд╛рдВрдХ 6 (0 рд╕реЗ рдЧрд┐рдирддреА) рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛ред







рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ: рдкрд╛рда рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ "рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ:" рд▓рд╛рдЗрди рдбрд╛рд▓реЗрдВред рдмреЗрд╢рдХ, рдЗрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рдж, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬрд╣рд╛рдВ рдЖрдк рд▓рд╛рдЗрди рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ "DevExpress" рдЧрд▓рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред







рдпрджрд┐ рдЗрд╕ рд╕рдордп рдЖрдк рдкрд╣рд▓реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╡рддреН рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╕рд╛рдордЧреНрд░реА рджреВрд╖рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреАред рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрдирд░реНрдЧрдгрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред



рдХреНрдпрд╛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдмреЗрд╢рдХ, рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХрд╛ рд░реЛрд▓рдмреИрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рдордп рдерд╛ред рдЗрд╕реА рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдЖрдиреЗ рдХреЗ рд╕рд╛рде рд╣реА рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "рд╕рд╣реА" рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдмрдЪрд╛рдИ рдЧрдИ рдереАред рдпрджрд┐ рд░рд╛рдЬреНрдп рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдПрдХ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЖрдо рддреМрд░ рдкрд░ рдЧрд▓рдд рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдСрдкрд░реЗрд╢рди рдХрд╛ рд░реЛрд▓рдмреИрдХ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдпрд╣рд╛рдВ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╛рда рдпрд╛ рдЫрд╡рд┐ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ / рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреАрд╡рди рдореЗрдВ рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЖрдкрдХреЛ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдПрдВрдЧреЗред



рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рд╣реА рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЪрд░рдо рд▓реЗрдЦ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдкреБрдирд╢реНрдЪ:

рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдорд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рдмрди рдЧрдИ, рдФрд░ рдЬрдм рдкреВрд░реНрд╡рд╡рддреН рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рддреЛ рдРрд╕реА рдЙрдкрдпреЛрдЧреА рдмрд╛рдд рдХрдм рд╣реБрдИ?



рдкрд░рд┐рд╢реНрд░рдордкреВрд░реНрд╡рдХ рдЪрд▓рддреЗ рд╣реБрдП, рд╡реЗ рдЗрд╕ рдирддреАрдЬреЗ рдкрд░ рдкрд╣реБрдБрдЪреЗ рдХрд┐ 1971 рд╕реЗ 1976 рдХреА рдЕрд╡рдзрд┐ рдореЗрдВ рдпрд╣ рдХрд╣реАрдВ рд╣реБрдЖ рдерд╛ред рддреЛ, рдЖрдзреБрдирд┐рдХ рдПрдб рдПрдбрд┐рдЯрд░ рдореИрдиреБрдЕрд▓ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреВрд░реНрд╡рд╡рдд рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, 1 9 71 рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдпреВрдирд┐рдХреНрд╕ рд╕реЗ рдореИрдиреБрдЕрд▓ рдореЗрдВ , рдЕрднреА рддрдХ рдкреВрд░реНрд╡рд╡рдд рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди vi рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рдЬрд┐рд╕рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 1976 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреВрд░реНрд╡рд╡рдд рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред



рдкреВрд░реНрд╡рд╡рдд рд╢рдмреНрдж рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╢рд╛рдпрдж рдкрд╣рд▓реА рдмрд╛рд░, 1976 рдореЗрдВ рднреА: "рдпрд╣ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрдо рд╕реЗ рдХрдо рддреБрд░рдВрдд рдкреВрд░реНрд╡рд╡рд░реНрддреА рдХрдорд╛рдВрдб (рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ 'рдкреВрд░реНрд╡ рдХрдорд╛рдВрдб' рдЬрд╛рд░реА рдХрд░рдХреЗ) рд╡рд╛рдкрд╕ рд▓реЗ рд╕рдХреЗрдВред" (рд▓рд╛рдВрд╕ рдП) рдорд┐рд▓рд░ рдФрд░ рдЖрдИрдмреАрдПрдо рдХреЗ рдЬреЙрди рд╕реАред рдереЙрдорд╕, "рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдореБрджреНрджреЗред") (рдПрдирд╡рд╛рдИ рдЯрд╛рдЗрдореНрд╕ рдкрддреНрд░рд┐рдХрд╛, 5 рд╡реЗрдВ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВ)ред



All Articles