Variablen an Dialoge übergeben

Alles zur Programmierung im LibreOffice.
Antworten
alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Variablen an Dialoge übergeben

Beitrag von alex0005 » Do 6. Jun 2019, 11:33

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?
....

craig
Beiträge: 426
Registriert: Do 21. Apr 2016, 11:42

Re: Variablen an Dialoge übergeben

Beitrag von craig » Do 6. Jun 2019, 13:01

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!"
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 6.3.2.2 (x64) • AOO 4.1.6

alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Re: Variablen an Dialoge übergeben

Beitrag von alex0005 » Do 6. Jun 2019, 13:13

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.

craig
Beiträge: 426
Registriert: Do 21. Apr 2016, 11:42

Re: Variablen an Dialoge übergeben

Beitrag von craig » Do 6. Jun 2019, 13:32

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?
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 6.3.2.2 (x64) • AOO 4.1.6

Wanderer
Beiträge: 295
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Variablen an Dialoge übergeben

Beitrag von Wanderer » So 9. Jun 2019, 18:05

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.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Re: Variablen an Dialoge übergeben

Beitrag von alex0005 » Mo 10. Jun 2019, 00:28

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

alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Re: Variablen an Dialoge übergeben

Beitrag von alex0005 » Mo 10. Jun 2019, 00:45

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

alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Re: Variablen an Dialoge übergeben

Beitrag von alex0005 » Do 15. Aug 2019, 19:54

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,

Antworten