❤️ 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. 🤗

Probleme beim Laden eines Dialogs

Alles zur Programmierung im LibreOffice.
Antworten
Proma
Beiträge: 44
Registriert: Di 24. Sep 2024, 16:53

Probleme beim Laden eines Dialogs

Beitrag von Proma » Mi 10. Sep 2025, 16:24

Hallo liebe Experten,

derzeit beschäftige ich mich in LO mit Dialogen. Nachdem ich mir ein recht einfaches Muster gebastelt hatte, wollte ich diesen Dialog testweise per Makro öffnen, bin aber zunächst kläglich gescheitert, als ich es mit der Function LoadDialog() aus den Anwendungsmakros und -dialogen versucht hatte. Obwohl diese Bibliothek ordnungsgemäß geladen war, hat das Makro in der letzten Zeile (beim Setzen des Rückgabewerts) abgebrochen mit der Fehlermeldung

BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.container.NoSuchEIementException
Message: Dg_01_Vorbereiten

Erstaunlicherweise hat dasselbe Makro dann aber problemlos meinen Dialog geöffnet, nachdem ich es in ein Modul derselben Bibliothek kopiert habe, in der sich auch das aufrufende Makro und der zu öffnende Dialog befinden. Daraus schließe ich, dass der Parameter LibName von mir nicht nur den Namen der Bibliothek erwartet sondern auch das Dokument, in dem sich diese Bibliothek befindet, sofern es nicht das momentan aktive Dokument ist.

Meine Ausstattung:
Windows 11, LO 25.2.5.2

Verhält es sich tatsächlich so oder sehe ich Gespenster?

Bin für jede Hilfe dankbar und freue mich jetzt schon darauf, wieder etwas dazu zu lernen.
Vielen Dank vorab und liebe Grüße
vom Martin

Mit den beiden nachstehend gezeigten Makros gelingt es mir nun, den Dialog zu öffnen. Trotzdem würde ich aber lieber mit den Bordmitteln von LO arbeiten.

Code: Alles auswählen

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

Sub Dialog1Show()
  objDlg = pLoadDialog("Standard", "Dg_01_Vorbereiten")
  objDlg.Execute()
End Sub


Function pLoadDialog(ByVal strLib As String, _
                     ByVal strDlg As String, _
            Optional ByVal objCnt As Variant)

' Lädt einen benutzerdefinierten Dialog.
'
' Parameter:
' strLib                Name der Bibliothek (Speicherort des Dialogs) 
' strDlg                Name des Dialogs
' objCnt     [Optional] Name des Containers für die Bibliothek mit dem Dialog

  Dim objLib    As Object
  Dim objLibDlg As Object
  Dim objRtmDlg As Object

  If IsMissing(objCnt) Then objCnt = DialogLibraries

  objCnt.LoadLibrary(strLib)
  objLib = objCnt.GetByName(strLib)
  objLibDlg = objLib.GetByName(strDlg)
  objRtmDlg = CreateUnoDialog(objLibDlg)
  pLoadDialog() = objRtmDlg
End Function



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