Как создавать "многоуровневые" redo(повторить) и undo(отменить) в C++ Builder либо в Delfi.......
Если использовать стандартную функцую для TRichEdit то одна кнопка будет овечать на оба действия(отменить и повтоорить) и запоминать только 1 изменение. Как увелличить "уровни исправлений", томеж память кнопок undo & redo сделать больше......... |
Разобраться с тем как работает один андо/редо и запоминать образы действий в массив отменяя/повторяя потом нужное. Более конкретно не знаю чем помочь, но так бы подошел к проблеме сам... интересно будет узнать мнения других форумчан...
|
Prisoner
Цитата:
Прикинь: текстовый редактор(частный случай) офигенный текст, изменяю я одну букву. И че мне весь текст в масси взаталкивать? работать будет долго..... уже пробЫвал..... |
При вводе буквы, тебе надо запомнить, только текущую позицию курсора и какой символ введён, что бы отменить перемещаешься к этой позиции и удалёешь одну букву.
При удалении куска текста, надо запомнить начальный индекс этого куска и сам кусок, соответственно для отмены - переходишь в соответствующую позицию и вставляешь удалённый текст. итд по тому же принципу, те как это назвал Prisoner "запоминай образы действий". Это совсем не тоже самое, что и весь текст запоминать на каждом шаге. |
По-моему, надо выделить более приемлемые для текстового редактора "образы действий", чем "вставка буквы на определенной позиции". А если было выделение? А если вставляли из буфера/в буфер?
Другой способ - запоминать действительно весь текст, но не всего документа, а определенной страницы (если это текстовый редактор типа ворда, то он же будет разбивать на страницы, а если не будет, то страница == фиксированное количество строк). |
Guest
интересная мысля. сенкс. попробую. |
Время: 23:42. |
Время: 23:42.
© OSzone.net 2001-