04 Programmsteuerung


01 IF String
using System.Windows.Forms;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_01_IF_String
{
  [DeclareAction("IfString")]
  public void Function(string parameter)
  {
    if (parameter == "JA")
    {
      MessageBox.Show("Bedingung erfüllt.");
    }
    else
    {
      MessageBox.Show("Bedingung nicht erfüllt.");
    }

    if (parameter.ToUpper() == "JA")
    {
      MessageBox.Show("Bedingung erfüllt.");
    }
    else
    {
      MessageBox.Show("Bedingung nicht erfüllt.");
    }
  }
}


02 ElseIF
using System.Windows.Forms;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_02_ElseIF
{
  [Start]
  public void Function()
  {
    DialogResult result = MessageBox.Show(
        "Soll die Aktion ausgeführt werden?",
        "Titelzeile",
        MessageBoxButtons.YesNoCancel,
        MessageBoxIcon.Question
        );

    if (result == DialogResult.Yes)
    {
      MessageBox.Show("Es wurde 'Ja' gedrückt.");
    }
    else if (result == DialogResult.No)
    {
      MessageBox.Show("Es wurde 'Nein' gedrückt.");
    }
    else if (result == DialogResult.Cancel)
    {
      MessageBox.Show("Es wurde 'Abbrechen' gedrückt.");
    }
  }
}


03 Switch
using System.Windows.Forms;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_03_Switch
{
  [Start]
  public void Function()
  {
    DialogResult result = MessageBox.Show(
        "Soll die Aktion ausgeführt werden?",
        "Titelzeile",
        MessageBoxButtons.YesNoCancel,
        MessageBoxIcon.Question);

    switch (result)
    {
      case DialogResult.Yes:
        MessageBox.Show("Es wurde 'Ja' gedrückt.");
        break;

      case DialogResult.No:
        goto default;

      default:
        MessageBox.Show("Es wurde 'Nein' oder"
        + "'Abbrechen' gedrückt.");
        break;
    }
  }
}


04 Methode MessageBox
using System.Windows.Forms;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_04_Methode_MessageBox
{
  [DeclareAction("MethodeMessageBox")]
  public void Function(int int1, int int2)
  {
    int intResult = int1 + int2;

    MessageBox.Show(int1.ToString() +
        " + " + int2.ToString() +
        " = " + intResult.ToString());
    FinishedMessageBox();
  }

  private static void FinishedMessageBox()
  {
    MessageBox.Show("Berechnung abgeschlossen.");
  }
}


05 Methode Integer
using System.Windows.Forms;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_05_Methode_Integer
{
  [DeclareAction("MethodeInt")]
  public void Function(int int1, int int2)
  {
    CalcMessageBox(int1, int2);
    FinishedMessageBox();
  }

  private static void CalcMessageBox(int int1, int int2)
  {
    int result = int1 + int2;
    MessageBox.Show(int1.ToString() +
        " + " + int2.ToString() +
        " = " + result.ToString());
  }

  private static void FinishedMessageBox()
  {
    MessageBox.Show("Berechnung abgeschlossen.");
  }
}


06 Methode Rückgabewert
using System.Windows.Forms;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_06_Methode_Rueckgabewert
{
  [DeclareAction("MethodeIntRückgabewert")]
  public void Function(int int1, int int2)
  {
    int result = Calc(int1, int2);

    MessageBox.Show(
        int1.ToString() +
        " + " + int2.ToString() +
        " = " + result.ToString()
        );

    FinishedMessageBox();
  }

  private static int Calc(int int1, int int2)
  {
    return int1 + int2;
  }

  private static void FinishedMessageBox()
  {
    MessageBox.Show("Berechnung abgeschlossen.");
  }
}


07 Methoden Überladungen
using System.Windows.Forms;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_07_Methoden_Ueberladungen
{
  [Start]
  public void Function()
  {
    string message = string.Empty;

    message = DoSomething("Bananen");

    MessageBox.Show(message,
        "Information",
        MessageBoxButtons.OK,
        MessageBoxIcon.Information);

    message = DoSomething("Bananen", "3");

    MessageBox.Show(message,
        "Information",
        MessageBoxButtons.OK,
        MessageBoxIcon.Information);
  }

  /// <summary>
  /// Gibt einen Wert zurück, der den Satz enthält:
  /// "Ich habe gerade [food] gegessen!"
  /// </summary>
  /// <param name="food">Nahrungsmittel</param>
  private static string DoSomething(string food)
  {
    string fullMessage = "Ich habe gerade " + food + " gegessen!";

    return fullMessage;
  }

  /// <summary>
  /// Gibt einen Wert zurück, der den Satz enthält:
  /// "Ich habe gerade [amount] [food] gegessen!"
  /// </summary>
  /// <param name="food">Nahrungsmittel</param>
  /// <param name="amount">Menge</param>
  private static string DoSomething(string food, string amount)
  {
    return "Ich habe gerade " + amount + " " + food + " gegessen!";
  }
}


08 Decider
using System.Windows.Forms;
using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_08_Decider
{
  [Start]
  public void Function()
  {
    // OK
    Decider deciderOk = new Decider();
    deciderOk.Decide(
      EnumDecisionType.eOkDecision,
      "Ich sag mal OK!",
      "Decider",
      EnumDecisionReturn.eOK,
      EnumDecisionReturn.eOK);

    // YesNo
    Decider deciderYesNo = new Decider();
    EnumDecisionReturn decisionYesNo = deciderYesNo.Decide(
      EnumDecisionType.eYesNoDecision,
      "Ja oder Nein?",
      "Decider",
      EnumDecisionReturn.eYES,
      EnumDecisionReturn.eYES);

    switch (decisionYesNo)
    {
      case EnumDecisionReturn.eYES:
        MessageBox.Show("Ja");
        break;

      case EnumDecisionReturn.eNO:
        MessageBox.Show("Nein");
        break;
    }

    // YesNoAll
    Decider deciderYesNoAll = new Decider();
    EnumDecisionReturn decisionYesNoAll = deciderYesNoAll.Decide(
      EnumDecisionType.eYesAllNoAllDecision,
      "Ja oder Nein für alle?",
      "Decider",
      EnumDecisionReturn.eYES,
      EnumDecisionReturn.eYES);

    switch (decisionYesNoAll)
    {
      case EnumDecisionReturn.eYES:
        MessageBox.Show("Ja");
        break;

      case EnumDecisionReturn.eNO:
        MessageBox.Show("Nein");
        break;

      case EnumDecisionReturn.eYES_ALL:
        MessageBox.Show("Ja für alle");
        break;

      case EnumDecisionReturn.eNO_ALL:
        MessageBox.Show("Nein für alle");
        break;
    }

    // Icon and CheckBox
    Decider deciderIconAndCheckBox = new Decider();
    EnumDecisionReturn decisionIconAndCheckBox =
      deciderIconAndCheckBox.Decide(
        EnumDecisionType.eRetryCancelDecision,
        "Icon und CheckBox. Toll, oder?",
        "Decider",
        EnumDecisionReturn.eRETRY,
        EnumDecisionReturn.eRETRY,
        "DecisionIconAndCheckBox",
        true,
        EnumDecisionIcon.eQUESTION);

    if (decisionIconAndCheckBox == EnumDecisionReturn.eRETRY)
    {
      MessageBox.Show("Einmal reicht...");
    }
  }
}


09 Action mit Rückgabewert
using System.Windows.Forms;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_09_Action_mit_Rueckgabewert
{
  [Start]
  public void Function()
  {
    string value = string.Empty;

    CommandLineInterpreter cli = new CommandLineInterpreter();
    ActionCallingContext actionCallingContext = new ActionCallingContext();
    actionCallingContext.AddParameter("name", "Neo");
    cli.Execute("ReturnAction", actionCallingContext);

    actionCallingContext.GetParameter("value", ref value);

    MessageBox.Show(value);
  }

  [DeclareAction("ReturnAction")]
  public void ReturnAction(string name, out string value)
  {
    value = "Hallo " + name;
  }
}


10 Action mit ActionCallingContext
using System.Windows.Forms;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Scripting;

public class _04_Programmsteuerung_10_Action_mit_ActionCallingContext
{
  private ActionCallingContext _acc;

  [DeclareAction("ActionWithActionCallingContext")]
  public void ReturnAction(ActionCallingContext acc)
  {
    _acc = acc;

    string firstName = GetParameterValue("firstName");

    string message = "Hello";
    if (!string.IsNullOrWhiteSpace(firstName))
    {
      message = message + " " + firstName;

      string lastName = GetParameterValue("lastName");
      if (!string.IsNullOrWhiteSpace(lastName))
      {
        message = message + " " + lastName;
      }
    }

    MessageBox.Show(message);
  }

  private string GetParameterValue(string parameterName)
  {
    string parameter = null;
    _acc.GetParameter(parameterName, ref parameter);
    return parameter;
  }
}