SFDialogs.DialogControl service

Inhoud

# service SFDialogs.DialogControl

De service DialogControl beheert de bedieningselementen die horen bij een dialoogvenster dat is gedefinieerd met de Basic Dialog Editor. Elk exemplaar van de huidige service vertegenwoordigt een enkel besturingselement in een dialoogvenster.

De focus ligt op het verkrijgen en instellen van de waardes die worden weergegeven door de bedieningselementen van het dialoogvenster. Opmaak is toegankelijk via de eigenschappen XControlModel en XControlView.

Merk op dat de unieke inhoud van de eigenschap DialogControl.Value varieert afhankelijk van het type besturingselement.

Speciale aandacht wordt besteed aan besturingen van het type boombesturing. Het is gemakkelijk om een boom te bevolken, tak voor tak, of met een set takken tegelijk. Het vullen van een boombesturing kan statisch of dynamisch worden uitgevoerd.

De service SFDialogs.DialogControl is nauw verwant aan de SFDialogs.Dialog-service.

## Service aanroep

Voordat de service DialogControl gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geïmporteerd:

• Basic macro's kunnen de bibliotheek ScriptForge laden met de instructie:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scripts kunnen de module scriptforge importeren met:
from scriptforge import CreateScriptService

De service DialogControl wordt aangeroepen vanuit een bestaande instantie van de service Dialog via de methode Controls(). Het dialoogvenster moet worden gestart met de service SFDialogs.Dialog.

          Dim myDialog As Object, myControl As Object
          Set myDialog = CreateScriptService("SFDialogs.Dialog", "GlobalScope", myLibrary, DialogName)
          Set myControl = myDialog.Controls("myTextBox")
          myControl.Value = "Dialog started at " & Now()
          myDialog.Execute()
          ' ... de werkelijke waardes van de besturing verwerken
          myDialog.Terminate()

         from time import localtime, strftime
         dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', lib_name, dlg_name)
         text = dlg.Controls('myTextBox')
         text.Value = "Dialog started at " + strftime("%a, %d %b %Y %H:%M:%S", localtime())
         dlg.Execute()
         # ... de werkelijke waardes van de besturing verwerken
         dlg.Terminate()

## De DialogControl-instantie ophalen die een besturingsgebeurtenis heeft geactiveerd

Een instantie van de DialogControl-service kan worden opgehaald via de SFDialogs.DialogEvent-service, op voorwaarde dat de dialoog is gestart met de Dialog-service. In het onderstaande voorbeeld bevat oControl de instantie DialogControl die de control-gebeurtenis heeft geactiveerd.

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

Of Python gebruiken:

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

Merk op dat in de voorgaande voorbeelden het voorvoegsel "SFDialogs." kan worden weggelaten wanneer dit passend wordt geacht.

## Uitzonderingen afhandelen in eventhandlers

Bij het maken van een gebeurtenishandler voor besturingsgebeurtenissen is het een goede gewoonte om fouten binnen de subroutine zelf af te handelen. Stel bijvoorbeeld dat de onderstaande gebeurtenishandler wordt aangeroepen wanneer op de knop wordt geklikt.

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

SF_Exception.Clear aanroepen als u niet wilt dat de fout zich voortplant, nadat de uitvoering van het dialoogvenster is beëindigd.

Gebruik in Python native try/except-blokken voor het afhandelen van uitzonderingen, zoals hieronder getoond:

        def on_button_clicked(event=None):
            try:
                oControl = CreateScriptService("DialogEvent", event)
                # De gebeurtenis verwerken
            except Exception as e:
                # Het object "bas" hieronder is een instantie van de Basic-service
                bas.MsgBox(str(e))

## Besturingstypes

De service DialogControl is beschikbaar voor deze besturingstypes:

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

Het besturingselementtype TabPageContainer is niet gedefinieerd in de Dialoog-editor.

## Eigenschappen

