Storage: IUndoRedoStorage;
Свойство Storage возвращает хранилище сводной информации стека изменений.
В сводной информации хранится общее количество действий повтора/отмены, доступных для текущего объекта, а также его дочерних объектов.
Для выполнения примера предполагается наличие формы, расположенных на ней компонентов ReportBox и UiReport и четырёх кнопок. Для кнопок создайте обработчики событий. Компонент UiReport является источником данных для ReportBox. В отчёте. который подключен к компоненту UiReport, на активном листе расположена диаграмма.
Добавьте ссылки на системные сборки: Report, Tab.
Class SAMPLEForm: Form
UiReport1: UiReport;
ReportBox1: ReportBox;
Button1: Button;
Button2: Button;
Button3: Button;
Button4: Button;
CheckBox1: CheckBox;
URReport, URChart: IUndoRedo;
Sub SAMPLEFormOnCreate(Sender: Object; Args: IEventArgs);
Var
Report: IPrxReport;
Tab: ITabSheet;
Chart: IPrxChart;
Begin
Report := UiReport1.Report;
// Стек изменений всего отчёта
URReport := Report.UndoRedo;
URReport.Enabled := True;
URReport.Limit := 20;
// Стек изменений диаграммы
Tab := (Report.ActiveSheet As IPrxTable).TabSheet;
Chart := Tab.Objects.Item(0).Extension As IPrxChart;
URChart := Chart.UndoRedo;
End Sub SAMPLEFormOnCreate;
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
Debug.WriteLine("---Undo/Redo Report---");
Debug.WriteLine(" Enabled: " + URReport.Enabled.ToString);
Debug.WriteLine(" RedoCount: " + URReport.RedoCount.ToString);
Debug.WriteLine(" UndoCount: " + URReport.UndoCount.ToString);
Debug.WriteLine(" Storage count: " + URReport.Storage.Count.ToString);
End Sub Button1OnClick;
Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
Debug.WriteLine("---Undo/Redo Chart---");
Debug.WriteLine(" Enabled: " + URChart.Enabled.ToString);
Debug.WriteLine(" RedoCount: " + URChart.RedoCount.ToString);
Debug.WriteLine(" UndoCount: " + URChart.UndoCount.ToString);
End Sub Button2OnClick;
Sub Button3OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
If URReport.UndoCount <> 0 Then
URReport.Undo;
End If;
End Sub Button3OnClick;
Sub Button4OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
If URReport.RedoCount <> 0 Then
URReport.Redo;
End If;
End Sub Button4OnClick;
End Class SAMPLEForm;
При запуске формы будут получены данные стека изменений загруженного отчёта и диаграммы, которая расположена на активном листе. При нажатии на первую кнопку в консоль среды разработки будет выведена информация о текущем состоянии стека изменений самого отчёта, включая сводную информацию о всех доступных действиях. При нажатии на вторую кнопку в консоль среды разработки выводится информация о стеке изменений диаграммы. Третья и четвертая кнопки позволяют отменять или повторять действия, произведённые в отчёте.
См. также: