Zugriff auf Property MacroTempVars

Gerd Ott

Neues Mitglied
Teammitglied
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?
 
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
 
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
 
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
 
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
 
  • Like
Reaktionen: khk
Zurück
Oben