🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Dialog in LO 4.0.33 [Gelöst]

Alles zur Programmierung im LibreOffice.
Antworten
jburchardi
Beiträge: 10
Registriert: Di 2. Aug 2011, 22:24
Wohnort: München

Dialog in LO 4.0.33 [Gelöst]

Beitrag von jburchardi » Mi 5. Jun 2013, 00:13

Liebe Gemeinde,

ich möchte in einem Writer-Dokument (makro-test.odt) einen Dialog aufrufen und ein einziges Eingabefeld zur Weiterverarbeitung speichern. Leider funktioniert die Sache nicht, nachdem ich den Dialog mit einem command-button abgeschlossen habe, ist die Variable odialog1 nicht mehr gültig (laut eingeschaltetem "Beobachter"). In dem command-button ist unter "Ereignisse/Aktion ausführen" das Makro "Standard.Dialoge.Readjahr" eingetragen.
Bildschirmfoto5.jpeg
Bildschirmfoto5.jpeg (6.7 KiB) 4542 mal betrachtet

Code: Alles auswählen

REM  *****  BASIC  *****

rem Option Explicit

Global odialog1 as Object


Sub Dialog1Show

	DIM odialog1 as object
	DIM olabel2 as variant
	

	DialogLibraries.LoadLibrary("Standard")
	odialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1) 
	odialog1.setTitle("Was denn gleich")   
    
    REM Beschriftung des Kontrollfelds Label1 anzeigen
    oLabel2 = oDialog1.GetControl("Label2")
    MsgBox oLabel2.Text

    oDialog1.Execute()
       
End Sub

Sub ReadJahr
	DIM GJ as variant
rem	GJ = oDialog1.getControl("Label2")
rem	msgbox GJ.Text
	oDialog1.EndExecute	
end sub
Das Makro bleibt in der Zeile "oDialog1.EndExecute" mit der Fehlermeldung "BASIC-Laufzeitfehler.
Objektvariable nicht belegt" hängen.
Ich habe mir verschieden Beispieldateien aus dem Netz heruntergeladen, welche Dialoge nach dem selben Schema abfahren, und die funktionieren. Hat jemand eine Idee, wo ich den Fehler mache?
Vielen Dank im voraus
Jürgen
Zuletzt geändert von jburchardi am Fr 14. Jun 2013, 22:21, insgesamt 1-mal geändert.
DELL Inspiron 6400, Linux Mint 17.3 (KDE), LO 5.4.3.2

pmoegenb

Re: Dialog in LO 4.0.33

Beitrag von pmoegenb » Mi 5. Jun 2013, 08:43

Siehe http://www.dannenhoefer.de/faqstarbasic/Dialog.html.

Ich verstehe nur nicht, weshalb Du dafür ein Makro benötigst (Siehe http://www.ooowiki.de/EingabeFeld.html).

jburchardi
Beiträge: 10
Registriert: Di 2. Aug 2011, 22:24
Wohnort: München

Re: Dialog in LO 4.0.33

Beitrag von jburchardi » Mi 5. Jun 2013, 21:45

Hallo Peter,
danke für die schnelle Reaktion. Das Writer-Dokument benutze ich nur zum Üben, eigentlich brauche ich den Dialog in einer Datenbank. Dort will ich die Eingabe des Dialogs an eine SQL-Abfrage übergeben.
Die Dannenhöfer-Seite ist sehr interessant, trägt aber leider nicht zur Lösung meines Problems bei - oder gabe ich was übersehen?
Grüße
Jürgen
DELL Inspiron 6400, Linux Mint 17.3 (KDE), LO 5.4.3.2

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Dialog in LO 4.0.33

Beitrag von F3K Total » Mi 5. Jun 2013, 22:32

Hi,
anbei ein Beispiel, du darfst Den global definierten Dialog, der deshalb global definiert wurde, weil er in einem zweiten Makro weiter verwendet werden soll, nicht ein zweites Mal, innerhalb der SUB, definieren.
REM ***** BASIC *****
rem Option Explicit
Global odialog1 as Object

Sub Dialog1Show
DIM odialog1 as object
DIM olabel2 as variant
Gruß R
Dateianhänge
Dialog_Test.odt
(10.26 KiB) 307-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

jburchardi
Beiträge: 10
Registriert: Di 2. Aug 2011, 22:24
Wohnort: München

Re: Dialog in LO 4.0.33

Beitrag von jburchardi » Do 6. Jun 2013, 21:42

Hallo F3K Total,

das war die Ursache!
Vielen Dank für Deine Hilfe!
Gruß
Jürgen
DELL Inspiron 6400, Linux Mint 17.3 (KDE), LO 5.4.3.2

jburchardi
Beiträge: 10
Registriert: Di 2. Aug 2011, 22:24
Wohnort: München

Re: Dialog in LO 4.0.33

Beitrag von jburchardi » Di 11. Jun 2013, 18:29

Bin jetzt daraufgekommen, dass die Eingabe eines Parameters in eine Base-Abfrage ganz einfach geht.
In der WHERE-Klausel wird anstelle eines festen Wertes eine Parameter-Abfrage angegeben, sieht z. B. so aus:

SELECT "Ansicht1".*, YEAR( "redat" ) FROM "Ansicht1" AS "Ansicht1" WHERE YEAR( "redat" ) = :Geschäftsjahr

Bei der Ausführung der Abfrage geht dann ein Fenster auf, in dem nach dem "Geschäftsjahr" gefragt wird.
Vielleicht hilft es jemandem weiter.
Jürgen
DELL Inspiron 6400, Linux Mint 17.3 (KDE), LO 5.4.3.2


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten