CreateObjectChangeArgs (Report: IReportBox; Sheet: IPrxSheet; Object: ITabObject; Type: TabObjectChangeType);
CreateObjectChangeArgs (Report: Prognoz.Platform.Interop.Report.ReportBox; Sheet: Prognoz.Platform.Interop.Report.IPrxSheet; Object: Prognoz.Platform.Interop.Tab.ITabObject; Type: Prognoz.Platform.Interop.Tab.TabObjectChangeType);
Report. Компонент, для которого генерируется событие;
Sheet. Лист отчёта, для которого генерируется событие;
Object. Объект, для которого генерируется событие;
Type. Тип изменения, которое происходит с объектом.
Конструктор CreateObjectChangeArgs создаёт аргумент события, возникающего при изменении объекта.
По умолчанию аргументы события генерируются автоматически при наступлении события. Конструктор требуется для вызова события вручную.
Для выполнения примера предполагается наличие формы, содержащей компоненты ReportBox с наименованием ReportBox1 и UiReport с наименованием UiReport1, являющийся источником данных для ReportBox1. В свойстве Active компонента UiReport1 установите значение True. UiReport1 должен содержать загруженный регламентный отчет с фигурами на активном листе.
В примере будет создан и вызван пользовательский обработчик для события OnAfterObjectChange в компоненте ReportBox1.
Вместо компонентов Fore используйте их Fore.NET аналоги.
Для примера Fore процедура UserOnAfterObjectChange должна быть назначена обработчиком события OnBeforeObjectChange для компонента ReportBox1.
Для примера Fore.NET процедура ReportObjectChangeEventArgs_CreateObjectChangeArgs_NET_FormForm_Shown должна быть назначена обработчиком события Shown для формы.
Добавьте ссылки на системные сборки: Report, Tab.
// Вызываем пользовательский обработчик события OnAfterObjectChange
Sub UserProc;
Var
Report: IReportBox;
Sheet: IPrxSheet;
Shape: IPrxShape;
Object: ITabObject;
Argument: ReportObjectChangeEventArgs;
Begin
Report := ReportBox1.Report.Report As IReportBox;
Sheet := Report.Report.Report.Sheets.Item(0);
Object := Shape As ITabObject;
Argument := New ReportObjectChangeEventArgs.CreateObjectChangeArgs(ReportBox1, Sheet, Object, TabObjectChangeType.Angle);
ReportBox1.OnAfterObjectChange(ReportBox1, Argument);
End Sub UserProc;
// Пользовательский обработчик события OnAfterObjectChange
Sub UserOnAfterObjectChange(Sender: Object; Args: IReportObjectChangeEventArgs);
Begin
Select Case Args.Type
Case TabObjectChangeType.Angle:
Debug.WriteLine("Объект '" + Args.Object.Id + "' повернули");
Case TabObjectChangeType.Rect:
Debug.WriteLine("Объект '" + Args.Object.Id + "' переместили или изменили его размер");
End Select;
End Sub UserOnAfterObjectChange;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Tab;
…
// Пользовательский обработчик события OnAfterObjectChange
Public Sub UserOnAfterObjectChange(Sender: Object; Args: IReportObjectChangeEventArgs);
Begin
Select Case Args.Type
Case TabObjectChangeType.toctAngle:
System.Diagnostics.Debug.WriteLine("Объект '" + Args.Object.Id + "' повернули");
Case TabObjectChangeType.toctRect:
System.Diagnostics.Debug.WriteLine("Объект '" + Args.Object.Id + "' переместили или изменили его размер");
End Select;
End Sub UserOnAfterObjectChange;
// Назначаем событию OnAfterObjectChange пользовательский обработчик UserOnAfterObjectChange
Private Sub ReportObjectChangeEventArgs_CreateObjectChangeArgs_NET_FormForm_Shown(sender: System.Object; e: System.EventArgs);
Begin
ReportBoxNet1.OnAfterObjectChange += New Prognoz.Platform.Forms.Net.ReportBoxNet.OnAfterObjectChangeEventHandler(UserOnAfterObjectChange);
End Sub;
// Вызываем пользовательский обработчик события OnAfterObjectChange
Public Sub UserProc();
Var
Report: IReportBox;
Sheet: IPrxSheet;
Shape: IPrxShape;
TabObject: ITabObject;
TabObjectChange: TabObjectChangeType;
Argument: ReportObjectChangeEventArgs;
Begin
Report := ReportBoxNet1.Source.Report As IReportBox;
Sheet := Report.Report.Report.Sheets.Item[0];
TabObject := Shape As ITabObject;
TabObjectChange := TabObjectChangeType.toctAngle;
Argument := New ReportObjectChangeEventArgsClass.Create();
Argument.CreateObjectChangeArgs(ReportBoxNet1.CtrlBox As ReportBox, Sheet, TabObject, TabObjectChange);
UserOnAfterObjectChange(ReportBoxNet1, Argument);
End Sub UserProc;
В результате выполнения процедура UserProc вызовет пользовательский обработчик UserOnAfterObjectChange.
См. также: