❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ 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 benden und Funktion ausführen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Rango1278
Beiträge: 4
Registriert: Do 7. Jan 2016, 16:02

Dialog benden und Funktion ausführen

Beitrag von Rango1278 » So 7. Feb 2016, 17:42

Hallo liebe Calc-Gemeinde,

ich habe Peobleme mit dialogen in Calc....
Ich kann einen selbst erstellten Dialog wie unten starten:

DialogLibraries.LoadLibrary("Standard")
objNavigatorDialog = CreateUnoDialog(DialogLibraries.Standard.Navigator)
objNavigatorDialog.Execute


beeneden kann ich diesen aber nur mit dem [X] oben in der rechten Ecke und sonst sind keine aktionen möglich.

Ich habe auf dem selbst erstellten Dialog Schaltflächen die Unterprogramme "functions" aufrufen.
Mit "ObjectVariable.Endexecute wollte ich den Dialog wieder beenden... -> erfolglos.

Nun mein Problem:
Nach dem ich den Dialog aufgerufen habe möchte ich eine "function" ausführen. Wie mache ich das?
Beispiel:
Dialog aufrufen:
DialogLibraries.LoadLibrary("Standard")
objNavigatorDialog = CreateUnoDialog(DialogLibraries.Standard.Navigator)

Unterprogramm:
funcShowMassage -> (MsgBox("Hallo"))
objNavigatorDialog.Execute


Wie führe ich aus dem Dialog die Funktion aus?
Und wie beende ich durch einen selbst erstellten Button den Dialog?

Vielen Dank für eure Hilfe und besten Dank im Voraus!

Gruß Rango1278

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

Re: Dialog benden und Funktion ausführen

Beitrag von musikai » So 7. Feb 2016, 18:30

Zum Aufruf des Dialogs muss execute verwendet werden.
Den Namen Deines Dialog-Objektes ausserhalb des subs mit dim deklarieren, damit Du aus anderen Subs darauf zugreifen kannst.
Zum Beenden mit Button gibt's 2 Möglichkeiten:
Button, dessen Button-Type "Cancel" ist, oder
Button, dessen Button-Type "Default" ist. Damit kannst Du auch Deine Funktionen ausführen.
Z.B mit endexecute in einem sub zum Beenden des Dialogs.

Code: Alles auswählen

dim objNavigatorDialog 
sub StartNavigatorDialog
	DialogLibraries.loadLibrary("Standard")
	objNavigatorDialog = CreateUnoDialog(DialogLibraries.Standard.Navigator)
	objNavigatorDialog.getModel().getByName("TextBox").text = "1"
	objNavigatorDialog.getModel().getByName("TextBox").label = "2"
	objNavigatorDialog.execute()
End Sub

rem-----Button mit Typ "Default": Event ausführen: Makro 
Sub changeNavigatorDialog
objNavigatorDialog .getModel().getByName("TextBox").text = "new text"
objNavigatorDialog .getModel().getByName("TextBox").label = "new Label"
end sub

rem-----Button mit Typ "Default": Event ausführen: Makro 
sub EndNavigatorDialog
objNavigatorDialog .endExecute()
end sub
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

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

Re: Dialog benden und Funktion ausführen

Beitrag von F3K Total » So 7. Feb 2016, 19:27

T'schuldigung, es gibt mindestens noch die meistverwendete Möglichkeit mit einem OK-Button

Code: Alles auswählen

Sub S_Dialog
    DialogLibraries.LoadLibrary("Standard")
    oDialog1 = createunoDialog(DialogLibraries.Standard.Dialog1)
    oTextField1 = oDialog1.getControl("TextField1")
    bDialog = oDialog1.execute
    msgbox "der Dialog gibt """ & bDialog & """ zurück"
    if bDialog Then
        sText = oTextField1.Text
        msgbox("Du hast """ & sText & """ eingegeben und den OK-Button gedrückt")
    else
        sText = oTextField1.Text
        msgbox("Du hast """ & sText & """ eingegeben und den Dialog über das Kreuz oder den Abbrechen-Button abgebrochen")
        exit sub'Abbruch
    endif
    'Weiter
    Print "hier geht es nach dem OK-Button weiter ..."
End Sub
Vorteil: man kann durch den Rückgabewert des Dialogs ermitteln, ob der Dialog mit dem OK-Button als i.O. beendet wurde, oder durch das X bzw. Abbrechen abgebrochen werden soll, siehe Beispiel anbei.
Da braucht man dann kein zusätzliches Makro sondern macht nach der Abfrage des Rückabewertes eben weiter oder bricht ab.
Gruß R
Dateianhänge
Dialog_mit_OK_Button.odt
(27.14 KiB) 271-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

Re: Dialog benden und Funktion ausführen

Beitrag von musikai » Mo 8. Feb 2016, 11:58

Oh, danke! Das wusste ich noch nicht. Jetzt ergibt der button-type OK auch plötzlich Sinn. :P
Das ist für einfache dialoge natürlich ein viel eleganterer weg!
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

Rango1278
Beiträge: 4
Registriert: Do 7. Jan 2016, 16:02

Re: Dialog benden und Funktion ausführen

Beitrag von Rango1278 » Mi 10. Feb 2016, 22:46

Hallo,

vielen Dank für eure Beiträge.... Ich werde in den nächsten Tagen daran arbeiten und Bescheid geben...

Gruß Rango1278


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