Inhalte

# Dienst SFDialogs.DialogControl

Der Dienst DialogControl verwaltet die Steuerelemente, die zu einem Dialog gehören, der mit dem einfachen Dialogeditor definiert wurde. Jede Instanz des aktuellen Dienstes stellt ein einzelnes Steuerelement innerhalb eines Dialogs dar.

Der Schwerpunkt liegt auf dem Abrufen und Festlegen der Werte, die von den Steuerelementen des Dialogs angezeigt werden. Auf die Formatierung kann über die Eigenschaften XControlModel und XControlView zugegriffen werden.

Beachten Sie, dass der Inhalt der eindeutigen Eigenschaft DialogControl.Value je nach Steuerelementtyp variiert.

Ein besonderes Augenmerk wird auf Steuerelemente vom Typ Baumansicht gelegt. Es ist einfach, einen Baum zu füllen, entweder Zweig für Zweig oder mit mehreren Zweigen parallel. Das Füllen eines Baumansicht-Steuerelements kann statisch oder dynamisch erfolgen.

Der Dienst SFDialogs.DialogControl ist eng verwandt mit dem Dienst SFDialogs.Dialog.

## Dienstaufruf

Vor der Verwendung des Dienstes DialogControl muss die Bibliothek ScriptForge geladen oder importiert werden:

• Grundlegende Makros erfordern das Laden der Bibliothek ScriptForge mit der folgenden Anweisung:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-Skripte erfordern einen Import aus dem Modul scriptforge:
from scriptforge import CreateScriptService

Der Dienst DialogControl wird von einer vorhandenen Dienstinstanz Dialog durch seine Methode Controls() aufgerufen. Der Dialog muss mit dem Dienst SFDialogs.Dialog initiiert werden.

          Dim myDialog As Object, myControl As Object
          Set myDialog = CreateScriptService("SFDialogs.Dialog", "GlobalScope", myLibrary, DialogName)
          Set myControl = myDialog.Controls("myTextBox")
          myControl.Value = "Dialog startete um " & Now()
          myDialog.Execute()
          ' … die aktuellen Werte der Steuerung verarbeiten
          myDialog.Terminate()

         from time import localtime, strftime
         dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', lib_name, dlg_name)
         text = dlg.Controls('myTextBox')
         text.Value = "Dialog startete um " + strftime("%a, %d %b %Y %H:%M:%S", localtime())
         dlg.Execute()
         # … die aktuellen Werte der Steuerung verarbeiten
         dlg.Terminate()

## Abrufen der Instanz "DialogControl", die ein Steuerelementereignis ausgelöst hat

Eine Instanz des Dienstes DialogControl kann über den Dienst SFDialogs.DialogEvent abgerufen werden, sofern der Dialog mit dem Dienst Dialog initiiert wurde. Im Beispiel unten enthält oControl die Instanz DialogControl, die das Steuerungsereignis ausgelöst hat.

          Sub aControlEventHandler(ByRef poEvent As Object)
              Dim oControl As Object
              Set oControl = CreateScriptService("SFDialogs.DialogEvent", poEvent)
              ' ...
          End Sub

Oder mit Python:

         def control_event_handler(event: uno):
             oControl = CreateScriptService('SFDialogs.DialogEvent', event)
             # ...

Beachten Sie, dass in den vorherigen Beispielen das Präfix "SFDialogs." weggelassen werden kann, wenn es angebracht erscheint.

## Behandlung von Ausnahmen in Ereignishandlern

Beim Erstellen einer Ereignisbehandlungsroutine für Steuerungsereignisse empfiehlt es sich, Fehler innerhalb der Subroutine selbst zu behandeln. Angenommen, der unten stehende Ereignishandler wird aufgerufen, wenn auf die Schaltfläche geklickt wird.

        Sub OnButtonClicked(ByRef oEvent As Object)
        On Local Error GoTo Catch
            Dim oControl As Object
            oControl = CreateScriptService("DialogEvent", oEvent)
            ' Das Ereignis verarbeiten
            Exit Sub
        Catch:
            MsgBox SF_Exception.Description
            SF_Exception.Clear
        End Sub

Rufen Sie SF_Exception.Clear auf, wenn Sie nicht möchten, dass der Fehler nach Beendigung der Dialogausführung weitergegeben wird.

Verwenden Sie in Python native Blöcke try/except für die Ausnahmebehandlung, wie unten gezeigt:

        def on_button_clicked(event=None):
            try:
                oControl = CreateScriptService("DialogEvent", event)
                # Verarbeite das Ereignis
            except Exception as e:
                # Das Objekt "bas" unten ist eine Instanz des Dienstes Basic
                bas.MsgBox(str(e))

## Steuerungstypen

Der Dienst DialogControl ist für diese Steuerelementtypen verfügbar:

• Button • CheckBox • ComboBox • CurrencyField • DateField • FileControl | • FixedLine • FixedText • FormattedField • GroupBox • Hyperlink • ImageControl | • ListBox • NumericField • PatternField • ProgressBar • RadioButton • ScrollBar | • TableControl • TabPageContainer • TextField • TimeField • TreeControl

Der Steuerelementtyp TabPageContainer ist im Dialogeditor nicht definiert.

## Eigenschaften

Name | Schreibgeschützt | Typ | Anwendbar auf | Beschreibung
--- | --- | --- | --- | ---
Border | Ja | String | Button, … | Die Eigenschaft Border bezieht sich auf die Umgebung des Steuerelements: "3D", "FLAT" oder "NONE".
Cancel | Nein | Boolean | Button | Legt fest, ob eine Befehlsschaltfläche das Verhalten einer Abbrechen-Schaltfläche hat oder nicht.
Caption | Nein | String | Button, CheckBox, FixedLine, FixedText, GroupBox, Hyperlink, RadioButton | Legt den dem Steuerelement zugeordneten Text fest.
ControlType | Ja | String | Alle | Einer der oben aufgeführten Typen.
CurrentNode | Nein | UNO Objekt | TreeControl | Der aktuell oberste Knoten, der im Baumansicht-Stuerelement ausgewählt ist. Siehe XmutableTreeNode in der Dokumentation zur Programmierschnittstelle (API) für detaillierte Informationen.
Default | Nein | Boolean | Button | Legt fest, ob eine Befehlsschaltfläche die Standardschaltfläche (OK) ist.
Enabled | Nein | Boolean | Alle | Legt fest, ob mit dem Cursor auf das Steuerelement zugegriffen werden kann.
Format | Nein | String | DateField, TimeField, FormattedField (Schreibgeschützt) | Legt das Format fest, das zum Anzeigen von Datum und Uhrzeit verwendet wird. Es muss eine dieser Zeichenfolgen sein: Für Daten: "Standard (short)", "Standard (short YY)", "Standard (short YYYY)", "Standard (long)", "DD/MM/YY", "MM/DD/YY", "YY/MM/DD", "DD/MM/YYYY", "MM/DD/YYYY", "YYYY/MM/DD", "YY-MM-DD", "YYYY-MM-DD". Für Zeiten: "24h short", "24h long", "12h short", "12h long".
ListCount | Ja | Long | ComboBox, ListBox, TableControl | Legt die Anzahl der Zeilen in einem Listenfeld, Kombinationsfeld oder Tabellen-Steuerelement fest.
ListIndex | Nein | Long | ComboBox, ListBox, TableControl | Legt fest, welches Element in einem Listenfeld, Kombinationsfeld oder eine Tabellen-Steuerelement ausgewählt ist.
Locked | Nein | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, TextField, TimeField | Legt fest, ob das Steuerelement schreibgeschützt ist.
MultiSelect | Nein | Boolean | ListBox | Legt fest, ob ein Benutzer in einem Listenfeld eine Mehrfachauswahl treffen kann.
Name | Ja | String | Alle | Der Name des Steuerelements.
Page | Nein | Integer | Alle | Ein Dialog kann mehrere Seiten haben, die vom Benutzer Schritt für Schritt durchlaufen werden können. Die Eigenschaft "Page" des Objekts "Dialog" definiert, welche Seite des Dialogs aktiv ist. Die Eigenschaft "Page" eines Steuerelements definiert die Seite des Dialogs, auf der das Steuerelement sichtbar ist.
Parent | Ja | Dialog Dienst | Alle | Die Objektinstanz der übergeordneten Klasse SFDialogs.Dialog.
Picture | Nein | String | Button, ImageControl | Legt den Dateinamen fest, der eine Bitmap oder einen anderen Grafiktyp enthält, der auf dem angegebenen Steuerelement angezeigt werden soll. Der Dateiname muss dem Attribut FileNaming des Dienstes ScriptForge.FileSystem entsprechen.
RootNode | Ja | UNO Objekt | TreeControl | Ein Objekt, das den niedrigsten Wurzelknoten darstellt (normalerweise gibt es nur einen solchen Wurzelknoten). Siehe XmutableTreeNode in der Dokumentation zur Programmierschnittstelle (API) für detaillierte Informationen.
RowSource | Nein | Array of strings | ComboBox, ListBox | Legt die Daten fest, die in einem Kombinationsfeld oder einem Listenfeld enthalten sind.
TabIndex | Ja | Numeric | All | Die Eigenschaft TabIndex gibt die Position eines Steuerelements in der Tabulatorreihenfolge im Dialog an.
Text | Ja | String | ComboBox, FileControl, FormattedField, PatternField, TextField | Ermöglicht den Zugriff auf den Text, der vom Steuerelement angezeigt wird.
TipText | Nein | String | Alle | Legt den Text fest, der als Hilfetext angezeigt wird, wenn Sie den Mauszeiger über das Steuerelement halten.
TripleState | Nein | Boolean | CheckBox | Legt fest, ob das Markierfeld abgeblendet (grau) angezeigt werden darf oder nicht.
URL | Nein | String | Hyperlink | Die URL, die geöffnet werden soll, wenn auf das Steuerelement geklickt wird.
Value | Nein | Variant |  | Siehe Werteigenschaft
Visible | Nein | Boolean | Alle | Legt fest, ob das Steuerelement ausgeblendet oder sichtbar ist.
XControlModel | Ja | UNO Objekt | Alle | Das UNO-Objekt, welches das Steuerungsmodell darstellt. Siehe XControlModel und UnoControlDialogModel in der Dokumentation zur Programmierschnittstelle (API) für detaillierte Informationen.
XControlView | Ja | UNO Objekt | Alle | Das UNO-Objekt, das die Steuerungsansicht darstellt. Siehe XControl und UnoControlDialog in der Dokumentation zur Programmierschnittstelle (API) für detaillierte Informationen.
XTreeDataModel | Ja | UNO Objekt | TreeControl | Das UNO-Objekt, welches das Baumansicht-Steuerelement-Datenmodell darstellt. Siehe XMutableTreeDataModel in der Dokumentation zur Programmierschnittstelle (API) für detaillierte Informationen.
XGridColumnModel | Ja | UNO Objekt | TableControl | Das UNO-Objekt, welches das Datenmodell der Tabellensteuerung darstellt. Ausführliche Informationen finden Sie unter XGridColumnModel in der API-Dokumentation (Application Programming Interface).
XGridDataModel | Ja | UNO Objekt | TableControl | Das UNO-Objekt, welches das Datenmodell der Baumstruktur darstellt. Ausführliche Informationen finden Sie unter XGridDataModel in der API-Dokumentation (Application Programming Interface).

## Die Werteigenschaft

Steuerelementtyp | Typ | Beschreibung
--- | --- | ---
Button | Boolean | Nur für Wechselschaltflächen
CheckBox | Boolesche oder ganze Zahl | 0, False: nicht angekreuzt 1, True: angekreuzt 2: ausgegraut, weiß nicht
ComboBox | String | Der ausgewählte Wert. Die Eigenschaft ListIndex ist eine alternative Option.
CurrencyField | Numerisch |
DateField | Date |
FileControl | String | Ein Dateiname, der gemäß der Eigenschaft FileNaming des Dienstes ScriptForge.FileSystem formatiert ist
FormattedField | Zeichenfolge oder numerisch |
ListBox | Zeichenfolge oder Matrix mit Zeichenfolgen | Die ausgewählte(n) Zeile(n) als Skalar oder als Matrix, abhängig vom Attribut MultiSelect
NumericField | Numerisch |
PatternField | String |
ProgressBar | Numerisch | Muss innerhalb der vordefinierten Grenzen liegen
RadioButton | Boolean | Jede Schaltfläche hat einen eigenen Namen. Sie sind miteinander verknüpft, wenn ihre Tabulatorpositionen zusammenhängend sind. Wenn ein Optionsfeld auf True gesetzt ist, werden die anderen zugehörigen Felder automatisch auf False gesetzt
ScrollBar | Numerisch | Muss innerhalb der vordefinierten Grenzen liegen
TabPageContainer | Numeric | Ein Dialog kann mehrere nummerierte Register haben, die durch ihre Eigenschaft Value identifizierbar oder änderbar sind.
TableControl | Array | Eindimensionale Matrix mit den Daten der aktuell ausgewählten Zeile.
TextField | String | Der Text, der im Feld erscheint
TimeField | Date |

Es gibt keine Eigenschaft Value für die Dialogsteuerelemente GroupBox, Hyperlink, ImageControl und TreeControl .

## Ereigniseigenschaften

Ereigniseigenschaften On… sind URI-Zeichenfolgen, die auf ein Skript verweisen, das durch ein Ereignis ausgelöst wurde. Die Spezifikation finden Sie in der URI-Spezifikation des Skript-Frameworks.

Name (Event-API-Link) | Beschreibung wie in der Basic-IDE angegeben
--- | ---
OnActionPerformed | Aktion ausführen
OnAdjustmentValueChanged | Beim Einstellen
OnFocusGained | Beim Erhalten des Fokus
OnFocusLost | Beim Verlust des Fokus
OnItemStateChanged | Beim Ändern des Artikelstatus
OnKeyPressed | Beim Drücken einer Taste
OnKeyReleased | Beim Losgelassen einer Taste
OnMouseDragged | Bei Mausbewegung, während die Taste gedrückt ist
OnMouseEntered | Wenn Maus darüber
OnMouseExited | Wenn Maus außerhalb
OnMouseMoved
OnMousePressed | Wenn Maustaste gedrückt wird
OnMouseReleased | Wenn Maustaste losgelassen wird
OnNodeExpanded | (Nicht in Basic-IDE), wenn die Erweiterungsschaltfläche auf einem Knoten in einem Baumansicht-Steuerelement gedrückt wird
OnNodeSelected | (Nicht in Basic-IDE), wenn ein Knoten in einem Baumansicht-Steuerelement ausgewählt wird
OnTabSelected | (Nicht in der Basic-IDE), wenn ein Register in einem Steuerelement TabPage ausgewählt ist
OnTextChanged | Wenn Text geändert wird

Tipp: Alle Eigenschaften On… können programmgesteuert festgelegt werden.
Das Beispiel How to display data in a tree control im LibreOffice-Wiki veranschaulicht dies.

Das Zuweisen von Ereignissen über die Basic-IDE und das Zuweisen von Ereignissen über Makros schließen sich gegenseitig aus.

## Methoden

Liste der Methoden im Dienst DialogControl
AddSubNode AddSubTree CreateRoot | FindNode Resize SetFocus | SetTableData WriteLine

## AddSubNode

Erstellt einen neuen Knoten des Baumansicht-Steuerelements und gibt ihn als UNO-Objekt zurück, das einem übergeordneten Knoten untergeordnet ist. Siehe XMutableTreeNode in der Dokumentation der Programmierschnittstelle (API) für detaillierte Informationen.

Diese Methode kann aufgerufen werden, bevor der Dialog zum Erstellen des Anfangsbaums angezeigt wird. Es kann auch von einem Dialog- oder Steuerungsereignis aufgerufen werden – unter Verwendung des Ereignisses OnNodeExpanded – um den Baum dynamisch zu vervollständigen.

### Syntax:

svc.AddSubNode(parentnode: uno, displayvalue: str, opt datavalue: any): uno

### Parameter:

parentnode: Ein Knoten-UNO-Objekt vom Typ com.sun.star.awt.tree.XMutableTreeNode.

displayvalue: Der Text, der im Baumansicht-Steuerelement erscheint.

datavalue: Jeder Wert, der dem neuen Knoten zugeordnet ist. datavalue kann eine Zeichenfolge, eine Zahl oder ein Datum sein. Lassen Sie das Argument weg, wenn es nicht zutrifft.

### Beispiel:

LibreOffice Basic- und Python-Beispiele übernehmen den Dialog myDialog des aktuellen Dokuments aus der Bibliothek Standard.

##### In Basic

          Dim oDlg As Object, myTree As Object, myNode As Object, theRoot As Object
          Set oDlg = CreateScriptService("Dialog",,, "myDialog")
          Set myTree = oDlg.Controls("myTreeControl")
          Set theRoot = myTree.CreateRoot("Tree top")
          Set myNode = myTree.AddSubNode(theRoot, "A branch ...")

##### In Python

         dlg = CreateScriptService('SFDialogs.Dialog', None, None, 'myDialog')
         tree = dlg.Controls('myTreeControl')
         root = tree.CreateRoot('Tree top')
         node = tree.AddSubNode(root, 'A branch ...')

## AddSubTree

Gibt True zurück, wenn ein Teilbaum, der einem übergeordneten Knoten untergeordnet ist, erfolgreich in ein Baumansicht-Steuerelement eingefügt werden konnte. Wenn der übergeordnete Knoten vor dem Aufrufen dieser Methode bereits untergeordnete Knoten hatte, werden die untergeordneten Knoten gelöscht.

Diese Methode kann aufgerufen werden, bevor der Dialog zum Erstellen des Anfangsbaums angezeigt wird. Es kann auch von einem Dialog- oder Steuerungsereignis aufgerufen werden – unter Verwendung des Ereignisses OnNodeExpanded – um den Baum dynamisch zu vervollständigen.

### Syntax:

svc.AddSubTree(parentnode: uno, flattree: any, opt withdatavalue: bool): bool

### Parameter:

parentnode: Ein Knoten-UNO-Objekt vom Typ com.sun.star.awt.tree.XMutableTreeNode.

flattree: eine zweidimensionale Matrix, sortiert nach den Spalten, welche die Anzeigewerte enthalten. Eine solche Matrix kann von der Methode GetRows ausgegeben werden, die auf den Dienst SFDatabases.Database angewendet wird. Wenn ein Matrix-Element, das den anzuzeigenden Text enthält, Empty oder Null ist, wird kein neuer Unterknoten erstellt und der Rest der Zeile wird übersprungen.

          Flacher Baum >>>> Resultierender Teilbaum
          A1	B1	C1             |__   A1
          A1	B1	C2                   |__   B1
          A1	B2	C3                         |__  C1
          A2	B3	C4                         |__  C2
          A2	B3	C5                   |__   B2
          A3	B4	C6                         |__  C3
                                 |__   A2
                                       |__   B3
                                             |__  C4
                                             |__  C5
                                 |__   A3
                                       |__   B4
                                             |__  C6

withdatavalue: Wenn der Standardwert False verwendet wird, enthält jede Spalte von flattree den Text, der im Baumansicht-Steuerelement angezeigt werden soll. Bei True stehen die anzuzeigenden Texte (displayvalue) in den Spalten 0, 2, 4, … während die Datenwerte (datavalue) sich in den Spalten 1, 3, 5, … befinden.

### Beispiel:

##### In Basic

          Dim myTree As Object, theRoot As Object, oDb As Object, vData As Variant
          Set myTree = myDialog.Controls("myTreeControl")
          Set theRoot = myTree.CreateRoot("By product category")
          Set oDb = CreateScriptService("SFDatabases.Database", "/home/.../mydatabase.odb")
          vData = oDb.GetRows("SELECT [Category].[Name], [Category].[ID], [Product].[Name], [Product].[ID] " _
              & "FROM [Category], [Product] WHERE [Product].[CategoryID] = [Category].[ID] " _
              & "ORDER BY [Category].[Name], [Product].[Name]")
          myTree.AddSubTree(theRoot, vData, WithDataValue := True)

##### In Python

         SQL_STMT = "SELECT [Category].[Name], [Category].[ID], [Product].[Name], [Product].[ID] \
             FROM [Category], [Product] WHERE [Product].[CategoryID] = [Category].[ID] \
             ORDER BY [Category].[Name], [Product].[Name]"
         tree = dlg.Controls('myTreeControl')
         root = tree.CreateRoot('By Product category')
         db = CreateScriptService('SFDatabases.Database', '/home/.../mydatabase.odb')
         sub_tree = db.GetRows(SQL_STMT)
         tree.AddSubTree(root, sub_tree, withdatavalue=True)

## CreateRoot

Gibt einen neuen Wurzelknoten des Baumansicht-Steuerelements als Knoten-UNO-Objekt des Typs com.sun.star.awt.tree.XMutableTreeNode zurück. Die neue Baumwurzel wird unterhalb bereits vorhandener Wurzelknoten eingefügt. Siehe XMutableTreeNode in der Dokumentation der Programmierschnittstelle (API) für detaillierte Informationen.

Diese Methode kann aufgerufen werden, bevor der Dialog zum Erstellen des Anfangsbaums angezeigt wird. Sie kann auch von einem Dialog oder einem Steuerereignis aufgerufen werden, um den Baum dynamisch zu vervollständigen.

### Syntax:

svc.CreateRoot(displayvalue: str, opt datavalue: any): uno

### Parameter:

displayvalue: Der Text, der im Baumansicht-Steuerelement erscheint.

datavalue: Jeder Wert, der dem neuen Knoten zugeordnet ist. datavalue kann eine Zeichenfolge, eine Zahl oder ein Datum sein. Lassen Sie das Argument weg, wenn es nicht zutrifft.

### Beispiel:

##### In Basic

          Dim myTree As Object, myNode As Object
          Set myTree = myDialog.Controls("myTreeControl")
          Set myNode = myTree.CreateRoot("Tree starts here ...")

##### In Python

         tree = dlg.Controls('myTreeControl')
         node = tree.CreateRoot('Tree starts here ...')

## FindNode

Durchläuft den Baum und findet rekursiv ausgehend von der Wurzel einen Knoten, der einige Kriterien erfüllt. Entweder – eine Übereinstimmung ist genug – der Anzeigewert muss dem Muster displayvalue entsprechen oder der Datenwert ist gleich datavalue. Bei den Vergleichen kann die Groß-/Kleinschreibung beachtet werden oder nicht. Das erste übereinstimmende Vorkommen wird als Knoten-UNO-Objekt des Typs com.sun.star.awt.tree.XMutableTreeNode zurückgegeben. Siehe XMutableTreeNode in der Dokumentation der Programmierschnittstelle (API) für detaillierte Informationen.

Wenn er nicht gefunden wird, gibt die Methode Nothing zurück, um es mit der eingebauten Funktion IsNull() zu testen.

Diese Methode kann aufgerufen werden, bevor der Dialog zum Erstellen des Anfangsbaums angezeigt wird. Es kann auch von einem Dialog oder einem Steuerereignis aufgerufen werden.

### Syntax:

svc.FindNode(displayvalue: str = '', opt datavalue: any, casesensitive = False): uno

### Parameter:

Ein Argument aus displayvalue oder datavalue muss angegeben werden. Wenn beide vorhanden sind, reicht eine Übereinstimmung aus, um den Knoten auszuwählen.

displayvalue: Das zu vergleichende Muster. Siehe die Methode SF_String.IsLike() für die Liste der möglichen Wildcards. Wenn sie gleich der Zeichenfolge der Länge Null ist (Standard), wird nach diesem Anzeigewert nicht gesucht.

datavalue: Jeder Wert, der dem neuen Knoten zugeordnet ist. datavalue kann eine Zeichenfolge, eine Zahl oder ein Datum sein. Lassen Sie das Argument weg, wenn es nicht zutrifft.

casesensitive: Standardwert ist False

### Beispiel:

##### In Basic

          Dim myTree As Object, myNode As Object
          Set myTree = myDialog.Controls("myTreeControl")
          Set myNode = myTree.FindNode("*Sophie*", CaseSensitive := True)

##### In Python

         tree = dlg.Controls('myTreeControl')
         node = FindNode('*Sophie*', casesensitive=True)
         if node is None:
             # ...

## Resize

Verschiebt die obere linke Ecke eines Dialogsteuerelements auf neue Koordinaten und/oder ändert seine Abmessungen. Gibt True zurück, wenn die Größenänderung erfolgreich war.

### Syntax:

svc.Resize(opt Left: int, opt Top: int, opt Width: int, opt Height: int): bool

### Parameter:

Alle Abstände werden in Einheiten Map AppFont ausgedrückt und von der oberen linken Ecke des übergeordneten Dialogs aus gemessen. Ohne Argumente ändert die Methode die Größe des Steuerelements auf seine „bevorzugte Größe“, eine Größe, die abhängig von seinem tatsächlichen Inhalt angepasst wird. Fehlende Argumente bleiben unverändert.

Left: Der horizontale Abstand von der oberen linken Ecke

Top: Der vertikale Abstand von der oberen linken Ecke

Width: die horizontale Breite des Rechtecks, welches das Steuerelement enthält

Width: die vertikale Höhe des Rechtecks, welches das Steuerelement enthält

### Beispiel:

##### In Basic

          Dim oControl As Object
          Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
          Set oControl = oDlg.Controls("thisControl")
          oControl.Resize(100, 200, Height:=6000) ' Die Breite bleibt unverändert

##### In Python

          dlg = CreateScriptService('Dialog', None, None, 'myDialog')
          ctrl = dlg.Controls('thisControl')
          ctrl.Resize(300, 200, 1500)  # Die Breite bleibt unverändert

## SetFocus

Setzt den Fokus auf das Steuerelement. Gibt True zurück, wenn die Fokussierung erfolgreich war.

Diese Methode wird häufig von einem Dialog- oder Steuerelement-Ereignis aufgerufen.

### Syntax:

svc.SetFocus(): bool

### Beispiel:

##### In Basic

          Dim oControl As Object
          Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
          Set oControl = oDlg.Controls("thisControl")
          oControl.SetFocus()

##### In Python

          dlg = CreateScriptService('Dialog', None, None, 'myDialog')
          ctrl = dlg.Controls('thisControl')
          ctrl.SetFocus()

## SetTableData

Füllt ein Tablen-Steuerelement mit den angegebenen Daten. Alle bereits vorhandenen Daten werden gelöscht, bevor die neuen als Argument übergebenen Daten eingefügt werden.

Wenn das Tabellen-Steuerelement zum Dialog hinzugefügt wird, ist es möglich, die Basic IDE zu verwenden, um festzulegen, ob Spalten- und Zeilenüberschriften in der Tabelle angezeigt werden. Wenn das Tabellen-Steuerelement Spalten- und/oder Zeilenüberschriften hat, wird die erste Spalte und/oder Zeile in der bereitgestellten Datenmatrix als Beschriftung für die Tabellenüberschriften verwendet.

Diese Methode gibt True zurück, wenn sie erfolgreich war.

### Syntax:

svc.SetTableData(dataarray: any[0..*, 0..*], widths: int[0..*], alignments: str, RowHeaderWidth = 10): bool

### Parameter:

dataarray: Daten, welche in die Tabelle eingegeben werden sollen, dargestellt als eine Matrix von Matrizen in Basic oder ein Tupel von Tupeln in Python. Die Daten müssen Spalten- und Zeilenüberschriften enthalten, wenn sie vom Tabellen-Steuerelement angezeigt werden sollen.

widths: Matrix, welche die relativen Breiten jeder Spalte enthält. Mit anderen Worten: widths = (1, 2) bedeutet, dass die zweite Spalte doppelt so breit ist wie die erste. Wenn die Anzahl der Werte in der Matrix kleiner als die Anzahl der Spalten in der Tabelle ist, wird der letzte Wert in der Matrix verwendet, um die Breite der verbleibenden Spalten zu definieren.

