4.2.5 Wie geht man mit Formularen um?
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.

graphic

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

graphic


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.