PDA

Показать полную графическую версию : Как создавать "многоуровневые" redo(повторить) и undo(отмени


Xcode
07-10-2003, 20:06
Как создавать "многоуровневые" redo(повторить) и undo(отменить) в C++ Builder либо в Delfi.......
Если использовать стандартную функцую для TRichEdit то одна кнопка будет овечать на оба действия(отменить и повтоорить) и запоминать только 1 изменение. Как увелличить "уровни исправлений", томеж память кнопок undo & redo сделать больше.........

Prisoner
07-10-2003, 21:53
Разобраться с тем как работает один андо/редо и запоминать образы действий в массив отменяя/повторяя потом нужное. Более конкретно не знаю чем помочь, но так бы подошел к проблеме сам... интересно будет узнать мнения других форумчан...

Xcode
08-10-2003, 15:21
Prisoner
запоминать образы действий в массив отменяя/повторяя потом нужное.
Идея хороша.Но!
Прикинь: текстовый редактор(частный случай) офигенный текст, изменяю я одну букву. И че мне весь текст в масси взаталкивать? работать будет долго..... уже пробывал.....

ivank
08-10-2003, 20:24
При вводе буквы, тебе надо запомнить, только текущую позицию курсора и какой символ введён, что бы отменить перемещаешься к этой позиции и удалёешь одну букву.

При удалении куска текста, надо запомнить начальный индекс этого куска и сам кусок, соответственно для отмены - переходишь в соответствующую позицию и вставляешь удалённый текст.

итд по тому же принципу, те как это назвал Prisoner "запоминай образы действий". Это совсем не тоже самое, что и весь текст запоминать на каждом шаге.

Guest
09-10-2003, 16:00
По-моему, надо выделить более приемлемые для текстового редактора "образы действий", чем "вставка буквы на определенной позиции". А если было выделение? А если вставляли из буфера/в буфер?

Другой способ - запоминать действительно весь текст, но не всего документа, а определенной страницы (если это текстовый редактор типа ворда, то он же будет разбивать на страницы, а если не будет, то страница == фиксированное количество строк).

Xcode
12-10-2003, 00:57
Guest
интересная мысля. сенкс. попробую.




© OSzone.net 2001-2012