CreateArgs(Name: String; Args: String);
CreateArgs(Name: string; Args: string);
Name. Имя команды, вызванной из flash-ролика;
Args. Cтроковый аргумент команды, вызванной из flash-ролика.
Метод CreateArgs создает аргументы для передачи в указанную функцию обработчика flash-ролика.
Swf-ролик, используемый flash-объектом, должен быть сформирован специальным образом с учетом работы через ExternalInterface.
Для выполнения примера создайте модуль с идентификатором «Module» (процедура «Message», подключите сборки «Ui», «Tab» и «Report»):
Public Sub Message(Flash: IPrxFlash; Args: IPrxFlashCallEventArgs);
Var s: string;
i: integer;
j: integer;
a: array;
Begin
If Args.Arguments <> Null Then
For i := 0 To Args.Arguments.Length - 1 Do
If Args.Arguments[i] Is array Then
a := Args.Arguments[i] As array;
For j := 0 To a.Length - 1 Do
s := s + (a[j] As String) + (j < a.Length - 1 ? ", " : "; ");
End For;
Else
s := s + (Args.Arguments[i] As String) + (i < Args.Arguments.Length - 1 ? "; " : "");
End If;
End For;
End If;
WinApplication.InformationBox((Flash As ITabObject).Id + " : " + Args.Name + " = " + s);
End Sub Message;
Создайте регламентный отчет с идентификатором «Report», на листе которого разместите flash-объект, который использует swf-ролик с поддержкой ExternalInterface. Добавьте созданный модуль в модули отчета.
Создайте форму, добавьте кнопку с наименованиями «Button1», компоненты ReportBox с наименованием «ReportBox» и UiReport с наименованием «UiReport1». Опишите события OnClick для «Button1» и OnCreate для формы. Подключите системные сборки: Metabase, Report, Tab, Forms, Forms.Net (для примера Fore.NET).
Class TestForm: Form
UiReport1: UiReport;
ReportBox1: ReportBox;
Button1: Button;
m_Rep: IPrxReport;
m_Fl: IPrxFlash;
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var a: IPrxFlashCallEventArgs;
ar: array Of variant;
Begin
ar := New Variant[2];
ar[0] := 0;
ar[1] := "qwe";
a := New PrxFlashCallEventArgs.Create;
a.CreateArgs("New Call", ar);
m_fl.DoFlashCallAction(a);
End Sub Button1OnClick;
Sub TestFormOnCreate(Sender: Object; Args: IEventArgs);
Begin
m_Rep := MetabaseClass.Active.ItemById("OBJ36163").Edit As IPrxReport;
UiReport1.Instance := m_Rep;
m_fl := (m_Rep.ActiveSheet As IPRxTable).TabSheet.Objects.Item(0).Extension As IPrxFlash;
m_fl.FlashCallAction := "Module.Message";
End Sub TestFormOnCreate;
End Class TestForm;
При нажатии на кнопку будет выдано сообщение с названием сгенерированной команды и со значением её аргументов.
Для выполнения примера создайте модуль и регламентный отчет, как написано в предыдущем примере. Обработчик события на Fore.NET не поддерживается, так как описание пользовательских макросов в .NET-модулях/.NET-формах производится в каком-либо классе.
Создайте .NET- форму, расположите на ней кнопку с наименованием "Button1", компонент ReportBoxNet и компонент UiReportNet с наименованием «UiReportNet1», являющегося источником данных для ReportBoxNet. Опишите события Click для «Button1» и Activated для формы.
Imports System.Collections.Generic;
Imports System.ComponentModel;
Imports System.Data;
Imports System.Drawing;
Imports System.Text;
Imports System.Windows.Forms;
Imports Prognoz.Platform.Forms.NET;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;
Public Partial Class OBJ36179Form: Prognoz.Platform.Forms.NET.ForeNetForm
m_Rep: IPrxReport;
m_Fl: IPrxFlash;
Public Constructor OBJ36179Form();
Begin
InitializeComponent();
End Constructor;
Private Sub OBJ36179Form_Activated(sender: System.Object; e: System.EventArgs);
Begin
m_Rep := Self.Metabase.ItemById["Report"].Edit() As IPrxReport;
uiReportNet1.ReportUi.Report := m_Rep;
m_fl := (m_Rep.ActiveSheet As IPRxTable).TabSheet.Objects.Item[0].Extension As IPrxFlash;
m_fl.FlashCallAction := "Module.Message";
End Sub;
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
a: PrxFlashCallEventArgs;
ar: array Of object;
Begin
ar := New Object[2];
ar[0] := 0;
ar[1] := "qwe";
a := New PrxFlashCallEventArgs.Create();
a.CreateArgs("New Call", ar);
m_fl.DoFlashCallAction(a);
End Sub;
End Class;
При нажатии на кнопку будет выдано сообщение с названием сгенерированной команды и со значениями её аргументов.
См. также: