2.12.3  Użycie dołączanych bibliotek

 

Alternatywną do bezpośredniego programowego tworzenia okna dialogowego jest budowanie okien w zewnętrznym środowisku typu VisualStudio,  kompilowaniu ich do postaci plików dll, a następnie użyciu w skrypcie Asix.Evo jedynie odwołania do gotowego kodu.

W poniższym przykładzie użyta zostanie biblioteka o nazwie EvoDialog.dll, w której znajduje się kod klasy EvoDialog dziedziczącej po System.Windows.Forms.Form. Klasa EvoDialog udostępnia dwie właściwości służące do ustawienia wartości wejściowych oraz jedną właściwość, w której po zamknięciu okna zostanie zapisana nazwa diagramu.

C#

using System;

using System.Windows.Forms;

using Askom.AsixEvo.Scripting;

using EvoAddOns;

 

public class Dialog : IScript

{

   public bool Initialize(string[] aParameters, IApplication aApplication)

   {

      IVariable varX, varY;

 

      varX = aApplication.GetVariable(aParameters[0], true);

      varY = aApplication.GetVariable(aParameters[1], true);

 

      EvoDialog dialog = new EvoDialog();

      dialog.XPos = varX.VariableState.FormattedValue;

      dialog.YPos = varY.VariableState.FormattedValue;

 

      if (dialog.ShowDialog() == DialogResult.OK)

      {

         if (!String.IsNullOrEmpty(dialog.Diagram))

            aApplication.ExecuteAction(EvoMessageType.Info,

                                      "OpenWindow(Main,P1," + dialog.Diagram + ",null)");

      }

 

      varX.Dispose();

      varY.Dispose();

      return true;

   }

 

   public void FinalizeScript()

   {

 

   }

}

 

VB

Imports System

Imports System.Windows.Forms

Imports Askom.AsixEvo.Scripting

Imports EvoAddOns

 

Public Class DialogVB

    Implements IScript

 

    Public Function Initialize(ByVal aParameters() As StringByVal aApplication As _

                                      IApplication) As Boolean Implements IScript.Initialize

 

        Dim varX, varY As IVariable

 

        varX = aApplication.GetVariable(aParameters(0), True)

        varY = aApplication.GetVariable(aParameters(1), True)

 

        Dim dialog As EvoDialog

        dialog = New EvoDialog()

        dialog.XPos = varX.VariableState.FormattedValue

        dialog.YPos = varY.VariableState.FormattedValue

 

        If dialog.ShowDialog() = DialogResult.OK Then

 

            If Not String.IsNullOrEmpty(dialog.Diagram) Then

 

                aApplication.ExecuteAction(EvoMessageType.Info, _

                                           "OpenWindow(Main,P1," & dialog.Diagram & ",null)")

 

            End If

 

        End If

 

        varX.Dispose()

        varY.Dispose()

 

        Return True

 

    End Function

 

    Public Sub FinalizeScript() Implements IScript.FinalizeScript

 

    End Sub

 

End Class  

 

W powyższym kodzie tworzony jest obiekt okienka EvoDialog. Następnie właściwości okienka XPos i YPos ustawiane są zgodnie z aktualnymi wartościami dwóch zmiennych o nazwach przekazanych w parametrach startowych skryptu. Okno dialogowe jest otwierane przy pomocy funkcji ShowDialog, a w przypadku zamknięcia okna ze statusem DialogResult.OK, konstruowana i wykonywana jest akcja operatorska otwierająca diagram o nazwie przekazanej we właściwości Diagram okienka.

Ażeby przykładowy skrypt wykonał się poprawnie, muszą być spełnione dwa dodatkowe warunki:

·         plik EvoDialog.dll (wraz z ewentualnymi dodatkowymi bibliotekami) musi być skopiowany do podkatalogu Addons katalogu definicyjnego aplikacji.

·         w zakładce Referencje panelu edycyjnego skryptu należy dodać referencję do pliku EvoDialog.dll.

Opisana technika rozszerzania funkcjonalności skryptu poprzez dołączanie bibliotek, może być stosowana również do realizacji innych zadań, niezwiązanych z interfejsem użytkownika.

 

e.