StarOffice 8 Programmierhandbuch für BASIC
  Rechercher uniquement dans ce livre
Télécharger cet ouvrage au format PDF (1551 Ko)

Kapitel 11 Dialoge

Sie können StarOffice-Dokumente durch benutzerdefinierte Dialogfenster und Formulare erweitern. Diese lassen sich mit StarOffice Basic-Makros verknüpfen, wodurch die Einsatzmöglichkeiten von StarOffice Basic erheblich erweitert werden. In Dialogen können beispielsweise Datenbankinformationen angezeigt oder Anwender schrittweise durch den Erstellungsprozess eines neuen Dokuments in Form eines AutoPiloten geführt werden.

Arbeiten mit Dialogen

StarOffice Basic-Dialoge bestehen aus einem Dialogfenster, das Textfelder, Listenfelder, Optionsfelder und eine Reihe anderer Steuerelemente enthalten kann.

Erstellen von Dialogen

Dialoge können mit Hilfe des StarOffice-Dialog-Editors auf dieselbe Weise erstellt und strukturiert werden, wie mit StarOffice Draw:

StarOffice- Dialog-Entwurfsfenster.

Prinzipiell ziehen Sie die gewünschten Steuerelemente aus der Design-Palette (rechts) in den Dialogbereich, wo deren Position und Größe definiert werden können.

Das Beispiel zeigt einen Dialog, der ein Beschriftungs- und ein Listenfeld enthält.

Ein Dialog mit einem Beschriftungs- und einem Listenfeld im Entwurfsmodus.

Mit folgendem Code können Sie einen Dialog öffnen:

Dim Dlg As Object

DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.DlgDef)

Dlg.Execute()
Dlg.dispose()

CreateUnoDialog erzeugt dabei ein Objekt namens Dlg, das auf den verknüpften Dialog verweist. Vor dem Erzeugen des Dialogs muss sichergestellt sein, dass die verwendete Bibliothek (im Beispiel Standard) geladen ist. Ist dies nicht der Fall, führt die LoadLibrary-Methode diese Aufgabe durch.

Ist das Dialog-Objekt Dlg initialisiert, so kann der Dialog mit der Execute-Methode angezeigt werden. Dialoge wie dieser werden als "modal" bezeichnet, da sie keine weitere Programmaktion zulassen, solange ihr Fenster nicht geschlossen wurde. Während der gesamten Öffnungsphase dieses Dialogs verbleibt das Programm im Aufruf Execute.

Die dispose-Methode am Ende des Codes gibt die von dem Dialog verwendeten Ressourcen wieder frei, nachdem das Programm beendet wurde.

Schließen von Dialogen

Schließen mit "OK" oder "Abbrechen"

Enthält ein Dialog eine der Schaltflächen OK oder Abbrechen, wird der Dialog durch Klicken auf eine dieser Schaltflächen automatisch geschlossen. Weitere Informationen zum Arbeiten mit diesen Schaltflächen erhalten Sie in diesem Kapitel unter "Dialog-Steuerelemente im Detail".

Wird ein Dialog unter Verwendung einer Schaltfläche OK geschlossen, gibt die Execute-Methode einen Rückgabewert von 1 zurück, ansonsten den Wert 0.

Dim Dlg As Object

DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.MyDialog)

Select Case Dlg.Execute()
Case 1
   MsgBox "OK geklickt"
Case 0
   MsgBox "Abbrechen geklickt"
End Select

Schließen mit der Schaltfläche "Schließen" in der Titelleiste

Ein Dialog kann gegebenenfalls auch durch Klicken auf die Schaltfläche "Schließen" in der Titelleiste des Dialogfensters geschlossen werden. In diesem Fall gibt die Execute-Methode des Dialogs wie beim Klicken auf die Schaltfläche "Abbrechen" den Wert 0 zurück.

Schließen mit einem expliziten Programmaufruf

Ein geöffnetes Dialogfenster kann auch mit der endExecute-Methode geschlossen werden:

Dlg.endExecute()

Zugriff auf einzelne Steuerelemente

Ein Dialog beliebig viele Steuerelemente enthalten. Sie können auf diese Elemente mit der getControl-Methode zugreifen, die den Namen des Steuerelements zurückgibt.

Dim Ctl As Object

Ctl = Dlg.getControl("MyButton")
Ctl.Label = "New Label"

Dieser Code ermittelt das Objekt für das Steuerelement MyButton und initialisiert dann die Objektvariable Ctl mit einer Referenz auf dieses Element. Anschließend setzt der Code die Label-Eigenschaft des Steuerelementes auf den Wert New Label.


Hinweis –

Bei den Namen von Steuerelementen unterscheidet StarOffice Basic die Groß- und Kleinschreibung.


Arbeiten mit dem Modell (Model) von Dialogen und Steuerelementen

Die Unterscheidung zwischen sichtbaren Programmelementen (Ansicht (View)) und den dahinter liegenden Daten bzw. Dokumenten (Modell (Modell)) findet sich an zahlreichen Stellen in der StarOffice API. Zusätzlich zu den Methoden und Eigenschaften von Steuerelementen verfügen sowohl Dialog- als auch Steuerelementobjekte über ein untergeordnetes Model-Objekt. Dieses Objekt gestattet Ihnen den direkten Zugriff auf den Inhalt eines Dialog- oder Steuerelements.

In Dialogen verläuft die Grenze zwischen Daten und Darstellung jedoch nicht immer so klar wie in den anderen API-Bereichen von StarOffice. Elemente der API stehen sowohl in der Ansicht (View) als auch im Modell (Model) zur Verfügung.

Der programmgesteuerte Zugriff auf das Modell von Dialog- und Steuerelementobjekten erfolgt über die Eigenschaft Model.

Dim cmdNext As Object

cmdNext = Dlg.getControl("cmdNext")
cmdNext.Model.Enabled = False

Das Beispiel deaktiviert die Schaltfläche cmdNtext innerhalb des Dialogs Dlg unter Zuhilfenahme des Model-Objekts von cmdNtext.

Eigenschaften

Name und Titel

Jedes Steuerelement verfügt über seinen eigenen Namen, der mit folgender Model-Eigenschaft abgefragt werden kann:

  • Model.Name (String): Name des Steuerelements.

Der Titel, der in der Titelleiste angezeigt wird, kann mit folgender Model-Eigenschaft festgelegt werden:

  • Model.Title (String): Titel des Dialogs (nur bei Dialogen).

Position und Größe

Größe und Position eines Steuerelements können mit folgenden Eigenschaften des Model-Objekts abgefragt werden:

  • Model.Height (Long): Höhe des Steuerelements (in ma-Einheiten).

  • Model.Width (Long): Breite des Steuerelements (in ma-Einheiten).

  • Model.PositionX (Long): X-Position des Steuerelements, gemessen vom linken Innenrand des Dialogs (in ma-Einheiten).

  • Model.PositionY (Long): Y-Position des Steuerelements, gemessen vom oberen Innenrand des Dialogs (in ma-Einheiten).

Damit das Aussehen von Dialogen plattformunabhängig ist, verwendet StarOffice die interne Einheit Map AppFont (ma) zur Festlegung von Position und Größe bei Dialogen. Eine ma-Einheit ist definiert als 1/8 der durchschnittlichen Höhe und 1/4 der Breite eines Zeichens der im Betriebssystem definierten Systemschriftart. Durch die Verwendung von ma-Einheiten stellt StarOffice sicher, dass ein Dialog auf unterschiedlichen Systemen und mit verschiedenen Systemeinstellungen stets gleich angezeigt wird.

Sollen Größe oder Position von Steuerelementen zur Laufzeit geändert werden, müssen Sie die Gesamtgröße des Dialogs ermitteln und die Werte für die Steuerelemente an die entsprechenden Teilverhältnisse anpassen.


Hinweis –

Die Twips-Einheit wird durch Map AppFont (ma) ersetzt, um eine optimierte Plattformunabhängigkeit zu erreichen.


Fokus und Tabulator-Reihenfolge

Mit der Tabulatortaste können Sie durch die Steuerelemente in einem Dialog navigieren. Folgende Eigenschaften stehen in diesem Zusammenhang im Modell (Model) der Steuerelemente zur Verfügung:

  • Model.Enabled (Boolean): aktiviert das Steuerelement.

  • Model.Tabstop (Boolean): ermöglicht die Ansteuerung des Steuerelements mit der Tabulatortaste.

  • Model.TabIndex (Long): Position des Steuerelements in der Aktivierungsreihenfolge.

Schließlich bietet das Steuerelement eine getFocus-Methode, die sicherstellt, dass das darunter liegende Steuerelement den Fokus erhält:

  • getFocus: das Steuerelement erhält den Fokus (nur bei Dialogen).

Mehrseitige Dialoge

In StarOffice kann ein Dialog über mehr als eine Registerkarte verfügen. Die Step-Eigenschaft eines Dialogs definiert die aktuelle Registerkarte des Dialogs, während die Step-Eigenschaft eines Steuerelements die Registerkarte festlegt, auf der das Steuerelement angezeigt werden soll.

Hierbei bildet der Step-Wert 0 einen Sonderfall. Wird dieser Wert innerhalb eines Dialogs auf null gesetzt, werden alle Steuerelemente angezeigt, unabhängig von ihrem Step-Wert. Ebenso wird ein Steuerelement, wenn dieser Wert für das Element auf null gesetzt wird, auf allen Registerkarten eines Dialogs angezeigt.

Ein mehrseitiger Dialog im Entwurfsmodus.

Im vorangegangenen Beispiel können Sie also der Trennlinie sowie den Schaltflächen Abbrechen (Cancel), Zurück (Prev), Weiter (Next) und Fertig stellen (Done) den Step-Wert 0 zuweisen, damit diese Elemente auf allen Seiten angezeigt werden. Die Elemente können auch einer einzelnen Registerkarte zugewiesen werden (z. B. Seite 1).

Der folgende Programmcode zeigt, wie der Step-Wert in den Ereignis-Handlern der Schaltflächen Weiter (Next) und Zurück (Prev) erhöht beziehungsweise verringert werden kann, um so den Status der Schaltflächen zu ändern.

Sub cmdNext_Initiated
   Dim cmdNext As Object
   Dim cmdPrev As Object
   
   cmdPrev = Dlg.getControl("cmdPrev")
   cmdNext = Dlg.getControl("cmdNext")
   
   cmdPrev.Model.Enabled = Not cmdPrev.Model.Enabled
   cmdNext.Model.Enabled = False
   
   Dlg.Model.Step = Dlg.Model.Step + 1
End Sub

Sub cmdPrev_Initiated
   Dim cmdNext As Object
   Dim cmdPrev As Object
   
   cmdPrev = Dlg.getControl("cmdPrev")
   cmdNext = Dlg.getControl("cmdNext")
   
   cmdPrev.Model.Enabled = False
   cmdNext.Model.Enabled = True
   
   Dlg.Model.Step = Dlg.Model.Step - 1
End Sub

Das Beispiel setzt voraus, dass eine globale Variable Dlg vorhanden ist, die auf einen geöffneten Dialog verweist. Die Anzeige des Dialog ändert sich wie folgt:

Seite 1:

Seite 1 eines mehrseitigen Dialogs.

Seite 2:

Seite 2 eines mehrseitigen Dialogs.

Ereignisse

Dialoge und Formulare basieren in StarOffice auf einem ereignisorientierten Programmiermodell, in dem den Steuerelementen Ereignis-Handler zugewiesen werden können. Ein Ereignis-Handler führt bei Eintritt einer bestimmten Aktion eine vordefinierte Prozedur aus, auch wenn es sich bei der Aktion um ein anderes Ereignis handelt. Durch Ereignisbehandlung können sowohl Dokumente oder geöffnete Datenbanken bearbeitet als auch auf andere Steuerelemente zugegriffen werden.

StarOffice-Steuerelemente erkennen verschiedene Arten von Ereignissen, die in jeweils unterschiedlichen Situationen ausgelöst werden können. Diese Ereignisarten lassen sich in vier Gruppen unterteilen:

  • Maussteuerung: Ereignisse, die Aktionen mit der Maus entsprechen (zum Beispiel einfache Mausbewegungen oder Klicks auf eine bestimmte Stelle des Bildschirms).

  • Tastatursteuerung: Ereignisse, die durch Betätigung von Tasten auf der Tastatur ausgelöst werden.

  • Fokusänderung: Ereignisse, die StarOffice beim Aktivieren oder Deaktivieren von Steuerelementen ausführt.

  • Steuerelementspezifische Ereignisse: Ereignisse, die nur im Zusammenhang mit bestimmten Steuerelementen auftreten.

Bei der Arbeit mit Ereignissen müssen Sie sicherstellen, dass der dazugehörige Dialog in der Entwicklungsumgebung von StarOffice erstellt wird und dass er die erforderlichen Steuerelemente bzw. Dokumente enthält (wenn die Ereignisse auf ein Formular Anwendung finden).

Ein Dialog mit zwei Listenfeldern im Entwurfsmodus.

Die vorangehende Abbildung zeigt die Entwicklungsumgebung von StarOffice Basic mit einem Dialogfenster, das zwei Listenfelder enthält. Sie können die Daten mit Hilfe der zwischen den Listenfeldern liegenden Schaltflächen von der einen in die andere Liste verschieben.

Wenn Sie am Bildschirm das Layout anzeigen möchten, müssen Sie die verknüpften StarOffice Basic-Prozeduren erstellen, damit diese von den Event-Handlern aufgerufen werden können. Auch wenn diese Prozeduren in beliebigen Modulen verwendet werden können, ist es das Beste, ihre Verwendung auf zwei Module zu beschränken. Um die Lesbarkeit des Programmcodes zu verbessern, sollten Sie den Prozeduren "sprechende" Namen geben. Das direkte Anspringen allgemeiner Programm-Prozeduren aus einem Makro heraus führt in der Regel zu unübersichtlichem Programmcode. Sie sollten stattdessen eine weitere Prozedur erstellen, die als Einstiegspunkt für die Ereignisbehandlung dient, selbst wenn nur ein einziger Aufruf der Zielprozedur erfolgt. Hierdurch werden die Pflege und das Debuggen des Programmcodes deutlich erleichtert.

Der folgende Beispielcode verschiebt einen Eintrag aus dem linken in das rechte Listenfeld eines Dialogs.

Sub cmdSelect_Initiated
   Dim objList As Object
   lstEntries = Dlg.getControl("lstEntries")
   lstSelection = Dlg.getControl("lstSelection")

   If lstEntries.SelectedItem > 0 Then
      lstSelection.AddItem(lstEntries.SelectedItem, 0)
      lstEntries.removeItems(lstEntries.SelectItemPos, 1)
   Else
      Beep
   End If
End Sub

Wenn diese Prozedur in StarOffice Basic erstellt wurde, können Sie sie über das Eigenschaftenfenster des Dialog-Editors einem erforderlichen Ereignis zuweisen.

Dialog zum Zuweisen von Ereignissen zu Makros.

Im Zuordnungsdialog werden alle StarOffice Basic-Prozeduren aufgeführt. Um einem Ereignis eine Prozedur zuzuweisen, wählen Sie die Prozedur aus und klicken auf Assign (Zuweisen).

Parameter

Das Eintreten eines bestimmten Ereignisses reicht nicht immer aus, um eine angemessene Reaktion auszulösen. Es können zusätzliche Informationen notwendig sein. So wird zur Verarbeitung eines Mausklicks eventuell die Bildschirmposition benötigt, an der die Maustaste gedrückt wurde.

In StarOffice Basic können Sie Objektparameter verwenden, um weitere Informationen über ein Ereignis an eine Prozedur zu übergeben, zum Beispiel:

Sub ProcessEvent(Event As Object)

End Sub

Wie differenziert das Event-Objekt aufgebaut ist und welche Eigenschaften es enthält, hängt von der Art des Ereignisses ab, das den Prozeduraufruf auslöst. In den folgenden Abschnitten werden die Ereignisarten detailliert behandelt.

Unabhängig vom Typ des Ereignisses gewähren alle Objekte Zugriff auf das jeweilige Steuerelement und sein Modell (Model). Auf das Steuerelement greifen Sie mit

Event.Source

zu und auf sein Modell (Model) mit

Event.Source.Model

Mit diesen Eigenschaften können Sie in einem Event-Handler ein Ereignis auslösen.

Maus-Ereignisse

StarOffice Basic erkennt folgende Mausereignisse:

  • Mouse moved: der Anwender bewegt die Maus.

  • Mouse moved while key pressed: der Anwender zieht die Maus bei gedrückter, beliebiger Maustaste.

  • Mouse button pressed: der Anwender drückt eine Maustaste.

  • Mouse button released: der Anwender lässt eine Maustaste los.

  • Mouse outside: der Anwender bewegt die Maus aus dem aktuellen Fenster heraus.

Der Aufbau des verknüpften Ereignisobjekts wird in der Struktur com.sun.star.awt.MouseEvent definiert, die folgende Informationen bereitstellt:

  • Buttons (Short): gedrückte Taste (eine oder mehrere Konstanten gemäß com.sun.star.awt.MouseButton).

  • X (Long): X-Koordinate der Maus, gemessen in Pixel von der linken oberen Ecke des Steuerelements.

  • Y (Long): Y-Koordinate der Maus, gemessen in Pixel von der linken oberen Ecke des Steuerelements.

  • ClickCount (Long): Anzahl der Klicks, die mit dem Mausereignis verknüpft sind (wenn StarOffice ausreichend schnell reagieren kann, ist ClickCount auch bei einem Doppelklick 1, da nur ein Einzelereignis ausgelöst wird).

Die in com.sun.star.awt.MouseButton definierten Konstanten für die Maustasten lauten:

  • LEFT: linke Maustaste.

  • RIGHT: rechte Maustaste.

  • MIDDLE: mittlere Maustaste.

Das folgende Beispiel gibt die Position der Maus sowie die Maustaste, die gedrückt wurde, aus:

Sub MouseUp(Event As Object)
   Dim Msg As String
   Msg = "Keys: "
   If Event.Buttons AND com.sun.star.awt.MouseButton.LEFT Then
      Msg = Msg & "LEFT "
   End If
   If Event.Buttons AND com.sun.star.awt.MouseButton.RIGHT Then
      Msg = Msg & "RIGHT "
   End If
   If Event.Buttons AND com.sun.star.awt.MouseButton.MIDDLE Then
      Msg = Msg & "MIDDLE "
   End If
   Msg = Msg & Chr(13) & "Position: "
   Msg = Msg & Event.X & "/" & Event.Y
   MsgBox Msg
End Sub

Hinweis –

Die VBA-Ereignisse Click und Doubleclick stehen in StarOffice Basic nicht zur Verfügung. Verwenden Sie stattdessen anstelle des Click-Ereignisses das StarOffice Basic-Ereignis MouseUp und bilden Sie das Doubleclick-Ereignis durch eine Änderung der Anwendungslogik nach.


Tastatur-Ereignisse

Folgende Tastaturereignisse stehen in StarOffice Basic zur Verfügung:

  • Key pressed: der Anwender drückt eine Taste.

  • Key released: der Anwender lässt eine Taste los.

Beide Ereignisse beziehen sich auf logische Tastendrücke und nicht auf physikalische Aktionen. Wenn der Anwender mehrere Tasten drückt, um nur ein Zeichen auszugeben (z. B. um ein Akzentzeichen hinzuzufügen), erzeugt StarOffice Basic nur ein Ereignis.

Ein einzelner Druck auf eine Modifizierer-Taste wie die Umschalt- oder Alt-Taste verursacht kein unabhängiges Ereignis.

Informationen über eine gedrückte Taste werden im Event-Objekt bereitgestellt, das StarOffice Basic für die Ereignisbehandlung an die Prozedur übergibt. Es enthält folgende Eigenschaften:

  • KeyCode (Short): Code der gedrückten Taste (Standardwerte gemäß com.sun.star.awt.Key)

  • KeyChar (String): eingegebenes Zeichen (unter Berücksichtigung von Modifizierer-Tasten).

Das folgende Beispiel ermittelt mit Hilfe der Eigenschaft KeyCode, ob die Eingabetaste, die Tabulatortaste oder eine der anderen Steuerungstasten gedrückt wurde. Wurde eine dieser Tasten gedrückt, wird der Name der Taste zurückgegeben, andernfalls das eingegebene Zeichen:

Sub KeyPressed(Event As Object)
   Dim Msg As String
   Select Case Event.KeyCode
   Case com.sun.star.awt.Key.RETURN
      Msg = "Return pressed"
   Case com.sun.star.awt.Key.TAB
      Msg = "Tab pressed"
   Case com.sun.star.awt.Key.DELETE
      Msg = "Delete pressed"
   Case com.sun.star.awt.Key.ESCAPE
      Msg = "Escape pressed"
   Case com.sun.star.awt.Key.DOWN
      Msg = "Down pressed"
   Case com.sun.star.awt.Key.UP
      Msg = "Up pressed"
   Case com.sun.star.awt.Key.LEFT
      Msg = "Left pressed"
   Case com.sun.star.awt.Key.RIGHT
      Msg = "Right pressed"
   Case Else
      Msg = "Character " & Event.KeyChar & " entered"
   End Select
   MsgBox Msg
End Sub

Informationen zu weiteren Tastatur-Konstanten finden Sie in der API-Referenz unter der Konstantengruppe com.sun.star.awt.Key.

Fokus-Ereignisse

Fokus-Ereignisse zeigen an, ob ein Steuerelement den Fokus erhält oder verliert. Mit diesen Ereignissen können Sie beispielsweise bestimmen, ob ein Anwender die Bearbeitung eines Steuerelements abgeschlossen hat, damit Sie nun andere Elemente eines Dialogs aktualisieren können. Folgende Fokus-Ereignisse sind verfügbar:

  • When receiving focus: Element erhält den Fokus.

  • When losing focus: Element verliert den Fokus.

Die Event-Objekte der Fokus-Ereignisse sind wie folgt aufgebaut:

  • FocusFlags (Short): Ursache des Fokuswechsels (Standardwert gemäß com.sun.star.awt.FocusChangeReason).

  • NextFocus (Object): Objekt, das den Fokus erhält (nur für das When losing focus-Ereignis).

  • Temporary (Boolean): der Fokus wurde vorübergehend verloren.

Steuerelementspezifische Ereignisse

Neben den vorangehenden Ereignissen, die von allen Steuerelementen unterstützt werden, sind einige steuerelementspezifische Ereignisse vorhanden, die nur für bestimmten Steuerelemente definiert sind. Bei den wichtigsten dieser Ereignisse handelt es sich um:

  • When Item Changed: der Wert eines Steuerelements hat sich geändert.

  • Item Status Changed: der Status eines Steuerelements hat sich geändert.

  • Text modified: der Text eines Steuerelements hat sich geändert.

  • When initiating: eine Aktion, die bei Auslösung des Steuerelements ausgeführt werden kann (z. B. das Drücken einer Taste).

Beachten Sie bei der Arbeit mit Ereignissen, dass manche Ereignisse, wie z. B. das When initiating-Ereignis, jedes Mal ausgelöst werden können, wenn mit der Maus auf bestimmte Steuerelemente geklickt wird (z. B. auf Optionsfelder). Dabei wird mit keiner Aktion geprüft, ob sich der Status des Steuerelements tatsächlich geändert hat. Um solche "Blindereignisse" zu vermeiden, speichern Sie den alten Wert des Steuerelements in einer globalen Variable und prüfen dann bei der Ausführung eines Ereignisses, ob er sich tatsächlich geändert hat.

Die Eigenschaften des Item Status Changed-Ereignisses lauten:

  • Selected (long): aktuell gewählter Eintrag.

  • Highlighted (long): aktuell markierter Eintrag.

  • ItemId (long): ID des Eintrags.

Dialog-Steuerelemente im Detail

StarOffice Basic erkennt eine Reihe von Steuerelementen, die in folgende Gruppen unterteilt werden können:

Eingabefelder:

  • Textfelder

  • Datumsfelder

  • Zeitfelder

  • Zahlenfelder

  • Währungsfelder

  • Frei formatierbare Felder

Schaltflächen:

  • Standard-Schaltflächen

  • Kontrollkästchen

  • Optionsfelder

Auswahllisten:

  • Listenfelder

  • Kombinationsfelder

Sonstige Steuerelemente:

  • Bildlaufleisten (Scrollbars; horizontal und vertikal)

  • Gruppenfelder

  • Fortschrittsbalken

  • Trennlinien (horizontal und vertikal)

  • Grafiken

  • Dateiauswahlfelder

Die wichtigsten dieser Steuerelemente werden im Folgenden vorgestellt.

Schaltflächen

Eine Schaltfläche führt eine Aktion aus, wenn darauf geklickt wird.

Im einfachsten Fall löst eine Schaltfläche nur ein When Initiating-Ereignis aus, wenn der Anwender darauf klickt. Sie können auch eine andere Aktion mit der Schaltfläche verknüpfen, um einen Dialog zu öffnen, indem Sie die PushButtonType-Eigenschaft verwenden. Wenn Sie auf eine Schaltfläche klicken, für die diese Eigenschaft auf den Wert 0 gesetzt ist, wirkt sich dies nicht auf den Dialog aus. Wenn Sie auf eine Schaltfläche klicken, für die diese Eigenschaft auf den Wert 1 gesetzt ist, wird der Dialog geschlossen und die Execute-Methode des Dialogs gibt den Wert 1 zurück (die Dialogsequenz wurde korrekt abgeschlossen). Ist die PushButtonType-Eigenschaft auf den Wert 2 gesetzt, wird der Dialog geschlossen und die Execute-Methode des Dialogs gibt den Wert 0 zurück (Dialog geschlossen).

Im Folgenden finden Sie alle Eigenschaften, die im Schaltflächen-Modell (Model) zur Verfügung stehen:

  • Model.BackgroundColor (Long): Hintergrundfarbe.

  • Model.DefaultButton (Boolean): Die Schaltfläche wird als Standardwert verwendet und reagiert auf die Eingabetaste, wenn sie nicht den Fokus hat.

  • Model.FontDescriptor (Struct): Struktur, die die Details der zu verwendenden Schriftart angibt (gemäß der Struktur com.sun.star.awt.FontDescriptor).

  • Model.Label (String): Beschriftung, die auf der Schaltfläche angezeigt wird.

  • Model.Printable (Boolean): das Steuerelement kann gedruckt werden.

  • Model.TextColor (Long): Textfarbe des Steuerelements.

  • Model.HelpText (String): Hilfetext, der angezeigt wird, wenn der Mauszeiger über das Steuerelement bewegt wird.

  • Model.HelpURL (String): URL der Online-Hilfe für das entsprechende Steuerelement.

  • PushButtonType (Short): mit der Schaltfläche verknüpfte Aktion (0: keine Aktion, 1: OK, 2: Abbrechen).

Optionsschaltflächen

Optionsschaltflächen werden gewöhnlich in Gruppen eingesetzt und gestatten es dem Anwender, eine von mehreren Optionen auszuwählen. Bei Auswahl einer Option werden alle anderen in der Gruppe enthaltenen Optionen deaktiviert. Hierdurch wird sichergestellt, dass zu jedem Zeitpunkt immer nur genau eine Optionsschaltfläche aktiviert ist.

Ein Optionsschaltflächen-Steuerelement stellt zwei Eigenschaften zur Verfügung:

  • State (Boolean): aktiviert die Schaltfläche.

  • Label (String): Beschriftung, die auf der Schaltfläche angezeigt wird.

Sie können auch die folgenden Eigenschaften aus dem Modell (Model) der Optionsschaltflächen verwenden:

  • Model.FontDescriptor (struct): Struktur mit Details der zu verwendenden Schriftart (gemäß com.sun.star.awt.FontDescriptor).

  • Model.Label (String): Beschriftung, die auf dem Steuerelement angezeigt wird.

  • Model.Printable (Boolean): Steuerelement kann gedruckt werden.

  • Model.State (Short): wenn diese Eigenschaft gleich 1 ist, ist die Option aktiviert, andernfalls ist sie deaktiviert.

  • Model.TextColor (Long): Textfarbe des Steuerelements.

  • Model.HelpText (String): Hilfetext, der angezeigt wird, wenn der Mauszeiger über dem Steuerelement verharrt.

  • Model.HelpURL (String): URL der Online-Hilfe für das entsprechende Steuerelement.

Sollen mehrere Optionsschaltflächen zu einer Gruppe zusammengefasst werden, müssen sie sequenziell und lückenlos in der Aktivierungsreihenfolge positioniert werden (Eigenschaft Model.TabIndex, im Dialog-Editor als "Order" (Reihenfolge) bezeichnet). Wird die Aktivierungsreihenfolge durch ein anderes Steuerelement unterbrochen, so beginnt StarOffice automatisch mit einer neuen Steuerelementegruppe, die unabhängig von der ersten Steuerelementegruppe aktiviert werden kann.


Hinweis –

Im Gegensatz zu VBA können in StarOffice Basic einer Gruppe von Steuerelementen keine Optionsschaltflächen hinzugefügt werden. In StarOffice Basic werden Steuerelemente nur gruppiert, um eine optische Gliederung bzw. Abgrenzung zu gewährleisten, indem ein Rahmen um die Steuerelemente gezeichnet wird.


Kontrollkästchen

Kontrollkästchen werden zur Erfassung eines Ja- oder Nein-Werts verwendet. In Abhängigkeit von ihrem Modus können sie zwei oder drei Zustände annehmen. Zusätzlich zu den Zuständen "Ja" und "Nein" kann sich ein Kontrollkästchen in einem Zwischenzustand befinden, wenn der entsprechende Ja- oder Nein-Status mehr als eine Bedeutung hat oder unklar ist.

Kontrollkästchen stellen folgende Eigenschaften bereit:

  • State (Short): Zustand des Kontrollkästchens (0: Nein, 1: Ja, 2: Zwischenzustand).

  • Label (String): Beschriftung des Steuerelements.

  • enableTriState (Boolean): zusätzlich zu den Zuständen "aktiviert" und "deaktiviert" kann auch der Zwischenzustand verwendet werden.

Das Model-Objekt eines Kontrollkästchens bietet folgende Eigenschaften:

  • Model.FontDescriptor (struct): Struktur mit Details der verwendeten Schriftart (gemäß der Struktur com.sun.star.awt.FontDescriptor).

  • Model.Label (String): Beschriftung des Steuerelements.

  • Model.Printable (Boolean): das Steuerelement kann gedruckt werden.

  • Model.State (Short): Zustand des Kontrollkästchens (0: Nein, 1: Ja, 2: Zwischenzustand).

  • Model.Tabstop (Boolean): ermöglicht die Ansteuerung des Steuerelements mit der Tabulatortaste.

  • Model.TextColor (Long): Textfarbe des Steuerelements.

  • Model.HelpText (String): Hilfetext, der angezeigt wird, wenn der Mauszeiger über dem Steuerelement verharrt.

  • Model.HelpURL (String): URL der Online-Hilfe für das entsprechende Steuerelement.

Textfelder

Textfelder ermöglichen dem Anwender die Eingabe von Zahlen und Text. Die Grundlage für Textfelder bildet der Dienst com.sun.star.awt.UnoControlEdit.

Ein Textfeld kann einzeilig oder mehrzeilig sein, editierbar oder für die Benutzereingabe gesperrt. Textfelder können auch als spezielle Währungs- oder Zahlenfelder sowie als Bildschirmfelder für bestimmte Aufgaben verwendet werden. Da diese Steuerelemente auf dem Uno-Dienst UnoControlEdit basieren, ist ihre programmgesteuerte Handhabung weitgehend identisch.

Textfelder stellen folgende Eigenschaften bereit:

  • Text (String): aktueller Text.

  • SelectedText (String): aktuell markierter Text.

  • Selection (Struct): schreibgeschützte Markierung von Details (Struktur gemäß com.sun.star.awt.Selection, wobei die Eigenschaften Min und Max den Anfang und das Ende der aktuellen Markierung festlegen).

  • MaxTextLen (Short): maximale Anzahl von Zeichen, die in das Feld eingegeben werden können.

  • Editable (Boolean): True aktiviert die Option für Texteingabe, False sperrt die Eingabeoption (die Eigenschaft kann nicht direkt aufgerufen werden, nur über IsEditable).

  • IsEditable (Boolean): der Inhalt des Steuerelements kann geändert werden; schreibgeschützt.

Über das verknüpfte Model-Objekt hinaus stehen folgende Eigenschaften zur Verfügung:

  • Model.Align (Short): Ausrichtung des Texts (0: linksbündig, 1: zentriert, 2: rechtsbündig).

  • Model.BackgroundColor (Long): Hintergrundfarbe des Steuerelements.

  • Model.Border (Short): Art des Rahmens (0: kein Rahmen, 1: 3D-Rahmen, 2: einfacher Rahmen).

  • Model.EchoChar (String): Echo-Zeichen für Passwortfelder.

  • Model.FontDescriptor (Struct): Struktur mit Details der verwendeten Schriftart (gemäß der Struktur com.sun.star.awt.FontDescriptor).

  • Model.HardLineBreaks (Boolean): automatische Zeilenumbrüche werden dauerhaft in den Text des Steuerelements eingefügt.

  • Model.HScroll (Boolean): der Text verfügt über eine horizontale Bildlaufleiste (Scrollbar).

  • Model.MaxTextLen (Short): maximale Textlänge, wobei 0 unbegrenzte Textlänge zulässt.

  • Model.MultiLine (Boolean): lässt mehrzeilige Eingabe zu.

  • Model.Printable (Boolean): das Steuerelement kann gedruckt werden.

  • Model.ReadOnly (Boolean): der Inhalt des Steuerelements ist schreibgeschützt (nur Lesen).

  • Model.Tabstop (Boolean): ermöglicht die Ansteuerung des Steuerelements mit der Tabulatortaste.

  • Model.Text (String): mit dem Steuerelement verknüpfter Text.

  • Model.TextColor (Long): Textfarbe des Steuerelements.

  • Model.VScroll (Boolean): der Text verfügt über eine vertikale Bildlaufleiste (Scrollbar).

  • Model.HelpText (String): Hilfetext, der angezeigt wird, wenn der Mauszeiger über dem Steuerelement verharrt.

  • Model.HelpURL (String): URL der Online-Hilfe für das entsprechende Steuerelement.

Listenfelder

Listenfelder (Dienst com.sun.star.awt.UnoControlListBox) unterstützen folgende Eigenschaften:

  • ItemCount (Short): Anzahl der Elemente; schreibgeschützt (nur Lesen).

  • SelectedItem (String): Text des markierten Eintrags; schreibgeschützt (nur Lesen).

  • SelectedItems (Array Of Strings): Datenfeld mit markierten Einträgen; schreibgeschützt (nur Lesen).

  • SelectItemPos (Short): Nummer des aktuell markierten Eintrags; schreibgeschützt (nur Lesen).

  • SelectItemsPos (Array of Short): Datenfeld mit den Positionsnummern der markierten Einträge (für Listen, die Mehrfachauswahl unterstützen); schreibgeschützt (nur Lesen).

  • MultipleMode (Boolean): True aktiviert die Option für Mehrfachauswahl von Einträgen, False sperrt die Mehrfachauswahl (die Eigenschaft kann nicht direkt aufgerufen werden, nur über IsMultipleMode).

  • IsMultipleMode (Boolean): lässt Mehrfachauswahl innerhalb von Listen zu; schreibgeschützt (nur Lesen).

Listenfelder stellen folgende Methoden zur Verfügung:

  • addItem (Item, Pos): gibt die in Item angegebene Zeichenfolge an Position Pos in der Liste ein.

  • addItems (ItemArray, Pos): gibt die in dem Datenfeld ItemArray der Zeichenfolge aufgeführten Einträge an Position Pos in der Liste ein.

  • removeItems (Pos, Count): entfernt Count Einträge ab Position Pos.

  • selectItem (Item, SelectMode): aktiviert oder deaktiviert die Markierung für das in der Zeichenfolge Item angegebene Element, in Abhängigkeit von der booleschen Variable SelectMode.

  • makeVisible (Pos): führt einen Bildlauf durch das Listenfeld aus, damit der mit Pos angegebene Eintrag angezeigt wird.

Das Model-Objekt der Listenfelder hält folgende Eigenschaften bereit:

  • Model.BackgroundColor (Long): Hintergrundfarbe des Steuerelements.

  • Model.Border (Short): Art des Rahmens (0: kein Rahmen, 1: 3D-Rahmen, 2: einfacher Rahmen).

  • Model.FontDescriptor (Struct): Struktur mit Details der verwendeten Schriftart (gemäß der Struktur com.sun.star.awt.FontDescriptor).

  • Model.LineCount (Short): Anzahl der Zeilen im Steuerelement.

  • Model.MultiSelection (Boolean): lässt die Mehrfachauswahl von Einträgen zu.

  • Model.SelectedItems (Array of Strings): Liste der markierten Einträge.

  • Model.StringItemList (Array of Strings): Liste aller Einträge.

  • Model.Printable (Boolean): das Steuerelement kann gedruckt werden.

  • Model.ReadOnly (Boolean): der Inhalt des Steuerelements ist schreibgeschützt (nur Lesen).

  • Model.Tabstop (Boolean): ermöglicht die Ansteuerung des Steuerelements mit der Tabulatortaste.

  • Model.TextColor (Long): Textfarbe des Steuerelements.

  • Model.HelpText (String): Hilfetext, der automatisch angezeigt wird, wenn sich der Mauszeiger über dem Steuerelement befindet.

  • Model.HelpURL (String): URL der Online-Hilfe für das entsprechende Steuerelement.


Hinweis –

Die VBA-Option zum Versehen von Listeneinträgen mit einem numerischen Zusatzwert (ItemData) ist in StarOffice Basic nicht vorhanden. Soll neben dem Klartext ein zusätzlicher Zahlenwert (etwa eine Datenbank-Id) mit verwaltet werden, so muss hierfür ein Hilfsdatenfeld erstellt werden, das parallel zum Listenfeld verwaltet wird.