Форум программистов, компьютерный форум CyberForum.ru

Отмена действия - C++

Восстановить пароль Регистрация
 
LASpace
 Аватар для LASpace
34 / 34 / 3
Регистрация: 27.01.2013
Сообщений: 142
12.11.2013, 21:46     Отмена действия #1
Доброе время суток! Сорри если не там тему создал
Дело вот в чем, необходимо реализовать в программе откат действия (ctrl+z). Программа напоминает visio от Microsoft, куча прямоугольников с привязаными к ним данными. Можно менять положение прямоугольников и через специальное меню можно изменять привязанные к эти прямоугольникам данные и параметры.
Вопрос вот в чем: как именно лучше завоминать действия юзера? Добавление/Удаление/Изменение данных.

Я додумался вот до чего:
С каждым действием юзера создавать экземпляр структуры действие ( struct ST_ACTION ) и добавлять в лог ( ну пусть будет список TList или контейнер vector )
Структура ST_ACTION должна содержать:
- тип действия
- все параметры которые могут измениться
- размер лога ( static )
- номер положения в логе
- номер текущего пложения в логе ( для ctrl+shift+z ) ( static )
- методы перехода по логу ( отмена действия и отмена отмены действия )
- методы частичной и полной очистки лога

Может кто делал что то подобное или знает как умные дяди это реализуют??? Буду рад любому совету и критике)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 21:46     Отмена действия
Посмотрите здесь:

C++ Действия с матрицей
пишу ed, отмена изменений C++
C++ Отмена ввода по нажатию ESC
Действия со строками C++
Отмена регистра C++
C++ Отмена коммита в GitHub
C++ Отмена создания объекта при неверных аргументах
Действия в коде C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.11.2013, 22:17     Отмена действия #2
LASpace, ознакомьтесь с паттерном "Команда".
Yandex
Объявления
12.11.2013, 22:17     Отмена действия
Ответ Создать тему
Опции темы

Текущее время: 23:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru