Speicherort für Formulare

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Speicherort für Formulare

Beitrag von gogo »

Tach zusammen!

Ich bin jetzt schon ein wenig in die Tiefen der Base Programmierung vorgedrungen, aber eines stört mich wirklich:

Warum kann man nicht auf alle Formulare mit

Code: Alles auswählen

Form=ThisComponent.DrawPage.Forms.GetByName("Name des Formulars")
zugreifen? Mir ist schon klar, dass sich die Formulare die im Base Fenster zu sehen sind nicht alle im selben Container befinden, aber wie kann ich

a: Herausfinden in welchem Container sich ein Formular befindet? Und wie kann ich dann dieses anderswo gespeicherte Formular ansprechen? und
b: Verhindern, dass sich ein Formular irgendwo im Nirgendwo abspeichert?

Ich träume mal davon, dass man in einer DB alle Formulare und Reports so abspeichert, dass man per "ThisComponent.DrawPage.Forms." zugreifen kann.

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Speicherort für Formulare

Beitrag von DPunch »

Aloha
gogo hat geschrieben:Warum kann man nicht auf alle Formulare mit

Code: Alles auswählen

Form=ThisComponent.DrawPage.Forms.GetByName("Name des Formulars")
zugreifen?
Es gibt zwei Arten von "Formularen":
a) Die Textdateien, die Du im Base-Fenster unter dem Punkt "Formulare" findest (OO Wiki: Text Documents - schau Dir mal das Bild an)
b) diese Textdateien beherbergen auf ihrer Drawpage Forms, welche z.B. an ein RowSet gebunden sein können oder einfach nur ihrerseits Kontrollelemente beherbergen (OOo Wiki: Forms)

In Deinem Codeschnippsel versuchst Du auf letzteres zuzugreifen, ich verstehe Dein Problem aber so, dass Du auf die sogenannten "Formulare" von Base zugreifen willst.
Das würdest Du z.B. per Makro aus einem geöffneten Formular heraus so machen:

Code: Alles auswählen

	oDoc = thisComponent
	oFormDocuments = oDoc.Parent.FormDocuments
	aElementNames = oFormDocuments.ElementNames
	sForms = ""
	For i = LBound(aElementNames) To UBound(aElementNames)
		sForms = sForms & Chr(13) & aElementNames(i)
	Next i
	MsgBox "In dieser Base-Datei gespeicherte Formulare:" & Chr(13) & sForms, 64, "Formulare"
Mir ist schon klar, dass sich die Formulare die im Base Fenster zu sehen sind nicht alle im selben Container befinden
Doch, das tun sie, sie sind alle in Deiner .odb Datei gespeichert - ansonsten wüsste die geöffnete Datenbank-Datei ja schliesslich nicht, welche "Formulare" überhaupt zu ihr gehören.
Antworten