Naam | AlleenLezen | Type | Toepasbaar op | Beschrijving
--- | --- | --- | --- | ---
Border | Ja | String | Button, … | De eigenschap Rand verwijst naar de omgeving van het besturingselement: "3D", "FLAT" of "NONE".
Cancel | Nee | Boolean | Button | Geeft aan of een opdrachtknop het gedrag van een knop Annuleren heeft of niet.
Caption | Nee | String | Button, CheckBox, FixedLine, FixedText, GroupBox, Hyperlink, RadioButton | Specificeert de tekst die bij het besturingselement hoort.
ControlType | Ja | String | Alle | Een van de hierboven genoemde soorten.
CurrentNode | Nee | UNO -object | TreeControl | Het momenteel bovenste knooppunt dat is geselecteerd in de boomstructuur. Raadpleeg XmutableTreeNode in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.
Default | Nee | Boolean | Button | Geeft aan of een opdrachtknop de standaardknop (OK) is.
Enabled | Nee | Boolean | Alle | Geeft aan of het besturingselement toegankelijk is met de cursor.
Format | Nee | String | DateField, TimeField, FormattedField (alleen-lezen) | Specificeert de opmaak dat wordt gebruikt om datums en tijden weer te geven. Het moet één van deze tekenreeksen zijn: Voor datums: "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". Voor tijden: "24h short", "24h long", "12h short", "12h long".
ListCount | Ja | Long | ComboBox, ListBox, TableControl | Specificeert het aantal rijen in een Keuzelijst, een Keuzelijst met invoerveld of een Tabelbesturing.
ListIndex | Nee | Long | ComboBox, ListBox, TableControl | Specificeert welk item is geselecteerd in een Keuzelijst, een Keuzelijst met invoerveld of een Tabelbesturing.
Locked | Nee | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, TextField, TimeField | Geeft aan of het besturingselement alleen-lezen is.
MultiSelect | Nee | Boolean | ListBox | Geeft aan of een gebruiker meerdere selecties kan maken in een keuzelijst.
Name | Ja | String | Alle | De naam van het besturingselement.
Page | Nee | Integer | Alle | Een dialoog kan meerdere bladen hebben die stap voor stap door de gebruiker kunnen worden doorlopen. De eigenschap Page van het Dialog-object definieert welke pagina van het dialoogvenster actief is. De eigenschap Page van een besturingselement definieert de pagina van het dialoogvenster waarop het besturingselement zichtbaar is.
Parent | Ja | service Dialog | Alle | De bovenliggende SFDialogs.Dialog klasseobjectinstantie.
Picture | Nee | String | Button, ImageControl | Specificeert de bestandsnaam die een bitmap of ander type afbeelding bevat die moet worden weergegeven op het opgegeven besturingselement. De bestandsnaam moet voldoen aan het kenmerk FileNaming van de service ScriptForge.FileSystem.
RootNode | Ja | UNO -object | TreeControl | Een object dat het laagste wortelknooppunt vertegenwoordigt (meestal is er maar één zo'n wortelknooppunt). Raadpleeg XmutableTreeNode in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.
RowSource | Nee | Array of strings | ComboBox, ListBox | Specificeert de gegevens in een keuzelijst met invoervak of een keuzelijst.
TabIndex | Ja | Numeric | All | De eigenschap TabIndex specificeert de plaats van een besturingselement in de tabvolgorde in het dialoogvenster.
Text | Ja | String | ComboBox, FileControl, FormattedField, PatternField, TextField | Geeft toegang tot de tekst die door het besturingselement wordt weergegeven.
TipText | Nee | String | Alle | Hiermee geeft u de tekst op die als knopinfo wordt weergegeven wanneer u de muisaanwijzer boven het besturingselement houdt.
TripleState | Nee | Boolean | CheckBox | Geeft aan of het keuzevakje gedimd (grijs) kan worden weergegeven of niet.
URL | Nee | String | Hyperlink | De URL die moet worden geopend wanneer op het besturingselement wordt geklikt.
Value | Nee | Variant |  | Raadpleeg Waarde-eigenschappen
Visible | Nee | Boolean | Alle | Geeft aan of het besturingselement verborgen of zichtbaar is.
XControlModel | Ja | UNO -object | Alle | Het UNO-object dat het besturingsmodel vertegenwoordigt. Raadpleeg XControlModel en UnoControlDialogModel in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.
XControlView | Ja | UNO -object | Alle | Het UNO-object dat de controleweergave vertegenwoordigt. Raadpleeg XControl en UnoControlDialog in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.
XTreeDataModel | Ja | UNO -object | TreeControl | Het UNO-object dat het boombesturingsgegevensmodel vertegenwoordigt. Raadpleeg XMutableTreeDataModel in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.
XGridColumnModel | Ja | UNO -object | TableControl | Het UNO-object dat het tabelbesturingsgegevensmodel vertegenwoordigt. Raadpleeg XGridColumnModel in de documentatie van de Application Programming Interface (API) voor gedetailleerde informatie.
XGridDataModel | Ja | UNO -object | TableControl | Het UNO-object dat het datamodel voor boombeheer vertegenwoordigt. Raadpleeg XGridDataModel in de documentatie van de Application Programming Interface (API) voor gedetailleerde informatie.

## De Waarde-eigenschappen

Type besturingselement | Type | Beschrijving
--- | --- | ---
Button | Boolean | Alleen voor aan/uit knoppen
CheckBox | Booleaans of geheel getal | 0, False: niet aangevinkt 1, True: aangevinkt 2: uitgegrijsd, weet niet
ComboBox | String | De geselecteerde aardwachter. De karakteristieke ListIndex is een alternatieve optie.
CurrencyField | Numeriek |
DateField | Date |
FileControl | String | Een bestandsnaam die is opgemaakt in overeenstemming met de eigenschap FileNaming van de service ScriptForge.FileSystem
FormattedField | Tekenreeks of numeriek |
ListBox | Tekenreeks of matrix van tekenreeksen | De geselecteerde rij(en) als scalair of als matrix, afhankelijk van de attribuut MultiSelect
NumericField | Numeriek |
PatternField | String |
ProgressBar | Numeriek | Moet binnen de vooraf gedefinieerde grenzen vallen
RadioButton | Boolean | Elke knop heeft zijn eigen naam. Ze zijn aan elkaar gekoppeld als hun TAB-posities aaneengesloten zijn. Als een keuzerondje is ingesteld op True, worden de andere gerelateerde knoppen automatisch ingesteld op False
ScrollBar | Numeriek | Moet binnen de vooraf gedefinieerde grenzen vallen
TabPageContainer | Numeric | Een dialoogvenster kan meerdere genummerde tabbladen bevatten die herkenbaar of wijzigbaar zijn via hun eigenschap Waarde.
TableControl | Array | Eendimensionale matrix met de gegevens van de momenteel geselecteerde rij.
TextField | String | De tekst die in het veld verschijnt
TimeField | Date |

Er is geen eigenschap Value voor de dialoogbesturingselementen GroupBox, Hyperlink, ImageControl en TreeControl .

## Eigenschappen gebeurtenis

On… gebeurtenis-eigenschappen zijn URI-reeksen die verwijzen naar een script dat wordt geactiveerd voor een gebeurtenis. Lees de specificatie in de scripting framework URI-specificatie.

Naam (event API koppeling) | Beschrijving zoals aangegeven in de Basic IDE
--- | ---
OnActionPerformed | Actie uitvoeren
OnAdjustmentValueChanged | Tijdens aanpassen
OnFocusGained | Bij het verkrijgen van focus
OnFocusLost | Bij het verliezen van focus
OnItemStateChanged | Itemstatus gewijzigd
OnKeyPressed | Toets ingedrukt
OnKeyReleased | Toets losgelaten
OnMouseDragged | Muis bewogen tijdens toetsaanslagen
OnMouseEntered | Muis binnen
OnMouseExited | Muis buiten
OnMouseMoved
OnMousePressed | Muisknop ingedrukt
OnMouseReleased | Muisknop losgelaten
OnNodeExpanded | (Niet in Basic IDE) wanneer de uitbreidingsknop wordt ingedrukt op een knooppunt in een boomstructuur
OnNodeSelected | (Niet in Basic IDE) wanneer een knooppunt in een boomstructuur is geselecteerd
OnTabSelected | (Niet in BASIC-IDE) wanneer een tabblad in een TabPage-besturingselement is geselecteerd
OnTextChanged | Tekst aangepast

Tip: Alle Aan…-eigenschappen kunnen programmatisch worden ingesteld.
Hoe gegevens in een boomstructuur worden weergegeven-voorbeeld in LibreOffice Wiki demonstreert dit.

Het toewijzen van gebeurtenissen via de Basic IDE en het toewijzen van gebeurtenissen via macro's sluiten elkaar uit.

## Methodes

Lijst met methodes in de service DialogControl
AddSubNode AddSubTree CreateRoot | FindNode Resize SetFocus | SetTableData WriteLine

## AddSubNode

Maak en retourneer een nieuw knooppunt van de boomstructuur als een UNO-object dat ondergeschikt is aan een bovenliggend knooppunt. Raadpleeg XMutableTreeNode in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.

Deze methode kan worden aangeroepen voordat het dialoogvenster wordt weergegeven om de initiële boomstructuur te bouwen. Het kan ook worden aangeroepen vanuit een dialoog of controlegebeurtenis - met behulp van de gebeurtenis OnNodeExpanded - om de boom dynamisch te voltooien.

### Syntaxis:

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

### Parameters:

parentnode: Een knooppunt UNO-object, van het type com.sun.star.awt.tree.XMutableTreeNode.

displayvalue: De tekst die in de boomstructuur verschijnt.

datavalue: Elke waarde die is gekoppeld aan het nieuwe knooppunt. datavalue kan een tekenreeks, een getal of een datum zijn. Laat het argument weg als het niet van toepassing is.

### Voorbeeld:

LibreOffice Basic- en Python-voorbeelden halen het dialoogvenster myDialog van het huidige document uit de bibliotheek 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

Retourneert True wanneer een subboom, ondergeschikt aan een bovenliggend knooppunt, met succes in een boomstructuur kon worden ingevoegd. Als het bovenliggende knooppunt al onderliggende knooppunten had voordat deze methode werd aangeroepen, worden de onderliggende knooppunten gewist.

Deze methode kan worden aangeroepen voordat het dialoogvenster wordt weergegeven om de initiële boomstructuur te bouwen. Het kan ook worden aangeroepen vanuit een dialoog of controlegebeurtenis - met behulp van de gebeurtenis OnNodeExpanded - om de boom dynamisch te voltooien.

### Syntaxis:

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

### Parameters:

parentnode: Een knooppunt UNO-object, van het type com.sun.star.awt.tree.XMutableTreeNode.

flattree: een tweedimensionale matrix gesorteerd op de kolommen die de weergegeven waardes bevatten. Een dergelijke matrix kan worden uitgegeven door de methode GetRows die wordt toegepast op de service SFDatabases.Database. Als een matrix-item dat de tekst bevat die moet worden weergegeven, Empty of Null is, wordt er geen nieuwe subnode gemaakt en wordt de rest van de rij overgeslagen.

          Flat tree    >>>>    Resulterende subboom
          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: Als de standaardwaarde False wordt gebruikt, bevat elke kolom van flattree de tekst die moet worden weergegeven in de boomstructuur. Wanneer True, staan de teksten die moeten worden weergegeven (displayvalue) in kolommen 0, 2, 4, ... terwijl de gegevenswaardes (datavalue) staan in kolommen 1, 3, 5, ...

### Voorbeeld:

##### 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

Retourneert een nieuw hoofdknooppunt van het boombesturingselement, als een knooppunt UNO-object van het type com.sun.star.awt.tree.XMutableTreeNode. De nieuwe boomwortel wordt ingevoegd onder reeds bestaande wortelknooppunten. Raadpleeg XMutableTreeNode in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.

Deze methode kan worden aangeroepen voordat het dialoogvenster wordt weergegeven om de initiële boomstructuur te bouwen. Het kan ook worden aangeroepen vanuit een dialoogvenser of besturingsgebeurtenis om de boom dynamisch te voltooien.

### Syntaxis:

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

### Parameters:

displayvalue: De tekst die in de boomstructuur verschijnt.

datavalue: Elke waarde die is gekoppeld aan het nieuwe knooppunt. datavalue kan een tekenreeks, een getal of een datum zijn. Laat het argument weg als het niet van toepassing is.

### Voorbeeld:

##### 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

Doorloopt de boom en vindt recursief, beginnend bij de wortel, een knoop die aan een aantal criteria voldoet. Ofwel - 1 overeenkomst is genoeg - waarbij de weergavewaarde overeenkomt met het patroon displayvalue of de gegevenswaarde gelijk is aan datavalue. De vergelijkingen kunnen al dan niet hoofdlettergevoelig zijn. Het eerste overeenkomende exemplaar wordt geretourneerd als een knooppunt UNO-object van het type com.sun.star.awt.tree.XMutableTreeNode. Raadpleeg XMutableTreeNode in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.

Indien niet gevonden, retourneert de methode Nothing, om te testen met de ingebouwde functie IsNull().

Deze methode kan worden aangeroepen voordat het dialoogvenster wordt weergegeven om de initiële boomstructuur te bouwen. Het kan ook worden aangeroepen vanuit een dialoog of besturingsgebeurtenis.

### Syntaxis:

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

### Parameters:

Eén argument uit displayvalue of datavalue moet worden opgegeven. Als beide aanwezig zijn, is één overeenkomst voldoende om het knooppunt te selecteren.

displayvalue: het patroon waaraan moet worden gekoppeld. Raadpleeg de SF_String.IsLike() methode voor de lijst met mogelijke jokertekens. Als deze gelijk is aan de tekenreeks met lengte nul (standaard), wordt er niet naar deze weergavewaarde gezocht.

datavalue: Elke waarde die is gekoppeld aan het nieuwe knooppunt. datavalue kan een tekenreeks, een getal of een datum zijn. Laat het argument weg als het niet van toepassing is.

Hoofdlettergevoelig : Standaardwaarde is False

### Voorbeeld:

##### 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

Verplaats de linkerbovenhoek van een dialoogvensterbesturingselement naar nieuwe coördinaten en/of wijzig de afmetingen ervan. Retourneert True als het wijzigen van de grootte is gelukt.

### Syntaxis:

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

### Parameters:

Alle afstanden worden uitgedrukt in Map AppFont unit en worden gemeten vanaf de linkerbovenhoek van het bovenliggende dialoogvenster. Zonder argumenten past de methode het besturingselement aan naar de "voorkeursgrootte", een grootte die wordt aangepast afhankelijk van de feitelijke inhoud ervan. Ontbrekende argumenten blijven ongewijzigd.

Left: De horizontale afstand vanaf de linkerbovenhoek

Top: De verticale afstand vanaf de linkerbovenhoek

Width: de horizontale breedte van de rechthoek met het besturingselement

Height: de verticale hoogte van de rechthoek met het besturingselement

### Voorbeeld:

##### In BASIC

          Dim oControl As Object
          Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
          Set oControl = oDlg.Controls("thisControl")
          oControl.Resize(100, 200, Height:=6000) ' Breedte is ongewijzigd

##### In Python

          dlg = CreateScriptService('Dialog', None, None, 'myDialog')
          ctrl = dlg.Controls('thisControl')
          ctrl.Resize(300, 200, 1500)  # Hoogte is ongewijzigd

## SetFocus

Stel de focus op de besturing. Retourneer True als het scherpstellen gelukt is.

Deze methode wordt vaak aangeroepen vanuit een dialoog of controlegebeurtenis.

### Syntaxis:

svc.SetFocus(): bool

### Voorbeeld:

##### 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

Vult een TableControl met de gegeven gegevens. Alle reeds bestaande gegevens worden gewist voordat de nieuwe gegevens worden ingevoerd die als argument zijn doorgegeven.

Wanneer de TableControl aan het dialoogvenster is toegevoegd, is het mogelijk om de Basic IDE te gebruiken om te definiëren of kolom- en rijkoppen in de tabel worden weergegeven. Als de TableControl kolom- en/of rijkoppen heeft, worden de eerste kolom en/of rij in de verstrekte gegevensmatrix gebruikt als labels voor de tabelkoppen.

Deze methode retourneert True wanneer succesvol.

### Syntaxis:

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

### Parameters:

dataarray: Gegevens die in de tabel moeten worden ingevoerd, worden weergegeven als een matrix van marixen in Basic of een tupel van tupels in Python. De gegevens moeten kolom- en rijkoppen bevatten als ze moeten worden weergegeven door de TableControl.

widths: Matrix met de relatieve breedte van elke kolom. Met andere woorden: widths = (1, 2) betekent dat de tweede kolom twee keer zo breed is als de eerste. Als het aantal waardes in de matrix kleiner is dan het aantal kolommen in de tabel, wordt de laatste waarde in de matrix gebruikt om de breedte van de overige kolommen te definiëren.

alignments: Definieert de uitlijning in elke kolom als een tekenreeks waarin elk teken "L" (Links), "C" (Midden), "R" (Rechts) of " " kan zijn (witruimte, standaard, wat betekent dat links voor tekenreeksen en rechts voor numerieke waardes). Als de lengte van de tekenreeks korter is dan het aantal kolommen in de tabel, wordt het laatste teken in de tekenreeks gebruikt om de uitlijning van de resterende kolommen te definiëren.

RowHeaderWidth: breedte van de rijkopkolom, uitgedrukt in Map AppFont units. Standaard = 10. Het argument wordt genegeerd als TableControl geen rijkop heeft.

### Voorbeeld:

##### In BASIC

In het volgende voorbeeld wordt ervan uitgegaan dat het dialoogvenster myDialog een TableControl heeft met de naam Grid1 met de eigenschappen "Rijkop weergeven" en "Kolomkop weergeven" ingesteld op "Ja".

         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()

De eigenschap Value retourneert de geselecteerde rij in de tabel. Als er geen rij is geselecteerd, wordt een leeg Matrix-object geretourneerd. Het volgende codefragment laat zien hoe u kunt testen of een rij in de tabel is geselecteerd.

         rowValues = oTable.Value
         If UBound(rowValues) < 0 Then
             MsgBox "Geen rij geselecteerd."
         Else
             MsgBox "Rij " & oTable.ListIndex & " is geselecteerd."
         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

Voeg een nieuwe regel toe aan het einde van een tekstveld met meerdere regels. Waar nodig wordt een teken voor een nieuwe regel ingevoegd. De methode retourneert True wanneer succesvol.

Er treedt een fout op als het feitelijke besturingselement niet van het type TextField is of niet uit meerdere regels bestaat.

### Syntaxis:

svc.WriteLine(opt line: str): bool

### Parameters:

Line: De tekenreeks die moet worden ingevoegd. Standaard is een lege regel.

### Voorbeeld:

##### 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-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.

Verwante onderwerpen

SFDialogs.Dialog-service

ScriptForge.String service

Service ScriptForge.UI