BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice 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 OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

verschachtelte Dialoge funktionieren nicht richtig

Alles zur Programmierung im OpenOffice.org
Antworten
MartinGü
Beiträge: 8
Registriert: Di 12. Jan 2016, 23:47

verschachtelte Dialoge funktionieren nicht richtig

Beitrag von MartinGü » Sa 20. Aug 2016, 21:36

Hallo

Bei meinem jüngsten Projekt hab ich einige Probleme:

Ich möchte von einem Grund-Dialog aus andere Dialoge (z.b. dialog uebungsuchen) öffnen, aus diesen heraus wieder einen anderen. Ich schließe alle Dialoge (außer dem Grund Dialog) immer nach Benutzung mit dlg.endexecute(). Trotzdem kann ich nachdem ich wieder zum Grunddialog zurückgekehrt bin den dialog uebungsuchen nicht mehr erneut starten. Ich hab keine Ahnung warum...

Angehängt ist meine bei weitem noch nicht funktionierende Calc Datei, aber das Problem stellt es glaub ich gut da ;)

Vielleicht hat jemand einen Tipp für mich.

Alles Liebe Martin
Dateianhänge
Reha für Forum.ods
(33.97 KiB) 234-mal heruntergeladen

MartinGü
Beiträge: 8
Registriert: Di 12. Jan 2016, 23:47

Re: verschachtelte Dialoge funktionieren nicht richtig

Beitrag von MartinGü » So 21. Aug 2016, 01:19

Hallo

Hab meinen Code etwas umgestellt sodass es jetzt besser funktioniert, allerdings hab ich immer noch folgendes Problem. Ich hantle mich durch meine Dialoge und schließe am Schluss alle und dennoch bleiben Makros am laufen die nicht mehr laufen sollten ;) (die ich dann mit Strg - Alt - Q händisch killen muss)

Ich hab keine Ahnung warum, ich schließe alles mit dlgxy.endexecute(), hab keine Endlosschleifen etc..

Meine Vermutung ist dass mit dlgxy.endexecute() doch nicht alles abgeschlossen ist? by the way was bei folgendem Code passiert ist interessant:

Code: Alles auswählen

dim dlguebersicht as object
dim index as integer

sub main
Dialoglibraries.Loadlibrary("Standard")
dlguebersicht= CreateUnoDialog(Dialoglibraries.Standard.DlgUebersicht)
dlguebersicht.execute()
index=2
msgbox(index)
end sub

sub Cmd1_Click()
index=1
dlguebersicht.endexecute()
msgbox(index)
end sub
Ausgegeben wird mir zwei Msgboxen, zuerst eine mit 1 dann eine mit 2. Kann mir vielleicht jemand helfen genau zu verstehen wie das abläuft. Was genau macht dlgxy.endexecute() ?
Dateianhänge
für Forum.ods
(35.91 KiB) 250-mal heruntergeladen

F3K Total
Beiträge: 1007
Registriert: Mo 1. Aug 2011, 00:03

Re: verschachtelte Dialoge funktionieren nicht richtig

Beitrag von F3K Total » So 21. Aug 2016, 13:25

Moin,
ich versuche es:
  • Nach

    Code: Alles auswählen

    dlguebersicht.execute()
    im Makro main wird der Dialog dlguebersicht ausgeführt und angezeigt
  • Das Makro main stoppt an dieser Stelle.
  • Wenn du nun aus dem sichtbaren Dialog das zweite Makro Cmd1_Click() per Schaltfläche startest, wird dies ausgeführt, die Messagebox mit dem Index 1 erscheint.
  • Nachdem du den Dialog beendet hast, ob per endexecute oder Kreuz oben rechts, läuft main in der Zeile nach

    Code: Alles auswählen

    dlguebersicht.execute()
    weiter, die Messagebox mit dem Index 2 erscheint.
Ich glaube, ein Dialog wird mit

Code: Alles auswählen

odlgxy.dispose()
komplett aus dem Speicher entfernt.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

MartinGü
Beiträge: 8
Registriert: Di 12. Jan 2016, 23:47

Re: verschachtelte Dialoge funktionieren nicht richtig

Beitrag von MartinGü » Mo 22. Aug 2016, 22:30

Dankeschön F3K

Mein Verständnisproblem ist wie der Interpreter den Ablauf steuert. So wie im Beispiel oben führt er ja zuerst das makro Cmd1_Click komplett aus, also bis zum end sub und kehrt erst dann zur sub main zurück um weiterzumachen und die msgbox mit dem index 2 anzuzeigen.

Wenn es dann ein bisschen komplizierter wird also mit if verschachtelungen etc. in denen dialoge mit .execute() aufgerufen werden und .endexecute() beendet werden, verstehe ich nicht wie genau der Interpreter das umsetzt.

Liebe Grüße
Martin

Antworten