Folgendes Szenario:
Habe ein calc-Dokument mit 4 Tabellen (Sheets). Nach dem Öffnen des Dokuments soll ein Dialog aufgeblendet werden, in dem der Anwender durch Klick auf einen Button je nach Auswahl in eine der 4 Tabellen geleitet wird.
Dialog-Start über
Code: Alles auswählen
public sub DialogBox_Start()
DialogLibraries.loadLibrary("Standard")
oDialogDesc = DialogLibraries.getByName("Standard").getByName("AUSWAHL_DIALOG")
oDialog = CreateUnoDialog(oDialogDesc)
oDialog.execute()
oDialog.dispose()
end sub
Im Dialog selbst wird dann beim Klick auf den Button der Dialog mittels
Code: Alles auswählen
oDialog.endexecute()
Code: Alles auswählen
ThisComponent.CurrentController.SetActiveSheet(ThisComponent.Sheets.getByName(_tblname))
Es wird aber nicht die gewünschte, sondern die zuletzt aktive Tabelle angesprungen. Die zuletzt aktive ist die, welche beim letzten Speichern aufgeblendet war.
Generell funktioniert diese Methode des Tabellenaufrufs aber. Ist getestet.
Das Problem scheint am Aufrufzeitpunkt Ansicht wurde erzeugt des Dialogs zu liegen. Irgendwie ist das Dokument dabei noch nicht vollständig geladen. Nutzt man das Ereignis Dokument aktivieren wird der Dialog bei jedem Fokus-Erhalt des calc-Fensters neu gestartet. Dann funktionierts, allerdings erst beim zweiten Aufruf (erneuter Fokus-erhalt). Bei Dokument öffnen schlägts fehl. Rumexperimentieren mit anderen Ereignissen brachte auch keinen Erfolg.
Bin etwas ratlos. Vielleicht hat ja einer von euch noch ne Idee. Evtl. mit listener auf wirklich passendes Ereignis. Bin auf eure Vorschläge gespannt.
MfG