Получение идентификатора процесса, выделенного в диаграмме Гантта

Компонент среды разработки FlashBox может работать с Flash-компонентом диаграмма Гантта, ориентированным на веб-приложения. Для обеспечения взаимосвязи диаграммы и других объектов прикладной системы необходимо получать идентификатор текущего процесса. Сделать это возможно двумя способами:

обрабатывая команды события FlashBox.OnFSCommand или выполнив метод «CallFunction» для объекта, помещенного в контейнер FlashBox.

Ниже приведены примеры, позволяющие получить xml-строку, содержащую идентификатор и наименование процесса, выделенного в диаграмме Гантта. Для их выполнения требуется форма, расположенный на ней компонент FlashBox с идентификатором «FlashBox1» и кнопка с идентификатором «Button1». В «FlashBox1» должна быть загружена диаграмма Гантта.

Обработка события OnFSCommand

Событие FlashBox.OnFSCommand происходит во время получения команды Flash-объектом. Xml-строку, содержащую идентификатор и наименование процесса, возвращает аргумент команды «onProcessSelect».

    Sub FlashBox1OnFSCommand(Sender: Object; Args: IFlashBoxCommandEventArgs);
    Begin
        If Args.Command = "onProcessSelect" Then
            Debug.WriteLine(Args.Args);
        End If;
    End Sub FlashBox1OnFSCommand;

Если при работе с запущенной формой на диаграмме Гантта будет выделен процесс, то в окно консоли будет выведена xml-строка, содержащая его идентификатор и наименование.

Выполнение метода «CallFunction»

Получить xml-строку, содержащую идентификатор и наименование процесса, выделенного в диаграмме Гантта, можно выполнив метод «CallFunction» для объекта, помещенного в контейнер FlashBox. Для этого используйте метод Invoke, необходимые параметры которого указаны в примере:

    Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
    Var
        FlashObj: Variant;
        Xml: String;
    Begin
        FlashObj := FlashBox1.OleObject;
        Xml := FlashObj.Invoke("CallFunction""<invoke name=""getSelectedProcess"" returntype=""xml""><arguments></arguments></invoke>");
        Debug.WriteLine(Xml);
    End Sub Button1OnClick;

Пример будет выполняться при нажатии на кнопку. Если на диаграмме Гантта будет выделен процесс, то в окно консоли будет выведена xml-строка, содержащая его идентификатор и наименование. Если на диаграмме не будет выделен процесс, то в окно консоли будет выведена строка «<undefined/>».

См. также:

Примеры | IFlashBox