Wir sind auf Ihre Unterstützung angewiesen!
💚 BITTE helfen Sie uns HEUTE mit einer SPENDE 💚
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

bekomme ein Dialog auch nicht geschlossen

Alles zur Programmierung im LibreOffice.
Antworten
K-LOFF
Beiträge: 101
Registriert: Di 17. Mai 2011, 15:38
Wohnort: NDS

bekomme ein Dialog auch nicht geschlossen

Beitrag von K-LOFF » Sa 6. Jun 2020, 12:31

moin,

habe mir was übern Dialog zusammen gesucht, bekomme diesen aber nicht geschlossen.
Das ist dazu mein Code:

Code: Alles auswählen

Dim oDialog1 As Object
'-------------------------------------------------
Sub Begin
	Dialog1Show
End Sub
'-------------------------------------------------
Sub Dialog1Show
    DialogLibraries.LoadLibrary("Standard")
    oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
    oDialog1.Execute()
End Sub
'-------------------------------------------------
Sub Btn2_Click '              Abbrechen
	oDialog1.setVisible(False)
	oDialog1.endexecute()
		oDialog1.dispose()
End Sub
Die Sub 'Btn2_Click' ist wirkungslos. Wie bekomme ich den Dialog geschlossen?
gruss

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

Re: bekomme ein Dialog auch nicht geschlossen

Beitrag von craig » Sa 6. Jun 2020, 12:59

Hallo,

Code: Alles auswählen

Dim oDialog1 As Object
'-------------------------------------------------
Sub Begin
	Dialog1Show
End Sub
'-------------------------------------------------
Sub Dialog1Show
    DialogLibraries.LoadLibrary("Standard")
    oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
    oDialog1.Execute()
End Sub
'-------------------------------------------------
Sub Btn2 '              Abbrechen
'	oDialog1.setVisible(False)
	oDialog1.endexecute()
'		oDialog1.dispose()
End Sub
Mit oDialog1.setVisible(False) setzt Du den Dialog auf nicht
sichtbar, kurioserweiser bleibt er in diesem Fall trotzdem sichtbar. Vermutlich weil nur ein Dialog verwendet wird.
Weil unsichtbar, führt dies zu dem Konflikt, dass das Event oDialog1.endexecute() nicht ausführbar ist.

Sollte Office abstürzen, wenn oDialog1.dispose() ausgeführt wird, dann bitte auskommentieren.
Ich weise aber daraufhin, wenn Du mal einen Listener programmierst, muss dispose()
für das Listener-Ereignis unbedingt vorhanden sein, sonst wird dieses nicht korrekt beendet.

----------------------------------------------------------------------
Dies funktioniert bei mir:

Code: Alles auswählen

Sub Btn2 '              Abbrechen
	oDialog1.endexecute()
End Sub

Code: Alles auswählen

Sub Btn2_Click  
Diese VBA-/VB-typische Anweisung verwende ich grundsätzlich nur,
bei Listener-Ereignissen, weil diese dort unbedingt erforderlich sind.
siehe hier...
Deshalb vermeide ich Unterstriche bei gewöhnlichen Routine- und Funktionsnamen.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

K-LOFF
Beiträge: 101
Registriert: Di 17. Mai 2011, 15:38
Wohnort: NDS

Re: bekomme ein Dialog auch nicht geschlossen

Beitrag von K-LOFF » Sa 6. Jun 2020, 14:00

@ craig: Danke schön. Das hat schon mal geklappt.

Beim Testen davor, ist mir der ganze Rechner abgeschmiert. Das hab ich dabei noch nie gehabt.

Mal sehen, ob ich die anderen Buttons auch hinbekomme.
gruss

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

Re: bekomme ein Dialog auch nicht geschlossen

Beitrag von craig » Sa 6. Jun 2020, 14:55

Hallo,
Beim Testen davor, ist mir der ganze Rechner abgeschmiert. Das hab ich dabei noch nie gehabt.
Der Dispose-Bug besteht schon länger :x
Betrifft scheinbar nur das saubere Entladen von Dialogen.
Dannenhöfer hat geschrieben:Aber Achtung um den Dialog bei Bedarf wirklich aus dem Speicher zu löschen muß noch Dialog.dispose() ausgeführt werden.
Leider führt der Befehl bei einigen Installationen zu Abstürzen. Daher muß man unter Umständen darauf verzichten.
Dannenhöfer: Siehe hier...
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten