Betrifft: ab orgAnice 3

Frage:
Kann man aus dem VBA auf orgBasic-Ausdrücke (persistente Variablen, angepasste Funktionen, Kernfunktionen, Tabellenfelder) zugreifen?

Hinweis: Benutzen auf eigene Gefahr!

Lösung:
Ja, kann man, das geschieht mit Hilfe des ParserRequest-Objekts.

Es gibt den folgenden, nicht dokumentierten, aber funktionierenden Weg, über den Sie über einen orgBasic-Ausdruck eine VBA-Prozedur aufrufen können (auch mit Parameterübergabe) und den Rückgabewert der Funktion auswerten können.

Die Grundlage bildet die Kernfunktion ClientText(). Der Aufruf der Funktion bewirkt die Auslösung eines COM-Ereignisses (Events) des Parser-Objekts, welches über das VBA abgefangen werden kann. Gehen Sie für das Beispiel folgendermaßen vor:

1.) Erstellen Sie im VBA eine neue Klasse namens CParserEvents und tragen Sie den folgenden Quellcode ein:

2.) Tragen Sie im Deklarationsteil eines neuen oder bestehenden (bspw. UserMakros) Moduls die folgende Zeile ein:

3.) Initialisieren Sie gobjParserEvents (z.B. in InitGlobalObjectsUser())

4.) Erstellen Sie im Tabellenlayout Adressen ein neues Label und geben Sie als Ausdruck den folgenden Ausdruck ein:

ClientText(Name())

Das war es. Beim Bewegen durch die Datensätze in der Tabelle Adressen werden Sie feststellen, dass in dem Label immer der Text „Hallo “ und der jeweilige Firmenname erscheint.

Das ClientText-Event verfügt über 2 Parameter: bstrId und pbstrClientText. bstrId ist ein eingehender Parameter (In), welcher den an die Kernfunktion übergebenen Parameter beinhaltet. In unserem Beispiel also Name().

pbstrClientText ist ein ausgehender Paramater (Out), über welchen der Rückgabewert der Kernfunktion bestimmt wird.

Innerhalb der Ereignisbehandlung kann natürlich je nach Wert von bstrId etwas anderes passieren, es können hier alle Mittel von VBA verwendet werden. Es ist hierbei jedoch besondere Vorsicht geboten, denn ein Fehler, der an dieser Stelle passiert kann u. U. das gesamte orgData zum Stillstand bringen.

Was this helpful?

1 / 0

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen