Seite 1 von 1

Variablen an Dialoge übergeben

Verfasst: Do 6. Jun 2019, 11:33
von alex0005
Hallo zusammen,
suche gerade nach einer Möglichkeit Variablen von Makros an Dialoge zu übergeben.

Szenario:
Starte einen neuen Dialog mit Hilfe eines Makros (CreateUnoDialog), übergebe eine(mehrere) Variable(n).
Rufe aus dem Dialog ein weiteres Makro auf.
Möchte die Variablen gern "durch reichen".

Geht das überhaupt?
....

Re: Variablen an Dialoge übergeben

Verfasst: Do 6. Jun 2019, 13:01
von craig
Hallo Alex,

es gibt verschiedene Möglichkeiten Variable zu deklarieren.

Siehe hier...

Von Global deklarierten Variablen iwrd aber im allgemeinen abgeraten, weil:
"Diese Variable bleibt während die gesamte LibreOffice-Sitzung gültig!"

Re: Variablen an Dialoge übergeben

Verfasst: Do 6. Jun 2019, 13:13
von alex0005
Hi Craig,
danke für den Hinweis. Stimmt globale Variablen sind nicht so richtig schön. Aber wie übergebe ich bloß die Variablen in den Dialog?
Übergabe von Prozedur zu Prozedur, bzw. Funktion ist soweit klar.

Re: Variablen an Dialoge übergeben

Verfasst: Do 6. Jun 2019, 13:32
von craig
Hallo Alex,

pauschal läßt sich dies nicht beantworten.

Einem Dialog kann man keine Variablen übergeben, da dies nur ein Container für andere Steuerelemente ist.

Wie wäre es wenn Du mal einen Beipsielcode postest?

Re: Variablen an Dialoge übergeben

Verfasst: So 9. Jun 2019, 18:05
von Wanderer
Hallo,

wenn ich mich Recht erinnere hat Mal jemand Informationen in die Eigenschaften des aufrufenden Buttons kodiert, an den die Macro-Auslösung gehängt würde.

Mfg, Jörn.

Re: Variablen an Dialoge übergeben

Verfasst: Mo 10. Jun 2019, 00:28
von alex0005
Hi Craig,

zur Zeit nutze ich ein Makro, um eine Datenbankabfrage auzuführen und das Ergebnis als Tabelle in einem Dialog darzustellen.
Gute Sache, hier ist beschrieben, wie das mit Tabellen in Dialogen geht:
http://www.mic-consulting.de/de/artikel ... table-grid
Nun würde ich gern das Ergebnis mit einer Filterfunktion erweitern. Also ein Eingabefeld im Dialog, um damit den sql-Befehl neu "zu füttern".
Die Variable, die ich vom Makro brauche ist der sql Befehl selbst.
Der Dialog bliebe so stehen, und der Tabelleninhalt würde über ein Makro neu eingelesen.

Wenn der Dialog "weiß" welches Makro ihn aufgerufen hat, bzw. wenn ich irgendwie an die Variablen des laufenden Makros herankomme, wäre mir geholfen. Der Dialog wird ja aus dem Makro heraus gestartet. Und solange er existiert, läuft das Makro noch.

Was ginge, wäre den Dialog zu beenden und einen neuen zu erzeugen. Wenn ich ihn beende, läuft das Makro weiter und ich habe Zugriff auf die Variablen.
Schöner wäre jedoch ihn "stehen zu lassen" und nur die Daten auszutauschen.
Grüße
Alex

Re: Variablen an Dialoge übergeben

Verfasst: Mo 10. Jun 2019, 00:45
von alex0005
Hi Jörn,
ja stimmt, so ein Feld gibt es. Nennt sich "Zusatzinformation" und lässt sich im Makro auslesen.

Code: Alles auswählen

InfoTag = oEvent.Source.Model.Tag
Aber wie gesagt, muss erstmal im Dialog an die Variable herankommen.
Gruß Alex

Re: Variablen an Dialoge übergeben

Verfasst: Do 15. Aug 2019, 19:54
von alex0005
Habe das also jetzt mit dem Tag des Dialogs gelöst. D.h. ein Macro schreibt den Inhalt meiner Stringvariablen in das Tag des Dialogs. In meinem Fall mit
dem Trenner ;

Ein anderes Macro liest das Tag aus, splittet die Stringkette auf und packt sie in ein Array, welches dann weiterverarbeitet wird.

Code: Alles auswählen

stTag = glob_oDialog.Model.Tag
var() = Split(stTag, ";")
So richtig schön ist das nicht.
Die andere Lösung ginge mit globalen Variablen, aber die sind ja nicht schön.
Auch kann ich so nur Stringvariablen benutzen,