2.18  Przykład 1 – Definiowanie właściwości i zdarzeń

 

Poniżej zamieszczono przykładową definicję klasy własnego obiektu dla Asix Evo. Obiekt składa się z dwóch przycisków w układzie pionowym,  dwóch pól edycyjnych tekstu oraz pola wyboru oraz pól etykiet. Pierwszy przycisk o stałej wysokości umieszczono na górze. Jego naciśnięcie powoduje wykonanie akcji określonej przez projektanta diagramu.  Drugi przycisk pokrywa środkową część obszaru i służy do wykonywania sterowań zmiennych. Pierwsze pole edycyjne służy do wprowadzania nazwy zmiennej, domyślnie pobiera wartość z właściwości standardowej „Zmienna sterowana” obiektu. Drugi przycisk pozwala wprowadzać wartość dla zmiennych. Pole wyboru określa, czy sterowanie ma następować ze sprawdzaniem uprawnień. Dla kontrolki zdefiniowano własne właściwości i zdarzenia widoczne w aplikacji Asix Evo oraz odwołania do właściwości standardowych. Dodatkowo kontrolka pobiera z aplikacji określone napisy aplikacji (jeżeli istnieją w aplikacji) oraz reaguje na zmiany bieżącego języka.

 

 

 
using System;
 
using System.Collections.Generic;
 
using System.Linq;
 
using System.Text;
 
using System.Drawing;
 
using Askom.AddonManager;
 
 
 
namespace TestowaKontrolkaEvo
 
{
 
   /// <summary>
 
   /// Przykłądowa klasa kontrolki obiektu dla Asix Evo.  
 
   /// </summary> 
 
   public class SampleEvoControl : Askom.AddonManager.EvoObjectBase 
 
   {
 
      private System.Windows.Forms.Button button1;
 
      private System.Windows.Forms.Button button2;
 
      private System.Windows.Forms.TextBox textBox1;
 
      private System.Windows.Forms.TextBox textBox2;
 
      private System.Windows.Forms.CheckBox checkBox1;
 
      private System.Windows.Forms.Label label1;
 
      private System.Windows.Forms.Label label2;
 
 
 
      public SampleEvoControl()
 
      {
 
         // Inicjalizacja...           
 
 
 
         SuspendLayout();
 
 
 
         // Przycisk 1 
 
         button1 = new System.Windows.Forms.Button();
 
         button1.Dock = System.Windows.Forms.DockStyle.Top;
 
         button1.Name = "button1";
 
         button1.Text = "Rób coś";
 
         button1.UseVisualStyleBackColor = true;
 
         button1.Click += button1_Click;
 
         Controls.Add(button1);
 
 
 
         // Przycisk 2 
 
         button2 = new System.Windows.Forms.Button();
 
         button2.Dock = System.Windows.Forms.DockStyle.Fill;        
 
         button2.Name = "button2";       
 
         button2.Text = "Steruj";
 
         button2.Click += button2_Click;         
 
         Controls.Add(button2);
 
 
 
         // Etykieta 1 
 
         label1 = new System.Windows.Forms.Label();
 
         label1.Dock = System.Windows.Forms.DockStyle.Bottom;
 
         label1.Name = "label1";
 
         label1.Text = "Zmienna:";
 
         Controls.Add(label1);
 
 
 
         // Pole tekstowe 1
 
         textBox1 = new System.Windows.Forms.TextBox();
 
         textBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
 
         textBox1.Name = "textbox1";        
 
         Controls.Add(textBox1);
 
 
 
         // Etykieta 2 
 
         label2 = new System.Windows.Forms.Label();
 
         label2.Dock = System.Windows.Forms.DockStyle.Bottom;
 
         label2.Name = "label2";
 
         label2.Text = "Wartość:";
 
         Controls.Add(label2);
 
 
 
         // Pole tekstowe 2 
 
         textBox2 = new System.Windows.Forms.TextBox();
 
         textBox2.Dock = System.Windows.Forms.DockStyle.Bottom;
 
         textBox2.Name = "textbox2";
 
         Controls.Add(textBox2);
 
 
 
         // Pole wyboru 
 
         checkBox1 = new System.Windows.Forms.CheckBox();
 
         checkBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
 
         checkBox1.Name = "checkBox1";
 
         checkBox1.Text = "Uprawnienia";
 
         checkBox1.Checked = true;
 
         Controls.Add(checkBox1);
 
 
 
         Name = "SampleEvoControl";
 
 
 
         ResumeLayout(false);
 
 
 
         if (AsixEvo.Application != null)
 
         {  
 
            // Aktualizujemy opipsy na podstawie napisów aplikacji
 
            UpdateTexts();
 
 
 
            AsixEvo.Application.CurrentApplicationLanguageChanged += Application_CurrentApplicationLanguageChanged;
 
         }
 
      }    
 
 
 
      public override string EvoObjectID
 
      {
 
         get 
 
         {
 
            return "SampleEvoControl";  // Unikalny identyfikator obiektu 
 
         }
 
      }
 
 
 
      public override string EvoObjectDescription
 
      {
 
         get
 
         {
 
            return "Kontrolka z przyciskami";  // Krótki opis obiektu 
 
         }
 
      }
 
 
 
      public override void Reset()
 
      { 
 
         // Reinicjalizacja obiektu ...
 
 
 
         base.Reset();
 
      }
 
 
 
      /// <summary>
 
      /// Przechwytywanie zdarzenia zmiany języka
 
      /// </summary>       
 
      void Application_CurrentApplicationLanguageChanged(object sender, EventArgs e)
 
      {
 
         UpdateTexts();
 
      }
 
 
 
      /// <summary>
 
