Create (Report: IReportBox; Sheet: IPrxSheet; Object: ITabObject; Type: TabObjectChangeType, Value: Double; Cancel: Boolean);
Create (Report: Prognoz.Platform.Interop.Report.ReportBox; Sheet: Prognoz.Platform.Interop.Report.IPrxSheet; Object: Prognoz.Platform.Interop.Tab.ITabObject; Type: Prognoz.Platform.Interop.Tab.TabObjectChangeType; Value: double; Cancel: boolean);
Report. Компонент, для которого генерируется событие;
Sheet. Лист отчёта, для которого генерируется событие;
Object. Объект, для которого генерируется событие;
Type. Тип изменения, которое происходит с объектом;
Value. Угол, на который был повёрнут объект;
Cancel. Признак того, отменять ли вращение объекта.
Конструктор Create создаёт аргумент события, возникающего при вращении объекта.
По умолчанию аргументы события генерируются автоматически при наступлении события. Конструктор требуется для вызова события вручную.
Значение параметра Value всегда положительное и отсчитывается по часовой стрелке.
Возможные значения параметра Cancel:
True. Вращение объекта будет отменено;
False. Вращение объекта будет выполнено.
Для выполнения примера предполагается наличие формы, содержащей компоненты ReportBox с наименованием ReportBox1 и UiReport с наименованием UiReport1, являющийся источником данных для ReportBox1. В свойстве Active компонента UiReport1 установите значение True. UiReport1 должен содержать загруженный регламентный отчет с фигурами на активном листе.
В примере будет создан и вызван пользовательский обработчик для события OnBeforeObjectChange в компоненте ReportBox1.
Вместо компонентов Fore используйте их Fore.NET аналоги.
Для примера Fore процедура UserOnAfterObjectChange должна быть назначена обработчиком события OnBeforeObjectChange для компонента ReportBox1.
Для примера Fore.NET процедура ReportBeforeObjectAngleChangeEventArgs_Create_FormForm_Shown должна быть назначена обработчиком события Shown для формы.
Добавьте ссылки на системные сборки: Report, Tab.
// Создаем пользовательский обработчик события OnBeforeObjectChange
Sub UserOnBeforeObjectChange(Sender: Object; Args: IReportObjectChangeEventArgs);
Begin
If Args.Type = TabObjectChangeType.Angle Then
Debug.WriteLine((Args As ReportBeforeObjectAngleChangeEventArgs).NewValue);
End If;
End Sub UserOnBeforeObjectChange;
// Вызываем пользовательский обработчик события OnBeforeObjectChange
Sub UserProc;
Var
Report: IPrxReport;
Sheet: IPrxSheet;
Tab: ITabSheet;
rObject: ITabObject;
Argument: ReportBeforeObjectAngleChangeEventArgs;
Begin
Report := ReportBox1.Report.Report;
Sheet := Report.Sheets.Item(0);
Tab := (Sheet As IPrxTable).TabSheet;
rObject := Tab.Objects.Object("PrxShape1") As ITabObject;
Argument := New ReportBeforeObjectAngleChangeEventArgs.Create(ReportBox1, Sheet, rObject, TabObjectChangeType.Angle, 15, False);
ReportBox1.OnBeforeObjectChange(ReportBox1, Argument);
End Sub UserProc;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Tab;
…
// Создаем пользовательский обработчик события OnBeforeObjectChange
Sub UserOnBeforeObjectChange(Sender: Object; Args: IReportObjectChangeEventArgs);
Begin
If Args.Type = TabObjectChangeType.toctAngle Then
System.Diagnostics.Debug.WriteLine((Args As ReportBeforeObjectAngleChangeEventArgs).NewValue);
End If;
End Sub UserOnBeforeObjectChange;
// Назначаем событию OnBeforeObjectChange пользовательский обработчик UserOnBeforeObjectChange
Private Sub ReportBeforeObjectAngleChangeEventArgs_Create_FormForm_Shown(sender: System.Object; e: System.EventArgs);
Begin
ReportBoxNet1.OnBeforeObjectChange += New Prognoz.Platform.Forms.Net.ReportBoxNet.OnBeforeObjectChangeEventHandler(UserOnBeforeObjectChange);
End Sub;
// Вызываем пользовательский обработчик события OnBeforeObjectChange
Sub UserProc();
Var
Report: IPrxReport;
Sheet: IPrxSheet;
Tab: ITabSheet;
rObject: ITabObject;
Argument: ReportBeforeObjectAngleChangeEventArgsClass = New ReportBeforeObjectAngleChangeEventArgsClass.Create();
Begin
Report := ReportBoxNet1.Source.Report;
Sheet := Report.Sheets.Item[0];
Tab := (Sheet As IPrxTable).TabSheet;
rObject := Tab.Objects.Object["PrxShape1"] As ITabObject;
Argument.Create(ReportBoxNet1.CtrlBox As ReportBox, Sheet, rObject, TabObjectChangeType.toctAngle, 15, False);
UserOnBeforeObjectChange(ReportBoxNet1, Argument);
End Sub UserProc;
В результате выполнения процедура UserProc вызовет пользовательский обработчик UserOnAfterObjectChange.
См. также: