Zugriff auf Property MacroTempVars

Dieses Thema im Forum ".NET (sagede.* DLLs)" wurde erstellt von Gerd Ott, 27. November 2019.

  1. Gerd Ott

    Gerd Ott Neues Mitglied Mitglieder

    Ich möchte in einer .net DLL auf lokale Variablen des APP_Designers zugreifen. Das soll über die Property "MacroTempVars möglich sein. Kann mir jemand einen Tip geben, wie ich im Code auf diese Property zugreifen kann?
     
  2. khk

    khk Neues Mitglied

    Hallo,

    um welche Art von Klasse handelt es sich denn? AppLibraryExecuteBase? MacroProcessBase?

    Bei einer Klasse, die von MacroProcessBase erbt, muss die lokale Variable als Parameter bei der Makro-Funktion AufrufenDll übergeben werden. Zugriff wie folgt, gegeben sei die lokale Variable [_TempVar]:
    Code:
    protected override NamedParameters Execute(NamedParameters parameters, ref bool cancel, ref string cancelMessage)
    {
        string tempVar = parameters.TryGetItem("_TempVar").Value;
    }
    Bei einer Klasse, die von AppLibraryExecuteBase erbt, wie folgt:
    Code:
    protected override string Execute()
    {
        string tempVar = MacroTempVars["_TempVar"].ToString();
    }
    Bitte beachten: Die Beispiele dienen nur der Veranschaulichung der Methodik und beinhalten keinerlei Überprüfung, ob die temporäre Variable tatsächlich übergeben wurde.

    Hilft das Ihnen weiter?

    VG
    khk
     
  3. Gerd Ott

    Gerd Ott Neues Mitglied Mitglieder

    Vielen Dank für die Antwort. Ich wollte es in beiden Klassen AppLibraryExecuteBase und MacroProcessBase nutzen.

    In MacroProcessBase habe ich bereits Variablen beim Aufruf übergeben. Das klappt für Felder und Parameter einwandfrei aber nicht für die von mir gewünschten Variablen ( z.B. _AppDate). Das läuft bei der Verwendung von Variablen immer auf einen Fehler. Auch wenn ich so eine Variable einer eigenen temporären Variable (_test1) zuordnen will.
    upload_2019-12-19_13-28-52.png

    Irgendetwas mache ich da falsch.
    Ich verwende folgendes Makro dazu:

    upload_2019-12-19_13-29-51.png
     
  4. khk

    khk Neues Mitglied

    Hallo,

    welcher Fehler erscheint denn?

    Ich kann ohne Probleme darauf zugreifen, wenn ich eine lokale Variable mit dem [_AppDate] fülle.

    Können Sie mir ein Code-Beispiel aus Ihrer aktuellen Umgebung zum Auslesen des Parameters zeigen?

    VG
    khk
     
  5. Gerd Ott

    Gerd Ott Neues Mitglied Mitglieder

    Ich habe jetzt einen anderen Weg gefunden, um auf die Variablen (_AppDate = myContext.ApplicationDate) zuzugreifen.
    Anbei mein Lösungsweg über den Context. Da muss ich nichts als Parameter übergeben.

    Public Class Macrotest
    Inherits MacroProcessBase

    Protected Overrides Function Execute(ByVal parameters As NamedParameters, ByRef cancel As Boolean, ByRef cancelMessage As String) As NamedParameters
    Try
    cancel = False
    cancelMessage = String.Empty
    Dim dtDate As Date
    Dim iYear As Integer
    Dim myContext As ApplicationContext

    myContext = Context
    dtDate = myContext.ApplicationDate
    iYear = myContext.ApplicationYear
    Dim methode = parameters.First(Function(p) p.Name = "_Parameter1").Value

    Nochmals vielen Dank für die Antworten
    G. Ott
     
    khk gefällt das.
  6. khk

    khk Neues Mitglied

    Super, vielen Dank für die Antwort!

    Für solche Snippets wäre ein Github-Repository Gold wert...
     

Diese Seite empfehlen