IPrxFlashCallEventArgs.CreateArgs

Синтаксис Fore

CreateArgs(Name: String; Args: String);

Синтаксис Fore.NET

CreateArgs(Name: string; Args: string);

Параметры

Name. Имя команды, вызванной из flash-ролика;

Args. Cтроковый аргумент команды, вызванной из flash-ролика.

Описание

Метод CreateArgs создает аргументы для передачи в указанную функцию обработчика flash-ролика.

Комментарии

Swf-ролик, используемый flash-объектом, должен быть сформирован специальным образом с учетом работы через ExternalInterface.

Пример Fore

Для выполнения примера создайте модуль с идентификатором «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

Для выполнения примера создайте модуль и регламентный отчет, как написано в предыдущем примере. Обработчик события на 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;

При нажатии на кнопку будет выдано сообщение с названием сгенерированной команды и со значениями её аргументов.

См. также:

IPrxFlashCallEventArgs