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.