Code ausführen bei schließen einer Form

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Tim1202
**
Beiträge: 30
Registriert: Sa, 07.05.2005 18:57
Wohnort: Utting

Code ausführen bei schließen einer Form

Beitrag von Tim1202 »

Hallo,

ich hab wieder mal n kleines Problemchen:
Ich hab ein Dialogfenster bei dem beim Schließen (egal ob Abbrechen-Button oder das Kreuz oder die ESC-Taste) ein Code ausgeführt werden soll (ThisComponent.UnlockControllers).

- Der Event Unload findet anscheinend nur bei schließen der Datei statt.
- Der Event LostFocus findet anscheinend nur statt, wenn nicht die Textfelder der Form sondern wirklich die Form den Focus verliert (die hat ihn aber ja nicht)

Und wer mir das beantworten kann, der weiß vermutlich auch, was ich falsch mache, wenn beim ersten Aufruf des Dialogs nach dem öffnen der Datei eine Fehlermeldung erscheint, weil ich erst per Makros/Dialoge verwalten den Dialog aktivieren muss.

Vielen Dank für jede Anregung und noch nen schönen Abend,

Timon Bartsch
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ein Code der nach dem Schließen ausgeführt wird müßte hinter:

<"Dialogobjekt">.execute

stehen.
(bei einem selbsterstellten Dialog)

Ansonsten:
ich verstehe nicht was ThisComponent.UnlockControllers überhaupt damit zu tun hat
nach dem öffnen der Datei eine Fehlermeldung erscheint, weil ich erst per Makros/Dialoge verwalten den Dialog aktivieren muss.
wo kann man das was aktivieren?
warum kommt da überhaupt eine Fehlermeldung? Wie lautet die?

Außerden wäre es sicher hilfreich Version von OOo und Betriebssystem und etwas mehr Details (Code?) anzugeben. Dein Betriebssystem kenne ich nicht und das Du mit Beta 2.0 arbeitest durfte ich raten wegen Bemerkung Makros/Dialoge, was dann aber nicht jeder erkennen wird.


Gruß
Stephan
Tim1202
**
Beiträge: 30
Registriert: Sa, 07.05.2005 18:57
Wohnort: Utting

Beitrag von Tim1202 »

Hallo Stephan,

danke erstmal für deinen Tipp. Dies funktioniert super. :D Ich hatte nicht gedacht, dass der Computer erst nach dem schließen des Dialogs dort weiter macht. :shock:

Zu meinem zweiten Problem:
Erst mal sorry dass ich zuwenig Angaben gemacht habe, für einen selbst ist immer alles sonnenklar. :wink:

Open Office 2.0 Beta (das du das rausgekriegt hast !?! Echt gut)
noch unter Windows 98 (später mal unter Linux)
Dateiname: bestellungsverwaltung.ods (da kommt noch einiges auf mich zu)
der Dialog nennt sich: frmBedarf
der dazugehörende Code ist in: mBedarf (beides in der bestellungsverwaltung.ods unter Standard)

Beim starten des Makros, das die Form aufruft kommt die Fehlermeldung:
Aktion nicht unterstützt
Ungültiger Prozeduraufruf
bei der 2.Zeile des folgenden Code-Auszugs:

Code: Alles auswählen

     Dim frmBedarf as Object
     frmBedarf = createUnoDialog(DialogLibraries.Standard.frmBedarf)
In dieser Basic-Umgebung sind unten zwei "TABs" bzw. "Reiter" bzw. "Blätter" mit den Namen:
mBedarf (da sind ja die Makros drin)
modul1 (ist eigendlich leer)

Nicht angezeigt sind jedoch die an der gleichen Stelle in die Datei integrierten Blätter:
mTools (kleinere Funktionen)
mKeyHandler (brauch ich wohl nix sagen)
frmBedarf (die so wichtige Form)

Wenn ich dann oben links in der Combobox die Libary bzw. Bibliotek [bestellungsverwaltung.ods].Standard auswähle erscheinen plötzlich die fehlenden Blätter und alles geht wieder. (vorher steht Alle in der Box)

Ach ja, das mit den UnlockConrollers funktioniert nicht so wie ich das im Dokument: "VbaStarBasicXref_1.sxw" von Jim Thompson mit dem Titel "Porting Excel/VBA to Calc/StarBasic" beschrieben ist, dass man damit wie in VBA den Bildschirm abschaltet, damit der Anwender nix mitkriegt, aber dafür werd ich wohl lieber nen neuen Thread beginnen.

Ich hoffe dies war ausführlich genug und es macht sich jehmand die Mühe mir zu helfen:

Vielen Dank nochmal an Stephan und an Alle im vorraus,

Timon
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Die OOo 2.0 Hilfe gibt folgenden Beispielcode an:

Code: Alles auswählen

Sub Dialog1Show
DialogLibraries.LoadLibrary( "Standard" )
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
oDialog1.Execute()
End Sub
initialisierst Du denn die Bibliothek "Standard"?
Nein, ich weiß nicht wieso (da es ja eine Bibliothek des Dokuments ist) nur die Hife sagt es so, also sollte man es tun. Zumindest bei mir behebt es das Problem.
Zur Ursache weiß ich nichts, in 1.1.x geht es IMHO ohne Initialisierung.


Gruß
Stephan
Tim1202
**
Beiträge: 30
Registriert: Sa, 07.05.2005 18:57
Wohnort: Utting

Beitrag von Tim1202 »

Hallo Stephan,

und mal wieder haste mich erleuchtet!

Danke für deine Mühen! Wenns in Foren für gute Tipps Geld gäbe wärst du wohl Reich :wink:

Noch nen schönen Abend,

Timon
Antworten