Посоветуйте паттерн для повтор/отмена действий в таблице [delphi]

kill-still

Или описание алгоритма с классами.
Сейчас это выглядит так:
3 юнита с тремя классами:
Grid
-Data
--Log
такая вот иерархия вложенности.
лог - это массив указателей на объекты.
объект сам знает как вернуть то или иное изменение(сортировка, замена, групповое заполнение и в нём же хранятся данные
выглядит это следующим образом:
 
procedure TOperation_editcell.undo_operation;
  begin
    MainForm.StringGrid1.Cells[cell_x,cell_y]:=prev_value;
  end;
  

Пиздец. о_О
т.е. компонент намертво связан с проектом, и нигде в другом месте его не поиспользуешь, куча глюков при перекомпиляции класса, в dpr файле(если новые св-ва добавлять скажем).
Можно конечно сделать линкование, или добавить поле owner, но тогда придётся всё в один юнит пихать (делфи не поддерживает перекрёстное ссылание в интерфейсных частях модулей(uses.
Хотелось бы что-нить более вменяемое удовлетворяющее Шаблону функционального дизайна .

kill-still

Чем больше вчитываюсь, тем больше поражаюсь, как всё это работает. о_О
Хотите исходники дам зачитать?

kill-still

Единственное лекарство от горе-кодеров - РЕВРАЙТОЛ.
Применять по капсуле в день. :)

Marusetta

пости
любопытно

SPARTAK3959

Повтор/отмена хорошо сделаны в Swing'e (см. класс UndoableEdit) - можно написать аналог для дельфи.
Оставить комментарий
Имя или ник:
Комментарий: