SFDialogs.DialogControl service

The DialogControl service manages the controls belonging to a dialog defined with the Basic Dialog Editor. Each instance of the current service represents a single control within a dialog box.

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.

tip

The SFDialogs.DialogControl service is closely related to the SFDialogs.Dialog service.


Tjenestepåkallelse

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

Alternatively a control instance can be retrieved via the SFDialogs.DialogEvent service, providing the dialog was initiated with the Dialog service. DialogEvent returns the SFDialogs.DialogControl class instance that triggered the event.


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

     def some_event(event: uno):
         ctrl = CreateScriptService('SFDialogs.DialogEvent', event)
         # ...
   

Note that in previous examples, the prefix "SFDialogs." may be omitted.

Kontrolltyper

Tjenesten DialogControl er tilgjengelig for disse kontrolltypene:

Tjenesten DialogControl er tilgjengelig for disse kontrolltypene:

Navn

Skrivebeskyttet

Type

Gjelder for

Beskrivelse

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

The currently upmost node selected in the tree control. Refer to XmutableTreeNode in Application Programming Interface (API) documentation for detailed information.

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

An object representing the lowest root node (usually there is only one such root node). Refer to XmutableTreeNode in Application Programming Interface (API) documentation for detailed information.

RowSource

Nei

Array of strings

ComboBox, ListBox

Spesifiserer dataene i en kombinasjonsboks eller en listeboks.

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.

Value

Nei

Variant

Refer to Value property

Visible

Nei

Boolean

Alle

Angir om kontrollen er skjult eller synlig.

XControlModel

Ja

UNO
objekt

Alle

The UNO object representing the control model. Refer to XControlModel and UnoControlDialogModel in Application Programming Interface (API) documentation for detailed information.

XControlView

Ja

UNO
objekt

Alle

The UNO object representing the control view. Refer to XControl and UnoControlDialog in Application Programming Interface (API) documentation for detailed information.

XTreeDataModel

Ja

UNO
objekt

TreeControl

The UNO object representing the tree control data model. Refer to XMutableTreeDataModel in Application Programming Interface (API) documentation for detailed information.


Verdiegenskaper

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

TableControl

Array

Endimensjonal matrise med dataene for den valgte raden.

TextField

String

Teksten som vises i feltet

TimeField

Date


Hendelsesegenskaper

Returns a URI string with the reference to the script triggered by the event. Read its specification in the scripting framework URI specification.

Navn

Skrivebeskyttet

Beskrivelse som merket i Basic IDE

OnActionPerformed

Ja

Utfør handling

OnAdjustmentValueChanged

Ja

Mens du justerer

OnFocusGained

Ja

Når du mottar fokus

OnFocusLost

Ja

Når man mister fokus

OnItemStateChanged

Ja

Varestatus endret

OnKeyPressed

Ja

Tast trykket

OnKeyReleased

Ja

Tasten er sluppet

OnMouseDragged

Ja

Musen beveget seg mens tasten trykkes

OnMouseEntered

Ja

Mus på innsiden

OnMouseExited

Ja

Mus på utsiden

OnMouseMoved

Ja

Mus beveges

OnMousePressed

Ja

Museknapp trykket

OnMouseReleased

Ja

Museknappen slippes

OnNodeExpanded

Nei

(Ikke i Basic IDE) når utvidelsesknappen trykkes på en node i en trekontroll

OnNodeSelected

Nei

(Ikke i Basic IDE) når en node i en trekontroll er valgt

OnTextChanged

Ja

Tekst endret


Metoder

Liste over metoder i DialogControl-tjenesten

AddSubNode
AddSubTree
CreateRoot

FindNode
SetFocus

SetTableData
WriteLine


AddSubNode

Create and return a new node of the tree control as a UNO object subordinate to a parent node. Refer to XMutableTreeNode in Application Programming Interface (API) documentation for detailed information.

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:

Collabora Office 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. Refer to XMutableTreeNode in Application Programming Interface (API) documentation for detailed information.

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. Refer to XMutableTreeNode in Application Programming Interface (API) documentation for detailed information.

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: The pattern to be matched. Refer to SF_String.IsLike() method for the list of possible wildcards. When equal to the zero-length string (default), this display value is not searched for.

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

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): 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 widths = Array(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.

Eksempel:

I Basic

The following example assumes that the dialog myDialog has a TableControl named Grid1 with "Show header row" and "Show column row" properties set to "Yes".


     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")
   
warning

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.


Supporter oss!