Seite 1 von 1

Dialog in LO 4.0.33 [Gelöst]

Verfasst: Mi 5. Jun 2013, 00:13
von jburchardi
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) 4537 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

Re: Dialog in LO 4.0.33

Verfasst: Mi 5. Jun 2013, 08:43
von pmoegenb
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).

Re: Dialog in LO 4.0.33

Verfasst: Mi 5. Jun 2013, 21:45
von jburchardi
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

Re: Dialog in LO 4.0.33

Verfasst: Mi 5. Jun 2013, 22:32
von F3K Total
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

Re: Dialog in LO 4.0.33

Verfasst: Do 6. Jun 2013, 21:42
von jburchardi
Hallo F3K Total,

das war die Ursache!
Vielen Dank für Deine Hilfe!
Gruß
Jürgen

Re: Dialog in LO 4.0.33

Verfasst: Di 11. Jun 2013, 18:29
von jburchardi
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