Вниз
Скачать: CL | DM;

Memo и Undo   Найти похожие ветки 

 
karu   (2003-09-19 14:42) [0]

Когда сохраняешь содержимое Memo - [Memo.Lines.SaveToFile(...)], то обнуляется стек Undo.
Как сделать так, чтобы он не обнулялся?


 
Nikolay M. ©   (2003-09-19 15:20) [1]

Сохранять руками?


 
karu   (2003-09-22 12:23) [2]

Как это?


 
HolACost! ©   (2003-09-22 12:56) [3]

Делать не SaveToFile, а просто так, как бы ты делал, еслибы просто создавал построчно текстовый файл!


 
PVOzerski ©   (2003-09-22 12:57) [4]

Да и Undo можно руками сделать получше, чем стандартный. Отслеживать OnChange, вести протокол изменений на N шагов...


 
karu   (2003-09-22 17:02) [5]

Вариант, предложенный HolACost!, работает также, как и SaveToFile, т.е. CANUNDO обнуляется.
А совет PVOzerski, не представляю как реализовать.
Может кто-нибудь предложит алгоритм этого.


 
Nikolay M. ©   (2003-09-22 17:51) [6]


> Вариант, предложенный HolACost!, работает также, как и
> SaveToFile, т.е. CANUNDO обнуляется

А покажи, как делал?


 
PVOzerski ©   (2003-09-22 17:57) [7]

>А совет PVOzerski, не представляю как реализовать.
Ну, заводим, скажем, 2 связных списка (или динамических массива, или даже статических массива) записей, в список Undo вгоняем состояние Memo перед каждым измененим (в простейшем случае - текст в нем, если сложнее, то еще и выделенные области (позиция каретки), если экономнее - то различия между состоянием до изменения и после него), при каждом следующем изменении сведения о предыдущем "отодвигаются назад" (принцип стека). По команде Undo состояние Memo восстанавливается из последней записи в списке, а текущее состояние отправляется в аналогичный список Redo. При "ручном" (не как Undo) изменении содержимого Memo список Redo следует очищать. Вот и вся кухня.


 
karu   (2003-09-23 14:55) [8]

> Nikolay M.

var F: TextFile;
k: Integer;
...
AssignFile(F,FileName);
Rewrite (F);
for k := 0 to Memo.Lines.Count-1 do
WriteLn(F, Memo.Lines[k]);
CloseFile(F);
...

, если я правильно понял HolACost!
> PVOzerski
Спасибо, за идею! Так и попробую (наверно) :]



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
14-18625
Knight
2003-09-17 03:46
2003.10.06
Бессовестная реклама своего ресурса...


3-18269
k_len
2003-09-15 14:36
2003.10.06
Rave Reports


1-18426
Chaynik
2003-09-25 12:43
2003.10.06
Как определить координаты курсора при двойном нажатии на мышь?


14-18596
Opera
2003-09-18 00:12
2003.10.06
Размеры


14-18621
tanisha
2003-09-16 14:54
2003.10.06
Тест




   Наверх