Formular Dokument aus Starbasic öffnen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Formular Dokument aus Starbasic öffnen

Es bleibt schwierig

von chrdz » Do, 20.04.2006 11:34

Hallo Thomas,
insgesamt hatte ich mir das so vorgestellt, wie Du es in Deiner letzten Antwor geschrieben hast.
Code:
DataBaseContext = createUNOService("com.sun.star.sdb.DatabaseContext")
forms = DatabaseContext.getByName("Dateiname").DatabaseDocument.getFormDokuments()
So ähnlich habe ich das auch gemacht. Du hilfst mir jedenfalls Variablen und Zeilen zu sparen.

Das Dokument
oMyForm = forms.getByName("Mein_Formular_Name")
' und das dazugehörige Dokument:
oMyFormDoc = oMyForm.getComponent()
bekomme ich auch hin.

Jetzt die neue Frage:
wie komme ich an die Methoden von oMyFormDoc.

Bei mir sieht es im Moment so aus:

Code: Alles auswählen

Sub probiere
Dim DatabaseContext as Object
Dim forms as Object
Dim oMyForm as Object
Dim oMyFormDoc as Object
Dim Url as String
Dim Doc as Object
Dim dummy()
DataBaseContext = createUNOService("com.sun.star.sdb.DatabaseContext")
forms = DatabaseContext.getByName("Angebot").DatabaseDocument.getFormDocuments()
oMyForm = forms.getByName("04 Texte")

' und das dazugehörige Dokument:
oMyFormDoc = oMyForm.getComponent()
Url = "private:factory/swriter"
Doc = StarDesktop.LoadComponentFromURL(Url,"myframe",0,dummy())
Doc.getCurrentController()
oMyFormDoc.currentController.frame.activate()
End Sub
Somit habe ich jetzt zwar ein neues Dokument (vielleicht auch einen Frame) aber...

Wäre schön, wenn Du mir noch einen kleinen Anstoß geben könntes.

Grüße
Christian

von Toxitom » Mi, 19.04.2006 17:57

Hey Christian,
Das Makro wird innerhalb einer Datenbankanwendung(Base) ausgeführt
Genau hier liegt auch das Problem. Base selbst (das Base-Dokument) kann keine Makros speichern - die sind dann entweder global abgelegt (Dateiort "Meine Makros") oder eben innerhalb eines als Formular genutzten Writer-Dokumentes.
Dein Form-Code ist insofern nicht aussagekräftig, als der Startteil fehlt.
Wie ereichst du das Objekt "Forms" ?
Möglicherweise über den klassischen Weg :

Code: Alles auswählen

DataBaseContext = createUNOService("com.sun.star.sdb.DatabaseContext")
forms = DatabaseContext.getByName("Dateiname").DatabaseDocument.getFormDokuments()
Dann könntest du dein gewünschtes Formular weiter so erhalten:

Code: Alles auswählen

oMyForm = forms.getByName("Mein_Formular_Name")
' und das dazugehörige Dokument:
oMyFormDoc = oMyForm.getComponent()
Und jetzt hast du ein ganz normales Dokument (Writer) mit allen Eigenschaften und Methoden eines Writerdokumentes - sollte das schon geöffent sein, so hat es einen Controller und einen Frame - dann kannst du es so in Vordergrund bringen:

Code: Alles auswählen

oMyFormDoc.currentController.frame.activate()
Ich bezweifele aber, dass du bereits ein Frame dafür hast - also musst du es wahrscheinlich zunächst ganz normale laden (über LoadURL oder eben in eine aktiven Frame einbringen :wink: )

Na ja, so oder so ähnlich wird es funktionieren.

Gruss
Thomas

von chrdz » Mi, 19.04.2006 16:28

Hallo Toxitom,

das chr steht für Christian das dz für meinen Nachnamen.

Insgesamt hast Du mich schon mal in eine Richtung geschubst. Leider begreife ich nicht. Bin wohl doch zu neu. Das Makro wird innerhalb einer Datenbankanwendung(Base) ausgeführt. Dort sind mehrere Formulare gespeichert.

mit
'For I = 0 to Forms.Count -1
'Formular = Forms.getByIndex(I)
'MsgBox Formular.name
'Next I
erhalte ich alle Namen der vorhandenen Formulare.

Mein definitives Problem ist, dass ich das gewünschte Formular nicht auf den Bildschirm bekomme. :evil:

von Toxitom » Mi, 19.04.2006 12:42

Hey chrdz (...hmm, komischer Name...)
Ich möchte aus einem Formular über einen Push Button ein anderes Formular starten. Bisher sieht mein Code so aus.
immer mal langsam... was meinst du genau? Formulare sind Bestandteile von Dokumenten (also eines Calc-Dokumentes, eines Writer-Dokumentes...) und wenn das Dokument gestartet ist, ist auch gleichzeitig das Formualr gestartet. Das ist nicht trennbar. Hast du verschiedene Formualre im gleichen Dokument, sind die alle schon "gestartet", möglicherweise aber nicht sichtbar weil auf einer anderen Seite plaziert. Dann musst du eben dorthin springen.

Deinem Code entnehme ich, dass du mit Datenbanken arbeitest. Dort ist es aber genauso. Alle Formulare sind in Writer-Dateien untergebracht, die wiederum Bestandteil des Base-Containers sind. Starte das Dokument - und es startet das Formular. Wahrscheinlich ist der Formularname identisch mit dem Dokumentennamen - mus aber nicht sein.

Also, such in diese Richtung.

Viele Grüße
Thomas

Formular Dokument aus Starbasic öffnen

von chrdz » Mi, 19.04.2006 12:05

Mein Problem:
Ich möchte aus einem Formular über einen Push Button ein anderes Formular starten. Bisher sieht mein Code so aus.

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Angebot")
'call Properties (DataSource)
Bookmarks = DataSource.DatabaseDocument()
Forms = Bookmarks.FormDocuments
Formular = Forms.getByName("04 Texte")
??? Formular.execute() ???
End Sub

Das gewünschte Formular finde ich noch, allerdings hörts dann bei mir auf. Gegoogelt und die Dokumentationen angeschaut habe ich schon. Leider bisher ohne Erfolg.

Danke für die Hilfe

Nach oben