alignments: Definiert die Ausrichtung in jeder Spalte als Zeichenfolge, in der jedes Zeichen "L" (links), "C" (Mitte), "R" (rechts) oder " " (Leerzeichen, Standard, also links für Zeichenfolgen und rechts für numerische Werte). Wenn die Länge der Zeichenfolge kürzer ist als die Anzahl der Spalten in der Tabelle, wird das letzte Zeichen der Zeichenfolge verwendet, um die Ausrichtung der verbleibenden Spalten zu definieren.

RowHeaderWidth: Breite der Zeilenkopfspalte, ausgedrückt in Einheiten Map AppFont. Standard = 10. Das Argument wird ignoriert, wenn das TableControl keinen Zeilenkopf hat.

### Beispiel:

##### In Basic

Das folgende Beispiel geht davon aus, dass der Dialog myDialog ein Tabellen-Steuerelement namens Grid1 hat, dessen Eigenschaften "Zeilenkopf anzeigen" und "Spaltenkopf anzeigen" auf " Ja" gesetzt sind.

         Dim myDialog As Object, oTable As Object, tableData As Variant
         myDialog = CreateScriptService("Dialog", "GlobalScope", "Standard", "myDialog")
         oTable = myDialog.Controls("Grid1")
         tableData = Array("Column A", "Column B", "Column C")
         tableData = SF_Array.AppendRow(tableData, Array("Row 1", 1, 2))
         tableData = SF_Array.AppendRow(tableData, Array("Row 2", 3, 4))
         tableData = SF_Array.AppendRow(tableData, Array("Row 3", 5, 6))
         vAlignments = "LCC"
         vWidths = Array(2, 1, 1)
         oTable.SetTableData(tableData, vWidths, vAlignments)
         myDialog.Execute()

Die Eigenschaft Value gibt die ausgewählte Zeile in der Tabelle zurück. Wenn keine Zeile ausgewählt ist, wird ein leeres Matrixobjekt zurückgegeben. Der folgende Codeschnipsel zeigt, wie getestet wird, ob eine Zeile in der Tabelle ausgewählt ist.

         rowValues = oTable.Value
         If UBound(rowValues) < 0 Then
             MsgBox "Keine Zeile ausgewählt."
         Else
             MsgBox "Zeile " & oTable.ListIndex & " ist ausgewählt."
         End If

##### In Python

         dlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "myDialog")
         table_control = dlg.Controls("Grid1")
         table_data = (("Column A", "Column B", "Column C"),
                       ("Row 1", 1, 2),
                       ("Row 2", 3, 4),
                       ("Row 3", 5, 6))
         alignments = "LCC"
         widths = (100, 50, 50)
         table_control.SetTableData(table_data, widths, alignments)
         dlg.Execute()

         bas = CreateScriptService("Basic")
         row_values = table_control.Value
         if len(row_values) == 0:
             bas.MsgBox("No row selected.")
         else:
             bas.MsgBox(f"Row {table_control.ListIndex} is selected.")

## WriteLine

Fügt am Ende eines mehrzeiligen Textfelds eine neue Zeile hinzu. Gegebenenfalls wird ein Zeilenumbruch eingefügt. Die Methode gibt bei Erfolg True zurück.

Ein Fehler wird ausgelöst, wenn das eigentliche Steuerelement nicht vom Typ TextField oder nicht mehrzeilig ist.

### Syntax:

svc.WriteLine(opt line: str): bool

### Parameter:

Zeile: Die einzufügende Zeichenfolge. Standard ist eine leere Zeile.

### Beispiel:

##### In Basic

          Dim oDlg As Object, oControl As Object
          Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
          Set oControl = oDlg.Controls("thisControl")
          oControl.WriteLine("a new line")

##### In Python

         dlg = CreateScriptService('SFDialogs.Dialog', None, None, 'myDialog')
         ctrl = dlg.Controls('thisControl')
         ctr.WriteLine("a new line")

Alle ScriptForge Basic-Routinen oder Bezeichner, denen ein Unterstrich "_" vorangestellt ist, sind für den internen Gebrauch reserviert. Sie sind nicht für die Verwendung in Basic-Makros oder Python-Skripten vorgesehen.

Verwandte Themen

Dienst SFDialogs.Dialog

Dienst ScriptForge.String

Dienst ScriptForge.UI