      /// Aktualizacja opipsów elemntów na podstawie napisów aplikacji
 
      /// </summary> 
 
      void UpdateTexts()
 
      {
 
         if (AsixEvo.Application != null)
 
         {
 
            string txt = AsixEvo.Application.GetApplicationText("action");
 
            if (!string.IsNullOrEmpty(txt))
 
               button1.Text = txt;
 
 
 
            txt = AsixEvo.Application.GetApplicationText("control");
 
            if (!string.IsNullOrEmpty(txt))
 
               button2.Text = txt;
 
 
 
            txt = AsixEvo.Application.GetApplicationText("var");
 
            if (!string.IsNullOrEmpty(txt))
 
               label1.Text = txt;
 
 
 
            txt = AsixEvo.Application.GetApplicationText("val");
 
            if (!string.IsNullOrEmpty(txt))
 
               label2.Text = txt;
 
 
 
            txt = AsixEvo.Application.GetApplicationText("priv");
 
            if (!string.IsNullOrEmpty(txt))
 
               checkBox1.Text = txt;
 
         }
 
      }
 
 
 
      /// <summary>
 
      /// Właściwość napisu na pierwszym przycisku. Grupa podstawowa. Widoczna w aplikacji jako 'Text1'.
 
      /// </summary> 
 
      [Askom.AddonManager.EvoObjectProperty]
 
      public string Text1
 
      {
 
         get { return button1.Text; }
 
         set { button1.Text = value; }
 
      }
 
 
 
      /// <summary>
 
      /// Właściwość napisu na drugim przycisku. Grupa własna o nazwie "Grupa1". Widoczna w aplikacji jako 'Napis 2'.
 
      /// </summary>
 
      [Askom.AddonManager.EvoObjectProperty(Description = "Napis 2",
 
         PropertyGroup = Askom.AddonManager.EvoObjectPropertyGroup.CustomGroup, CustomGroupName="Grupa1")]
 
      public string Text2
 
      {
 
         get { return button2.Text; }
 
         set { button2.Text = value; }
 
      }
 
 
 
      /// <summary> 
 
      /// Właściwość koloru tła pierwszego przycisku. Grupa stanowa. Widoczna w aplikacji jako 'Kolor 1'.
 
      /// </summary> 
 
      [Askom.AddonManager.EvoObjectProperty(Description = "Kolor 1", PropertyGroup = Askom.AddonManager.EvoObjectPropertyGroup.StateGroup)]
 
      public Color Color1
 
      {
 
         get { return button1.BackColor; }
 
         set { button1.BackColor = value; }
 
      }
 
 
 
      /// <summary> 
 
      /// Właściwość koloru tła drugiego przycisku. Grupa stanowa. Widoczna w aplikacji jako 'Kolor 2'.
 
      /// </summary> 
 
      [Askom.AddonManager.EvoObjectProperty(Description = "Kolor 2", PropertyGroup = Askom.AddonManager.EvoObjectPropertyGroup.StateGroup)]
 
      public Color Color2
 
      {
 
         get { return button2.BackColor; }
 
         set { button2.BackColor = value; }
 
      }
 
 
 
      /// <summary> 
 
      /// Dostęp do właściwosci standardowej "Zmienna główna" - wartość wyświetlana w polu edycyjnym
 
      /// </summary> 
 
      [Askom.AddonManager.EvoObjectStandardProperty(Askom.AddonManager.EvoObjectStandardPropertyName.MainVar)]
 
      public string MainVariable
 
      {
 
         set;
 
         get;
 
      }
 
 
 
      /// <summary>
 
      /// Dostęp do właściwosci standardowej "Zmienna sterowana" - skojarzenie jej z polem tekstowym textBox1 
 
      /// </summary> 
 
      [Askom.AddonManager.EvoObjectStandardProperty(Askom.AddonManager.EvoObjectStandardPropertyName.ControlVar)]
 
      public string ControlVariable
 
      {
 
         get { return textBox1.Text; }
 
         set { textBox1.Text = value; }
 
      }
 
 
 
      /// <summary> 
 
      /// Zdarzenie kliknięcia pierwszego przycisku. Grupa zdarzeń. Widoczne w aplikacji jako 'Wciśnięcie 1'.
 
      /// </summary>
 
      [Askom.AddonManager.EvoObjectEvent(Description = "Wciśnięcie 1")]
 
      public event Askom.AddonManager.EvoObjectEventHandler click1;
 
 
 
      /// <summary>
 
      /// Wciśnięcie pierwszego przycisku
 
      /// </summary>  
 
      private void button1_Click(object sender, EventArgs e)
 
      {
 
         // Jeżeli jakieś funkcje są zarejestrowane to wywołujemy zdarzenie
 
         if (click1 != null) 
 
            click1();
 
      }
 
 
 
      /// <summary> 
 
      /// Wciśnięcie drugiego przycisku 
 
      /// </summary>   
 
      private void button2_Click(object sender, EventArgs e)
 
      {           
 
         // Wysłanie sterowania zmiennej
 
         if(AsixEvo.Application != null)
 
            AsixEvo.Application.SetVariableValue(ControlVariable, textBox2.Text, checkBox1.Checked);
 
      }
 
 
 
      protected override void Dispose(bool disposing)
 
      {         
 
         // Sprzątamy... 
 
         if (disposing)
 
         {
 
            if (AsixEvo.Application != null)
 
            {
 
               AsixEvo.Application.CurrentApplicationLanguageChanged -= Application_CurrentApplicationLanguageChanged;
 
            }
 
 
 
            button1.Click -= button1_Click;
 
            button2.Click -= button2_Click;
 
         }
 
 
 
         base.Dispose(disposing);
 
      }
 
   }
 
}