Есть какие то типовые варианты создания функции отмена?

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

Re: Есть какие то типовые варианты создания функции отмена?

Сообщение zub » 05.05.2015 00:18:20

>>Может хранить флажок, что делаем в следующий раз: добавляем или удаляем.
Ну это чето уж совсем. UndoStack.Undo или UndoStack.Redo - там внутри и флажки и движение по стеку...
>>Можно, конечно, коллекцию (стек) нагрузить знаниями о том, что там хранятся операции и что их нельзя отдавать,
Это реализация логики undo\redo, а не "нагруженная" коллекция. Коллекция гдето отдельно или внутри - по вкусу. Не знаю что тут напряжного)) имхо гораздо напряжней возиться с операциями и вызывая perform думать что же там на этот раз бог пошлет - унду или реду))

Кстати кроме UndoStack.Undo и UndoStack.Redo мне еще понадобились
Код: Выделить всё
UndoStack.StartCommand(CommandName:string);//для "обрамления" группы "операций" (с возможностью вложенности) которые должны отменяться\применяться единовременно. С комментарием видя который пользователь понимает что конкретно отменилось\приминилось
UndoStack.EndCommand;//конец обрамления
UndoStack.PushStone;//Пихнуть в стек "маячек" что дальше ундо делать нельзя, пока не закроется "обрамление". после закрытия обрамления эти "маячки" ненужны и из стека выкидываются
zub
долгожитель
 
Сообщения: 2665
Зарегистрирован: 14.11.2005 23:51:26

Re: Есть какие то типовые варианты создания функции отмена?

Сообщение Mirage » 06.05.2015 00:11:36

Даже в названии UndoStack фигурирует интерфейс коллекции. :)
А флажки далеко не для всех операций нужны.

Насчет группировки - я бы сделал просто TOperation.Merge(TOperation): Boolean.
Если объединяются - остается одна, если нет - новая пушится в стек.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Пред.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru