4.1.4 Wie geht man mit Kontrollfeldern in Dialogen um?
Dialoge bestehen aus Kontrollfeldern, die die eigentliche Eingabe unterstützen.
Folgende Kontrollfelder gibt es:
Schaltflächen ( CommandButton)
Schaltflächen sind da um einen bestimmten Befehl nach einem Mausklick durch den Anwender auszuführen. Üblicherweise steht auf der Schaltfläche der Befehl.
OptionButtons
Ein OptionButton kann eigentlich immer nur zusammen mit mindestens einem weiteren Optionbutton verwendet werden. Mehrere Optionbuttons werden zusammengefasst, um zwischen ihnen eine eindeutige Auswahl zu ermöglichen.
Checkboxen
Ein Checkbox ist für die Abfrage von Ja/Nein-Werten gedacht. Sie sind damit eine Kurzfassung von zwei Optionbutton.
Listboxen
Eine Listbox ist eine Liste von Einträgen aus denen der Anwender auswählen kann. Zum Einen stehen Eigenschaften in der IDE zur Verfügung zum Anderen noch Methoden des Objektes die den Zugriff auf die Listenelemente ermöglichen.
Textfeld (Textfield)
Eingabefeld für Text/Zahlen
Kombinationsfeld
Das Kombinationsfeld ist der Listbox ähnlich. Das Feld stellt auch eine Liste zur Auswahl zur Verfügung. Aber mit einer entscheidenden Unterschied in dem Textfeld oberhalb der Liste kann der Anwender eine neue Eingabe tätigen. Außerdem ist beim Kombinationsfeld keine Mehrfachauswahl möglich.
Rahmen (FrameControll)
Rahmen in Dialogen haben zwar in Starbasic den Namen FrameControl, was darauf schließen lassen könnte, dass sich mit diesen Objekt zusammenfassen lassen. Dies ist leider nicht möglich. Ein Rahmenobjekt ist in Starbasic-Dialogen einfach nur eine Gestaltungsmittel. Zum Beispiel kann man damit Gruppen von Optionbutton optisch hervorheben.
Beschriftungsfeld (Label)
Dieses ist ein Feld mit dem ein beliebiger Text im Dialog positioniert werden kann. Obwohl in der Maske im Dialogeditior "Titel" steht ist die Property "Label".
Grafisches Kontrollfeld (ImageControl)
Dieses Feld dient dazu um eine Grafik im Dialog anzuzeigen. Diese Grafik muss zur Laufzeit entsprechend der Pfadangabe zur Verfügung stehen.

Kontrollfelder können über ihren Namen angesprochen werden.
Nachdem der Dialog geladen worden ist, stehen die Kontrollfelder zur Verfügung. Und können mit GetControl zugewiesen werden.

     DialogLibraries.LoadLibrary( "Standard" )
     MyDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
     MyControl=MyDialog.GetControl("Kontrollfeld")

Danach stehen unter dem Objekt MyControl die Eigenschaften und Methoden zur Verfügung. Viele davon, vor allem die Wichtigsten,  befinden sich im Service Model von MyControl.
graphic
Objektübersicht eines Kontrollfeldes

Es gibt einige Eigenschaften die alle Kontrollfelder haben. Die Wichtigsten hiervon sind:
Eigenschaften von Kontrollfeldern

Name, Aktiviert,Seite(Step),Höhe,Breite,PositionX,PositionY,Zusatzinformationen,Hilftext,Hilfe URL.

Name

In der Eigenschaft "Name" steht der eindeutige Name des Kontrollfeldes. Mit diesem Namen erfolgte der Zugriff auf dieses Kontrollfeld. Diesen Namen zu ändern macht nur Sinn wenn man ein Kontrollfeld während der Laufzeit neu hinzufügt. Normalerweise wird der Name beim Erstellen des Dialoges im Dialogeditor eingetragen. Der Name eines Kontrollfeldes muß innerhalb eines Dialoges eindeutig sein. Dabei wird Groß- und Kleinschreibung unterschieden.

Die wesentliche Verwendung erfolgt beim Aufruf eines Kontrollfeldes über Dialog.getControl(Name)

Aktiviert

Über den Schalter "Aktiviert", wird entschieden ob das Kontrollfeld aktiviert oder nicht aktiviert ist. Ein nicht aktiviertes Kontrollfeld kann nicht angesprochen und ist dann nur als hellgrauer Schatten zu sehen. Die Eigenschaft im Model ist enabled.
MyControl.Model.enabled = true

Seite(Step)

Mit dieser Eigenschaften kann man Kontrollfelder bestimmten Dialogseiten zuordnen. Dies erfolgt in der Regel auch beim Gestalten eines mehrseitigen Dialoges. Näheres zu Erstellen von mehrseitigen Dialogen steht hier.
Zugriff über
MyControl.Model.Step=0

Reihenfolge
In der Reihenfolge (Tabindex) ist die Stelle des Kontrollfeldes innerhalb des Dialoges hinterlegt. Hat man zum Beispiel drei Eingabefelder, die hintereinander abgefragt werden sollen, bekommen die drei fortlaufende Einträge in der Eigenschaft Reihenfolge. Diese Reihenfolge entspricht auch der Bewegung innerhalb der Maske mit der Tabulator-Taste.


Höhe
Legt die Höhe des Objektes in Pixel fest.
MyControl.Model.Height = 15

Breite

Legt die Breite  des Objektes in Pixel fest.
Starbasic: MyControl.Model.Width = 15


PositionX, PositionY
Mit diesen beiden Eigenschaften läßt sich das Kontrollfeld innerhalb des Dialoges positionieren.
StarBasic: MyControl.Model.PositionX und MyControl.Model.PositionY

Zusatzinformation
Hier kann ein zusätzlicher Text hinterlegt werden. Zum Beispiel ein Kommentar zu dem Kontrollfeld.
Starbasic: MyControl.Model.Tag

Hilfetext
Dies ist ein automatisch eingeblendeter Hilfetext, der angezeigt wird,
sofern der Mauszeiger über dem Steuerelement zum Stehen kommt.

HilfeUrl
Legt die ID-Nummer für den Zugriff auf die Online Hilfe fest. Damit wird eine bestimmte Stelle in der Online-Hilfe mit dem Kontrollfeld verbunden, die dann beim Drücken der F1-Taste automatisch aufgerufen wird. Theorie! In der Praxis ist die Funktion nicht hinterlegt.

Zeichensatz
Mit der Eigenschaft Zeichensatz öffnet sich in der IDE ein Dialog mit den Schrifteinstellungen. Innerhalb von Starbasic kann man diese Parameter ebenfalls ansprechen. Dafür steht die Eigenschaft FontDesscriptor als Struktur zur Verfügung. Der Umgang mit Strukten bei Objekten steht im Kapitel "Objekte und Strukturen"
'Anlegen des Strukturobjektes
Dim myFont As New com.sun.star.awt.FontDescriptor
'Zuweisen der Werte
MyFont.Name = "Arial"
MyFont.StyleName = "Fett"
MyFont.Height = 8
'Übergabe an Konrollfeld
MyControl.Model.FontDescriptor=MyFont

Drucken
Entscheidet ob ein Kontrollfeld beim Ausdrucken auf dem Papier mit gedruckt wird. Dies ist eine Eigenschaft die für Basicdialoge nicht wichtig ist. Man kann aber Kontrollfelder auch in Dokumenten verwenden. Dort mach diese Eigenschaft dann einen Sinn. Man kann zu Beispiel ein Dokument mit einer Schaltfläche versehen, die dann nicht mit gedruckt wird.
Starbasic: MyControl.Model.Printable = True

Tapstop
Mit Tapstop wird entschieden ob das Kontrollfeld mit der Tabtaste erreichbar ist. Also ob es innerhalb der Reihenfolge beim Sprung mit Tab- Taste beachtet oder ignoriert werden soll. Es gibt zu jedem Kontrollfeld einen Standardwert. Zum Beispiel bei einer Schaltfläche ja und bei einem Label nein.


Drehfeld
Drehfelder sind Eingabefelder, die sich noch zusätzlich mit Pfeiltasten einstellen lassen. Sie machen nur bei Zahlen und Datums/Zeit- Eingaben einen Sinn.
Starbasic: MyControl.Model.Spin = true / false  


Nur Lesen
Der Inhalt des Steuerelementes ist schreibgeschützt. Er kann also nicht geändert werden. Dies kann für Datenfelder, die nicht geändert werden dürfen, interessant sein. Außerdem besteht auf die Daten Zugriff um diese zum Beispiel zu markieren und zu kopieren.
StarBasic: MyControl.Model.Readonly=True / False