Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Undo, Redo. 
:(
    Опции темы
Spectre
Дата 15.6.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 18.1.2006
Где: Беларусь, г. Минс к

Репутация: нет
Всего: нет



Undo, Redo. В одной книге видел такое ActionUndo и ActionRedo. Но они там своеобразно как исполнены и когда я попробовал воплотить их на rtfText, то ничего не вышло.
 
PM MAIL WWW ICQ   Вверх
Naghual
Дата 15.6.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Програмиш сам. 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Akina
Дата 15.6.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



TextBoxBase.Undo Method поддержан в .NET Framework Class Library и не поддержан в VB6.

 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
BUGOR
Дата 15.6.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 3
Всего: 16



Не вижу препятсвий для реализации этого метода вручную. Создаём массив(верхняя граница которого равна кол-ву шагов Undo), при каждом изменении сдвигаешь все элементы-1 вниз, тем самым самое последнее изменение удаляется, а на самый верх записываешь текущее состояние объекта. 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Spectre
Дата 15.6.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 18.1.2006
Где: Беларусь, г. Минс к

Репутация: нет
Всего: нет



Цитата(BUGOR @  15.6.2006,  14:02 Найти цитируемый пост)
Не вижу препятсвий для реализации этого метода вручную. Создаём массив(верхняя граница которого равна кол-ву шагов Undo), при каждом изменении сдвигаешь все элементы-1 вниз, тем самым самое последнее изменение удаляется, а на самый верх записываешь текущее состояние объекта.

Попробую... Интересная трактовка. 
PM MAIL WWW ICQ   Вверх
IcyJet
Дата 16.6.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата(BUGOR @  15.6.2006,  14:02 Найти цитируемый пост)
Не вижу препятсвий для реализации этого метода вручную. Создаём массив(верхняя граница которого равна кол-ву шагов Undo), при каждом изменении сдвигаешь все элементы-1 вниз, тем самым самое последнее изменение удаляется, а на самый верх записываешь текущее состояние объекта.  

Оно то правильно, но если в rtfText будет оГрОмНыЙ текст, к примеру 10mb умножаем его на количество шагов, к примеру 10 тогда выходит 10*10=100mb, помоему многовато выходит для одного поля smile , столько даже Photoshop не жрет на одно изоброжение (наверно smile ) 
PM MAIL   Вверх
Naghual
Дата 16.6.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Правильно сохранять не весь текст, а только изменения.
А потом ими оперировать 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
cardinal
Дата 16.6.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



http://www.activevb.de/tipps/vb6tipps/tipp0596.html
Работает как то хреново, но возможно подскажет какую нибудь идею... 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
BUGOR
Дата 16.6.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 3
Всего: 16



IcyJet, да, действительно, об этом я не подумал, Naghual говрит верно, нужно сохранять изменения, только я пока не могу представить себе реализацию этого... 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
IcyJet
Дата 16.6.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата(BUGOR @  16.6.2006,  13:22 Найти цитируемый пост)
IcyJet, да, действительно, об этом я не подумал, Naghual говрит верно, нужно сохранять изменения, только я пока не могу представить себе реализацию этого...  

Обычно текст изменяется нажатием клавиш - ставим таймер, одна переменная накапливает нажатые клавишы (введенный текст), при каждом нажатие таймер снова запускается (тоесть пока пользыватель печатает таймер неможет сработать), если таймер сработал (пользыватель перестал печатать), переменная скидывает введенный текст и позицую где он начался вводится, в массив.
Ну это так, ОБщая идея smile , здесь надо ещо учитывать редактирование текста мышкой и т.д. 
PM MAIL   Вверх
Naghual
Дата 16.6.2006, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



А по моему проще отслеживать по событиям KeyDown, MoseDown и иже с ними. 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
IcyJet
Дата 16.6.2006, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата(Naghual @  16.6.2006,  19:56 Найти цитируемый пост)
А по моему проще отслеживать по событиям KeyDown, MoseDown и иже с ними.  

И что по одной букве добовлять в массив smile ? 
PM MAIL   Вверх
Naghual
Дата 16.6.2006, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



А что, это не изменение текста?
Тогда посмотри как работает это в Word. 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
IcyJet
Дата 17.6.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата(Naghual @  16.6.2006,  20:08 Найти цитируемый пост)
Тогда посмотри как работает это в Word.  

Вот именно посмотри!!! 
Оно добовляет после того как счетает печать текста завершонной. 

Это сообщение отредактировал(а) IcyJet - 17.6.2006, 14:04
PM MAIL   Вверх
Naghual
Дата 17.6.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Цитата(IcyJet @  17.6.2006,  14:03 Найти цитируемый пост)
Вот именно посмотри!!! 

Зачем же так кричать то?
А поведение данной фичи в Word в действительности зависит от версии.

Но дело даже не в таймере. Дело в том, что Word делает "аналитику" изменений и позволяет повторять/изменять действия либо в пределах знака (когда после его изменения проходит какое-то время) либо в пределах слова (хотя оно и удалялось посимвольно).

Тут нужно четко представить себе все варианты поведения и уж затем их реализовывать. Когда мы будем иметь полный алгоритм данного механизма, тогда и будем решать испоьзовать нам таймер или нет.

Так что вопрос сейчас не в реализации. 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0952 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.