Hier erst mal eine allgemeine Einführung in die Verwendung von Formularen.
Formulare können innerhalb von Writer-, Calc- und Präsentation-Dokumenten verwendet
werden.
Sie liegen innerhalb des Dokumentes in einer besonderen "Ebene", der Drawpage. Bei
Textdokumenten gibt es nur eine, bei Calc- und Präsentations-Dokumenten für jedes Tabellenblatt
eine eigene Drawpage.
Alle Formularfunktionen stehen laut Dokumentation nur innerhalb von Text- und Calcdokumenten
zur Verfügung. Leider habe ich noch keine Stelle über die Einschränkungen gefunden.
Innerhalb einer Drawpage sind mehrere Formulare möglich. Man sollte hier den Begriff
vielleicht
auch eher als Gruppe verstehen. Da man auf einer Seite die Formular-Kontrollfelder untereinander
mischen kann, lässt sich durch die Gruppierung nicht automatisch ein sichtbares Formular
darstellen. Viel mehr können die Kontrolfelder vermischt auf der Seite verwendet werden und
verschiedenen Formularen angehören.
In dem obigen Beispiel sieht man vier Kontrollfelder die zu zwei Formularen gehören.
Durch die
Verwendung des Formular-Navigators wird dies angezeigt. Diese Kontrollfelder können beliebig
plaziert werden. Dadurch kann man bei Verwendung mehrerer Formulare auf einer Seite die
Übersicht verlieren oder sich sogar Übersicht schaffen.
Die Kontrollfelder verhalten sich wie die Kontrollfelder für Dialoge und habe ähnliche
Eigenschaften
und Ereignisse. Um mit diesen also in einem Makro zu arbeiten gelten im wesentlichen die
Beispiele für Dialoge und Formulare.
Naja nicht ganz, es gibt noch einen wirklich wesentlichen Unterschied. Kontrollfelder
in Formularen
können mit Datenbanktabellen verknüpft werden. Dazu steht im Eigenschaften-Dialog ein
zusätzliches Register "Daten" zur Verfügung.
Um an die Kontrollfelder von Formularen zu kommen, muß man die Drawpage und das Formular
des Dokumentes aufrufen.
Objektstruktur
Zugriff auf die Kontrollfelder:
Der erste wichtige Unterschied ist, dass es die Methode "getControl" nicht
gibt. Der Zugriff auf
Kontrollfelder erfolgt einfach über den Namen: getByName().
Fangen wir mit einem Textdokument an.
odoc=thisComponent
odrawpage=odoc.drawpage
oform=odrawpage.forms.getbyIndex(0)
oder
oform=odrawpage.forms.getbyName("Standard")
oControl=oform.getByName("TextBox")
Ein Objekt eines Formulares kann man über den Index (getByIndex() ) oder über den
Namen
(getByName() ) erhalten. Dies gilt auch für Calc-Dokumenten.
Tabellen:
odoc=thisComponent
oSheet=odoc.sheets(0)
odraw1=oSheet.drawpage
form1=odraw1.forms.getbyIndex(0)
oContr=form1.getbyname("TextBox")
Bei Tabellen gibt es für jedes Sheet eine eigene DrawPage. Dementsprechend muß man
das
gewünschte Sheet vorher auswählen.