Innhold

# SFDialogs.DialogControl tjeneste

Tjenesten DialogControl administrerer kontrollene som tilhører en dialog som er definert med Basic Dialog Editor. Hver forekomst av gjeldende tjeneste representerer en enkelt kontroll i en dialogboks.

Fokuset er satt på å få og stille inn verdiene som vises av kontrollene i dialogboksen. Formatering er tilgjengelig via egenskapene XControlModel og XControlView.

Merk at innholdet i den unike DialogControl.Value egenskapen varierer i henhold til kontrolltypen.

En spesiell oppmerksomhet er gitt til kontroller av typen trekontroll. Det er lett å befolke et tre, enten gren for gren, eller med et sett med grener på en gang. Fylling av en trekontroll kan utføres statisk eller dynamisk.

SFDialogs.DialogControl tjenesten er nært knyttet til SFDialogs.Dialog tjenesten.

## Tjenestepåkallelse

Før du bruker DialogControl-tjenesten, må ScriptForge-biblioteket lastes eller importeres:

• Grunnleggende makroer krever å laste ScriptForge-biblioteket ved hjelp av følgende setning:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-skript krever import fra scriptforge-modulen:
fra scriptforge import CreateScriptService

DialogControl-tjenesten påkalles fra en eksisterende Dialog-tjenesteforekomst gjennom metoden Controls(). Dialogen må startes med SFDialogs.Dialog-tjenesten.

          Dim myDialog As Object, myControl As Object
          Set myDialog = CreateScriptService("SFDialogs.Dialog", "GlobalScope", myLibrary, DialogName)
          Set myControl = myDialog.Controls("myTextBox")
          myControl.Value = "Dialogen startet " & Now()
          myDialog.Execute()
          ' ... behandle kontrollens faktiske verdier
          myDialog.Terminate()

         from time import localtime, strftime
         dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', lib_name, dlg_name)
         text = dlg.Controls('myTextBox')
         text.Value = "Dialogen startet " + strftime("%a, %d %b %Y %H:%M:%S", localtime())
         dlg.Execute()
         # ... behandle kontrollens faktiske verdier
         dlg.Terminate()

## Henter DialogControl-forekomsten som utløste en kontrollhendelse

En forekomst av DialogControl-tjenesten kan hentes via SFDialogs.DialogEvent-tjenesten, forutsatt at dialogen ble startet med Dialog-tjenesten. I eksemplet nedenfor inneholder oControl DialogControl-forekomsten som utløste kontrollhendelsen.

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

Eller bruk Python:

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

Merk at i de foregående eksemplene kan prefikset "SFDialogs." utelates når det anses hensiktsmessig.

## Håndtering av unntak i hendelsesbehandlere

Når du oppretter en hendelsesbehandler for kontrollhendelser, er det god praksis å håndtere feil inne i selve subrutinen. Anta for eksempel at hendelsesbehandleren nedenfor kalles når knappen klikkes.

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

Ring SF_Exception.Clear hvis du ikke vil at feilen skal forplante seg etter at dialogboksen er avsluttet.

I Python, bruk native try/except-blokker for unntakshåndtering som vist nedenfor:

        def on_button_clicked(event=None):
            try:
                oControl = CreateScriptService("DialogEvent", event)
                # Kjør hendelsen
            except Exception as e:
                # Objektet "bas" nedenfor er en forekomst av Basic-tjenesten
                bas.MsgBox(str(e))

## Kontrolltyper

Tjenesten DialogControl er tilgjengelig for disse kontrolltypene:

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

Kontrolltypen TabPageContainer er ikke definert i dialogredigereren.

## Tjenesten DialogControl er tilgjengelig for disse kontrolltypene:

Navn | Skrivebeskyttet | Type | Gjelder for | Beskrivelse
--- | --- | --- | --- | ---
Border | Ja | String | Button, … | Egenskapen Border refererer til omgivelsene til kontrollen: "3D", "FLAT" eller "INGEN".
Cancel | Nei | Boolean | Button | Angir om en kommandoknapp har oppførselen til en Avbryt-knapp eller ikke.
Caption | Nei | String | Button, CheckBox, FixedLine, FixedText, GroupBox, Hyperlink, RadioButton | Angir teksten som er knyttet til kontrollen.
ControlType | Ja | String | Alle | En av typene som er oppført ovenfor.
CurrentNode | Nei | UNO objekt | TreeControl | Den øverste noden som er valgt i trekontrollen. Se XmutableTreeNode-programmeringsgrensesnittet i Application Interface (I) for detaljert informasjon.
Default | Nei | Boolean | Button | Angir om en kommandoknapp er standardknappen (OK).
Enabled | Nei | Boolean | Alle | Angir om kontrollen er tilgjengelig med markøren.
Format | Nei | String | DateField, TimeField, FormattedField (skrivebeskyttet) | Angir formatet som brukes til å vise datoer og klokkeslett. Det må være en av disse strengene: For datoer: "Standard (kort)", "Standard (kort ÅÅ)", "Standard (kort ÅÅÅÅ)", "Standard (lang)", "DD/MM/ÅÅ", "MM/DD/ÅÅ", " ÅÅ/MM/DD", "DD/MM/ÅÅÅÅ", "MM/DD/ÅÅÅÅ", "ÅÅÅÅ/MM/DD", "ÅÅ-MM-DD", "ÅÅÅÅ-MM-DD". For tider: "24t kort", "24t lang", "12t kort", "12t lang".
ListCount | Ja | Long | ComboBox, ListBox, TableControl | Angir antall rader i en ListBox og ComboBox eller en tabellkontroll.
ListIndex | Nei | Long | ComboBox, ListBox, TableControl | Spesifiserer hvilket element som er valgt i en ListBox, en ComboBox eller en TableControl.
Locked | Nei | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, TextField, TimeField | Angir om kontrollen er skrivebeskyttet.
MultiSelect | Nei | Boolean | ListBox | Angir om en bruker kan gjøre flere valg i en listeboks.
Name | Ja | String | Alle | Navnet på kontrollen.
Page | Nei | Integer | Alle | En dialog kan ha flere sider som brukeren kan gå gjennom trinn for trinn. Side-egenskapen til Dialog-objektet definerer hvilken side i dialogboksen som er aktiv. Side-egenskapen til en kontroll definerer siden i dialogboksen der kontrollen er synlig.
Parent | Ja | Dialog tjeneste | Alle | Den overordnede SFDialogs.Dialog klasseobjektforekomsten.
Picture | Nei | String | Button, ImageControl | Angir filnavnet som inneholder en punktgrafikk eller annen type grafikk som skal vises på den angitte kontrollen. Filnavnet må samsvare med FileName-attributtet til ScriptForge.FileSystem-tjenesten.
RootNode | Ja | UNO objekt | TreeControl | Et objekt som representerer den laveste rotnoden (vanligvis er det bare én slik rotnoden). Se XmutableTreeNode-programmeringsgrensesnittet i Application Interface (I) for detaljert informasjon.
RowSource | Nei | Array of strings | ComboBox, ListBox | Spesifiserer dataene i en kombinasjonsboks eller en listeboks.
TabIndex | Ja | Numeric | All | Egenskapen TabIndex spesifiserer en kontrolls plass i tabulatorrekkefølgen i dialogboksen.
Text | Ja | String | ComboBox, FileControl, FormattedField, PatternField, TextField | Gir tilgang til teksten som vises av kontrollen.
TipText | Nei | String | Alle | Angir teksten som vises som et verktøytips når du holder musepekeren over kontrollen.
TripleState | Nei | Boolean | CheckBox | Spesifiserer om avmerkingsboksen kan vises nedtonet (grået) eller ikke.
URL | Nei | String | Hyperlink | URL-en som skal åpnes når kontrollen klikkes.
Value | Nei | Variant |  | Se Verdi-egenskap
Visible | Nei | Boolean | Alle | Angir om kontrollen er skjult eller synlig.
XControlModel | Ja | UNO objekt | Alle | UNO-objektet som representerer kontrollmodellen. Se XControlModel og UnoControlDialogModel i Application Programming Interface (API) informasjonsdokumentasjon for detaljert dokumentasjon
XControlView | Ja | UNO objekt | Alle | UNO-objektet som representerer kontrollvisningen. Se XControl og UnoControlDialog i Application Programming Interface (API) dokumentasjon for detaljert informasjon.
XTreeDataModel | Ja | UNO objekt | TreeControl | UNO-objektet som representerer trekontrolldatamodellen. Se XMutableTreeDataModeli Application Programming Interface (API) for detaljert informasjon.
XGridColumnModel | Ja | UNO objekt | TableControl | UNO-objektet som representerer tabellkontrolldatamodellen. Se XGridColumnModel i dokumentasjonen for Application Programming Interface (API) for detaljert informasjon.
XGridDataModel | Ja | UNO objekt | TableControl | UNO-objektet som representerer datamodellen for rutenettkontroll. Se XGridDataModel i API-dokumentasjonen (Application Programming Interface) for detaljert informasjon.

## Verdi-egenskapen

Kontrolltype | Type | Beskrivelse
--- | --- | ---
Button | Boolean | Kun for veksleknapper
CheckBox | Boolsk eller heltall | 0, usant: ikke merket 1, sant: merket 2: grått, vet ikke
ComboBox | String | Den valgte verdien. Egenskapen ListIndex er et alternativt alternativ.
CurrencyField | Numerisk |
DateField | Date |
FileControl | String | Et filnavn formatert i samsvar med egenskapen FileName til ScriptForge.FileSystem-tjenesten
FormattedField | Streng eller numerisk |
ListBox | Strenger eller en matrise med strenger | De(n) valgte raden(e) som en skalar eller som en matrise avhengig av MultiSelect-attributtet
NumericField | Numerisk |
PatternField | String |
ProgressBar | Numerisk | Må være innenfor de forhåndsdefinerte grensene
RadioButton | Boolean | Hver knapp har sitt eget navn. De er knyttet sammen hvis TAB-posisjonene deres er sammenhengende. Hvis en radioknapp er satt til True, settes de andre relaterte knappene automatisk til Usann
ScrollBar | Numerisk | Må være innenfor de forhåndsdefinerte grensene
TabPageContainer | Numeric | En dialogboks kan ha flere nummererte faner som kan identifiseres eller endres ved deres Verdi-egenskap.
TableControl | Array | Endimensjonal matrise med dataene for den valgte raden.
TextField | String | Teksten som vises i feltet
TimeField | Date |

Det er ingen Value-egenskap for GroupBox, Hyperlink, ImageControl og TreeControl dialogkontroller .

## Hendelsesegenskaper

På… hendelsesegenskaper er URI-strenger som refererer til et skript som utløses for en hendelse. Les spesifikasjonen i URI-spesifikasjonen for skriptrammeverk.

Navn (kobling til hendelses-API) | Beskrivelse som merket i Basic IDE
--- | ---
OnActionPerformed | Utfør handling
OnAdjustmentValueChanged | Mens du justerer
OnFocusGained | Når du mottar fokus
OnFocusLost | Når man mister fokus
OnItemStateChanged | Varestatus endret
OnKeyPressed | Tast trykket
OnKeyReleased | Tasten er sluppet
OnMouseDragged | Musen beveget seg mens tasten trykkes
OnMouseEntered | Mus på innsiden
OnMouseExited | Mus på utsiden
OnMouseMoved
OnMousePressed | Museknapp trykket
OnMouseReleased | Museknappen slippes
OnNodeExpanded | (Ikke i Basic IDE) når utvidelsesknappen trykkes på en node i en trekontroll
OnNodeSelected | (Ikke i Basic IDE) når en node i en trekontroll er valgt
OnTabSelected | (Ikke i Basic IDE) når en fane i en TabPage-kontroll er valgt
OnTextChanged | Tekst endret

Tips: Alle På…-egenskaper kan angis programmatisk.
Hvordan vise data i en trekontroll eksempel i LibreOffice Wiki demonstrerer dette.

Tilordning av hendelser via Basic IDE og tilordning av hendelser via makroer utelukker hverandre.

## Metoder

Liste over metoder i DialogControl-tjenesten
AddSubNode AddSubTree CreateRoot | FindNode Resize SetFocus | SetTableData WriteLine

## AddSubNode

Opprett og returner en ny node av trekontrollen som et UNO-objekt underordnet en overordnet node. Se >XMutableNodeMutelink i Application Programming Interface (API) dokumentasjon for detaljert informasjon.

Denne metoden kan kalles før du viser dialogboksen for å bygge det første treet. Den kan også kalles opp fra en dialog- eller kontrollhendelse - ved å bruke OnNodeExpanded-hendelsen - for å fullføre treet dynamisk.

### Syntaks:

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

### Parametre:

parentnode: Et node UNO-objekt, av typen com.sun.star.awt.tree.XMutableTreeNode.

displayvalue: Teksten som vises i trekontrollboksen.

dataverdi: Enhver verdi knyttet til den nye noden. dataverdi kan være en streng, et tall eller en dato. Utelat argumentet når det ikke er aktuelt.

### Eksempel:

LibreOffice Basic- og Python-eksempler henter gjeldende dokuments myDialog-dialog fra Standard-biblioteket.

##### I 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 ...")

##### I Python

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

## AddSubTree

Returner True når et undertre, underordnet en overordnet node, kunne settes inn i en trekontroll. Hvis den overordnede noden allerede hadde undernoder før denne metoden ble kalt, slettes undernodene.

Denne metoden kan kalles før du viser dialogboksen for å bygge det første treet. Den kan også kalles opp fra en dialog- eller kontrollhendelse - ved å bruke OnNodeExpanded-hendelsen - for å fullføre treet dynamisk.

### Syntaks:

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

### Parametre:

parentnode: Et node UNO-objekt, av typen com.sun.star.awt.tree.XMutableTreeNode.

flattree: en todimensjonal matrise sortert på kolonnene som inneholder visningsverdiene. En slik matrise kan utstedes med GetRows-metoden brukt på SFDatabases.Database-tjenesten. Når et matriseelement som inneholder teksten som skal vises er Empty eller Null, opprettes ingen ny subnode og resten av raden hoppes over.

          Flatt tre >>>> Resulterende undertre
          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: Når False standardverdi brukes, inneholder hver kolonne i flattree teksten som skal vises i trekontrollen. Når True, er tekstene som skal vises (displayvalue) i kolonnene 0, 2, 4, ... mens dataverdiene (datavalue ) er i kolonne 1, 3, 5, ...

### Eksempel:

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

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

Returnerer en ny rotnode for trekontrollen, som et node UNO-objekt av typen com.sun.star.awt.tree.XMutableTreeNode. Den nye treroten settes inn under allerede eksisterende rotnoder. Se >XMutableNodeMutelink i Application Programming Interface (API) dokumentasjon for detaljert informasjon.

Denne metoden kan kalles før du viser dialogboksen for å bygge det første treet. Den kan også kalles opp fra en dialogboks eller kontrollhendelse for å fullføre treet dynamisk.

### Syntaks:

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

### Parametre:

displayvalue: Teksten som vises i trekontrollboksen.

dataverdi: Enhver verdi knyttet til den nye noden. dataverdi kan være en streng, et tall eller en dato. Utelat argumentet når det ikke er aktuelt.

### Eksempel:

##### I Basic

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

##### I Python

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

## FindNode

Traverserer treet og finner rekursivt, med utgangspunkt i roten, en node som oppfyller noen kriterier. Enten - 1 samsvar er nok - at visningsverdien samsvarer med displayvalue-mønsteret eller har dataverdien lik datavalue. Sammenligningene kan være eller ikke skille mellom store og små bokstaver. Den første samsvarende forekomsten returneres som et node UNO-objekt av typen com.sun.star.awt.tree.XMutableTreeNode. Se >XMutableNodeMutelink i Application Programming Interface (API) dokumentasjon for detaljert informasjon.

Når den ikke blir funnet, returnerer metoden Ingenting, for å bli testet med den innebygde funksjonen IsNull().

Denne metoden kan kalles før du viser dialogboksen for å bygge det første treet. Det kan også kalles opp fra en dialogboks eller kontrollhendelse.

### Syntaks:

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

### Parametre:

Ett argument av displayvalue eller datavalue må spesifiseres. Hvis begge er tilstede, er ett samsvar tilstrekkelig for å velge noden.

displayvalue: Mønsteret som skal matches. Se SF_String.IsLike() metode for listen over mulige jokertegn. Når lik null-lengdestrengen (standard), søkes det ikke etter denne visningsverdien.

dataverdi: Enhver verdi knyttet til den nye noden. dataverdi kan være en streng, et tall eller en dato. Utelat argumentet når det ikke er aktuelt.

skiller mellom store og små bokstaver: Standardverdien er Usann

### Eksempel:

##### I Basic

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

##### I Python

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

## Resize

Flytt øverste venstre hjørne av en dialogkontroll til nye koordinater og/eller endre dens dimensjoner. Returner Sann dersom endringen av størrelse var vellykket.

### Syntaks:

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

### Parametre:

Alle avstander er uttrykt i Kart AppFont-enheter og måles fra øverste venstre hjørne av den overordnede dialogboksen. Uten argumenter endrer metoden størrelsen på kontrollen til dens "foretrukket størrelse", en størrelse justert avhengig av dens faktiske innhold. Manglende argumenter forblir uendret.

Venstre: Den horisontale avstanden fra øverste venstre hjørne

Topp: Den vertikale avstanden fra øverste venstre hjørne

Bredde: den horisontale bredden til rektangelet som inneholder kontrollen

Høyde: den vertikale høyden på rektangelet som inneholder kontrollen

### Eksempel:

##### I Basic

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

##### I Python

          dlg = CreateScriptService('Dialog', None, None, 'myDialog')
          ctrl = dlg.Controls('thisControl')
          ctrl.Resize(300, 200, 1500) # Høyden er uendret

## SetFocus

Sett fokus på kontrollen. Returner Sann hvis fokuseringen var vellykket.

Denne metoden kalles ofte fra en dialog- eller kontrollhendelse.

### Syntaks:

svc.SetFocus(): bool

### Eksempel:

##### I Basic

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

##### I Python

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

## SetTableData

Fyller en TableControl med de gitte dataene. Alle eksisterende data tømmes før de nye dataene settes inn som argument.

Når TableControl legges til dialogen, er det mulig å bruke Basic IDE for å definere om kolonne- og radoverskrifter skal vises i tabellen. Hvis TableControl har kolonne- og/eller radoverskrifter, brukes den første kolonnen og/eller raden i den angitte datamatrisen som etiketter for tabelloverskriftene.

Denne metoden returnerer Sann når den er vellykket.

### Syntaks:

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

### Parametre:

dataarray: Data som skal legges inn i tabellen representert som en Array of Arrays i Basic eller en tuppel av tuples i Python. Dataene må inkludere kolonne- og radoverskrifter hvis de skal vises av TableControl.

bredder: Matrise som inneholder de relative breddene til hver kolonne. Med andre ord betyr bredder = (1, 2) at den andre kolonnen er dobbelt så bred som den første. Hvis antallet verdier i matrisen er mindre enn antall kolonner i tabellen, brukes den siste verdien i matrisen til å definere bredden på de gjenværende kolonnene.

justeringer: Definerer justeringen i hver kolonne som en streng der hvert tegn kan være "L" (venstre), "C" (senter), "R" (høyre) eller " " (mellomrom, standard, som betyr venstre for strenger og høyre for numeriske verdier). Hvis lengden på strengen er kortere enn antall kolonner i tabellen, brukes det siste tegnet i strengen til å definere justeringen av de gjenværende kolonnene.

RowHeaderWidth: bredden på radoverskriftskolonnen uttrykt i Kart AppFont-enheter. Standard = 10. Argumentet ignoreres når TableControl ikke har noen radoverskrift.

### Eksempel:

##### I Basic

Følgende eksempel forutsetter at dialogboksen myDialog har en TableControl kalt Grid1 med egenskapene "Vis radoverskrift" og "Vis kolonneoverskrift" satt til " 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()

Egenskapen Verdi returnerer den valgte raden i tabellen. Hvis ingen rad er valgt, returneres et tomt Array-objekt. Følgende kodebit viser hvordan du tester om en rad er valgt i tabellen.

         rowValues = oTable.Value
         If UBound(rowValues) < 0 Then
             MsgBox "Ingen rad er valgt."
         Else
             MsgBox "Row " & oTable.ListIndex & " er valgt."
         End If

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

Legg til en ny linje på slutten av et tekstfelt med flere linjer. Et nylinjetegn vil bli satt inn når det passer. Metoden returnerer True når den er vellykket.

En feil oppstår hvis den faktiske kontrollen ikke er av typen TextField eller ikke er flerlinjet.

### Syntaks:

svc.WriteLine(opt line: str): bool

### Parametre:

Linje: strengen som skal settes inn. Standard er en tom linje.

### Eksempel:

##### I Basic

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

##### I Python

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

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment å brukes i grunnleggende makroer eller Python-skript.

Lignende emner

SFDialoger.Dialog tjeneste

ScriptForge.String tjeneste

ScriptForge.UI tjeneste

Supporter oss!