Tjenesten SFDialogs.DialogControl

Tjenesten DialogControl håndterer de kontroller, der hører til en dialog, der er defineret med Basics Dialogredigering. Hver forekomst af den aktuelle tjeneste repræsenterer en enkelt kontrol indenfor et dialog felt.

Fokus sættes på at hente og sætte de værdier, der vises af dialogfeltets kontroller. Formatering er tilgængelig via egenskaberne XControlModel and XControlView.

Bemærk, at indholdet af den unikke egenskab DialogControl.Value (dialogkontrol.værdi) varierer efter kontroltypen.

Kontrolelementer ordnet i en træstruktur får særlig opmærksomhed. Det er let at fylde et træ med værdier, enten gren for gren eller med flere grene på én gang. Indsættelse af værdier i et "kontroltræ" kan gøres statisk eller dynamisk.

tip

Tjenesten SFDialogs.DialogControl er tæt beslægtet med tjenesten SFDialogs.Dialog.


Kald af tjeneste

The DialogControl service is invoked from an existing Dialog service instance through its Controls() method. The dialog must be initiated with the SFDialogs.Dialog service.


      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()
      ' ... bearbejd kontrollens faktiske værdier
      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()
     # ... process the controls actual values
     dlg.Terminate()
   

Alternativt kan en kontrolforekomst hentes via tjenesten SFDialogs.DialogEvent, forudsat, at dialogen blev initieret med tjenesten Dialog. DialogEvent returnerer den klasseforekomsten SFDialogs.DialogControl, der udløste hændelsen.


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

Bemærk i de foregående eksemplar, at præfixet "SFDialogs." kan udelades.

Kontroltyper

Tjenesten DialogControl er tilgængelig for disse kontroltyper:

Egenskaber

Navn

Skrivebeskyttet

Type

Gældende for

Beskrivelse

Cancel

Nej

Boolean

Button

Angiver, om en kommandoknap har eller ikke har en Annuller-knaps adfærd.

Caption

Nej

String

Button, CheckBox, FixedLine, FixedText, GroupBox, RadioButton

Angiver den tekst, der er tilknyttet kontrollen.

ControlType

Ja

String

Alt

En af typerne, der er oplistet ovenfor.

CurrentNode

Nej

UNO
objekt

TreeControl

Den aktuelt højeste valgte forgrening i kontroltræet. Se mere detaljeret information om XmutableTreeNode (Xforanderlig forgrening) i dokumentationen til Application Programming Interface (API).

note

Denne egenskab er tilgængelig fra LibreOffice 7.2 og fremad.


Default

Nej

Boolean

Button

Angiver, om en kommandoknap er standard-(OK)-knappen.

Enabled

Nej

Boolean

Alt

Angiver, om kontrollen er tilgængelig med markøren.

Format

Nej

String

DateField, TimeField, FormattedField

(skrivebeskyttet)

Angiver, at formatet bruges til at vise datoer og klokkeslæt. Det skal være en af disse strenge.

Til datoer: "Standard (kort)", "Standard (kort YY)", "Standard (kort YYYY)", "Standard (lang)", "DD/MM/YY", "MM/DD/YY", "YY/MM/DD", "DD/MM/YYYY", "MM/DD/YYYY" , "YYYY/MM/DD", "YY-MM-DD", "YYYY-MM-DD".

Til klokkeslæt: "24t kort", "24t lang", "12t kort", "12t lang".

ListCount

Ja

Long

ComboBox, ListBox

Angiver antallet af rækker i et listefelt eller et kombinationsfelt.

ListIndex

Nej

Long

ComboBox, ListBox

Angiver, hvilket element, der valgt i et listefelt eller kombinationsfelt.

Locked

Nej

Boolean

ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, TextField, TimeField

Angiver, om kontrollen er skrivebeskyttet.

MultiSelect

Nej

Boolean

ListBox

Angiver, om en bruger kan foretage flere valgt i et listefelt.

Name

Ja

String

Alt

Kontrollens navn.

Page

Nej

Integer

Alt

En dialog kan have flere sider, der kan gennemgĂĄs trin for trin af brugeren. Dialogobjektets Side-egenskab definerer, hvilken af dialogens sider, der er aktiv.

En kontrols Sideegenskab definerer den side i dialogen, hvor kontrollen er synlig.

Parent

Ja

Tjenesten Dialog

Alt

Forældreklassen SFDialogs.Dialogs objektforekomst.

Picture

Nej

String

Button, ImageControl

Angiver, at filnavnet, der indeholder et bitmap eller en anden type grafik, vises pĂĄ den angivne kontrol. Filnavnet skal leve op til attributten FileNaming i tjenesten ScriptForge.FileSystem.

RootNode

Ja

UNO
objekt

TreeControl

Et objekt, der repræsenterer den nederste rodforgrening (sædvanligvis er kun en rodforgrening af den slags) Se detaljeret information om XmutableTreeNode (Xforanderlig forgrening) i dokumentation til Application Programming Interface (API).

note

Denne egenskab er tilgængelig fra LibreOffice 7.2 og fremad.


RowSource

Nej

Array of strings

ComboBox, ListBox

Angiver de data, der er indeholdt i et kombinationsfelt eller et listefelt.

Text

Ja

String

ComboBox, FileControl, FormattedField, PatternField, TextField

Giver adgang til den tekst, der vises af kontrollen.

TipText

Nej

String

Alt

Angiver den tekst, der vises som et værktøjstip, når du holder markøren over kontrollen.

TripleState

Nej

Boolean

CheckBox

Angiver, om kontrollens afkrydsningsfelt mĂĄ vises nedtonet (grĂĄt) eller ej.

Value

Nej

Variant

Se egenskaben Value (værdi)

Visible

Nej

Boolean

Alt

Angiver, om kontrollen er skjult eller synlig.

XControlModel

Ja

UNO
objekt

Alt

UNO-objektet repræsenterer kontrolmodellen. Se detaljeret information i XControlModel og UnoControlDialogModel i APIens (Application Programming Interface) dokumentation.

XControlView

Ja

UNO
objekt

Alt

UNO-objektet repræsenterer kontrolvisningen. Se detaljeret information i XControl og UnoControlDialog i APIens (Application Programming Interface) dokumentation.

XTreeDataModel

Ja

UNO
objekt

TreeControl

UNO-objekt, der repræsenterer datamodellen Kontroltræ. Se detaljeret information om XMutableTreeDataModel (Xforanderlig datamodel) i dokumentationen til Application Programming Interface (API).

note

Denne egenskab er tilgængelig fra LibreOffice 7.2 og fremad.



Egenskaben Value (Værdi)

Kontroltype

Type

Beskrivelse

Button

Boolean

Kun til til/fra-knapper

CheckBox

Boolsk eller heltal

0, False: ryddet
1, True: markeret
2: nedtonet, ved ikke

ComboBox

String

Den valgte værdi. Egenskaben ListIndex er et alternativt valg.

CurrencyField

Numerisk

DateField

Date

FileControl

String

Et filnavn formeret efter egenskaben FileNaming i tjenesten ScriptForge.FileSystem

FormattedField

Streng eller numerisk

ListBox

Steng eller matrix af strenge

De valgte rækker som en skalar eller som en matrix, afhængigt af atributten MultiSelect

NumericField

Numerisk

PatternField

String

ProgressBar

Numerisk

Skal være inden for de foruddefinerede grænser

RadioButton

Boolean

Hver knap har sit eget navn. De er sammenkædede, hver deres Tabulatorpositioner er fortløbende. Hvis en alternativknap er sat til True, sættes de andre de beslægtede knapper automatisk til False

ScrollBar

Numerisk

Skal være inden for de foruddefinerede grænser

TextField

String

Den tekst, der ses i feltet

TimeField

Date


Hændelsesegenskaber

Returnerer en URI-streng med reference til det script, der udløstes af hændelsen. Læs specifikationen til den i scripting framework URI specification (specifikation af URI-scriptrammen).

note

Disse hændelsesegenskaber er tilgængelige fra LibreOffice 7.2 og fremad.


Navn

Skrivebeskyttet

Beskrivelse ifølge etiketten i Basic IDE

OnActionPerformed

Ja

Udfør handling

OnAdjustmentValueChanged

Ja

Under justering

OnFocusGained

Ja

NĂĄr fokus modtages

OnFocusLost

Ja

NĂĄr fokus mistes

OnItemStateChanged

Ja

Elementstatus ændret

OnKeyPressed

Ja

Tast trykket

OnKeyReleased

Ja

Tast sluppet

OnMouseDragged

Ja

Mus flyttet mens tast trykkes

OnMouseEntered

Ja

Mus indenfor

OnMouseExited

Ja

Mus udenfor

OnMouseMoved

Ja

Mus flyttet

OnMousePressed

Ja

Museknap trykket

OnMouseReleased

Ja

Museknap sluppet

OnNodeExpanded

Nej

(Ikke i Basic IDE) når udvidelsesknappen trykkes på en forgrening i et kontroltræ

OnNodeSelected

Nej

(Ikke i Basic IDE) når en forgrening i et kontroltræ vælges

OnTextChanged

Ja

Tekst ændret


Metoder

Liste over metoder i tjenesten DialogControl

AddSubNode
AddSubTree

CreateRoot
FindNode

SetFocus
WriteLine


note

Disse metoder er tilgængelige fra LibreOffice 7.2 og senere.


AddSubNode

Opret og returner en ny forgrening på kontroltræet som et UNO-objekt, der er underordnet en ophavsforgrening. Se detaljeret information om XMutableTreeNode (Xforanderlig forgrening) i dokumentationen til Application Programming Interface (API).

Denne metode kan eventuelt kaldes, før visning af dialogfeltet til opbygning af begyndelses-træet. Den kan også kaldes fra en dialog- eller kontrol-hændelse - med hændelsen OnNodeExpanded (ved udvidet forgrening) - så træet kan udfyldes dynamisk.

Syntaks:

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

Parametre:

parentnode: A node UNO object, of type com.sun.star.awt.tree.XMutableTreeNode.

displayvalue: The text appearing in the tree control box.

datavalue: Any value associated with the new node. datavalue may be a string, a number or a date. Omit the argument when not applicable.

Eksempel:

LibreOffice Basic and Python examples pick up current document's myDialog dialog from Standard library.


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

     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 (sand), når det lykkedes at indsætte en forgrening underordnet en ophavsforgrening i et kontroltræ. Hvis ophavs-forgreningen allerede havde afkoms-forgreninger, før denne metode blev kaldt, slettes afkoms-forgreningerne.

Denne metode kan eventuelt kaldes, før visning af dialogfeltet til opbygning af begyndelses-træet. Den kan også kaldes fra en dialog- eller kontrol-hændelse - med hændelsen OnNodeExpanded (ved udvidet forgrening) - så træet kan udfyldes dynamisk.

Syntaks:

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

Parametre:

overordnet_forgrening: Et UNO-forgreningsobjekt, af typen com.sun.star.awt.tree.XMutableTreeNode.

flattree: a two dimension array sorted on the columns containing the display values. Such an array can be issued by the GetRows method applied on the SFDatabases.Database service. When an array item containing the text to be displayed is Empty or Null, no new subnode is created and the remainder of the row is skipped.


      Flat tree (fladt træ)    >>>>    Resulting subtree (resulterende deltræ)
      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: When False default value is used, every column of flattree contains the text to be displayed in the tree control. When True, the texts to be displayed (displayvalue) are in columns 0, 2, 4, ... while the data values (datavalue) are in columns 1, 3, 5, ...

Eksempel:


      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)
   

     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 rodforgrening på kontroltræet som et UNO-forgreningsobjekt af typen com.sun.star.awt.tree.XMutableTreeNode (Xforanderlig forgrening). Den nye rodforgrening indsættes under allerede eksisterende rodforgreninger. Se detaljeret information om XMutableTreeNode (Xforanderlig forgrening) i dokumentationen til Application Programming Interface (API).

Denne metode kan eventuelt kaldes før visning af dialogfeltet, hvor begyndelses-træet bygges. Den kunne også kaldes fra en dialog- eller kontrol-hændelse for at udfylde træet dynamisk.

Syntaks:

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

Parametre:

displayvalue: The text appearing in the tree control box.

datavalue: Any value associated with the new node. datavalue may be a string, a number or a date. Omit the argument when not applicable.

Eksempel:


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

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

FindNode

Traverses the tree and finds recursively, starting from the root, a node meeting some criteria. Either - 1 match is enough - having its display value matching displayvalue pattern or having its data value equal to datavalue. The comparisons may be or not case-sensitive. The first matching occurrence is returned as a node UNO object of type com.sun.star.awt.tree.XMutableTreeNode. Se detaljeret information om XMutableTreeNode (Xforanderlig forgrening) i dokumentationen til Application Programming Interface (API).

Hvis den ikke findes, returnerer metoden Nothing (ingenting), som skal testes med den indbyggede funktion IsNull() (er nul()).

Den metode kan eventuelt kaldes før visning af dialogfeltet til bygning af begyndelsestræet. Den kan også kaldes fra en dialog- eller kontrol-hændelse.

Syntaks:

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

Parametre:

One argument out of displayvalue or datavalue must be specified. If both present, one match is sufficient to select the node.

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.

datavalue: Any value associated with the new node. datavalue may be a string, a number or a date. Omit the argument when not applicable.

casesensitive: Default value is False

Eksempel:


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

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

SetFocus

Sæt fokus på kontrollen. Returner True , hvis fokuseringen lykkedes.

Denne metode kaldes ofte fra en dialog eller en kontrolhændelse

Syntaks:

svc.SetFocus(): bool

Eksempel:


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

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

WriteLine

Tilføj en ny linje i slutningen af et tekstfelt med flere linjer. Der indsætte et linjeskift-tegn, når det er passende. Metoden returnerer True, når det er lykkedes den.

Der sættes et fejlflag, hvis den faktiske kontrol ikke er af typen TextField eller ikke har flere linjer.

Syntaks:

svc.WriteLine(opt line: str): bool


      oControl.WriteLine([Line As String]) As Boolean
   

Parametre:

Line (linje): Strengen, der skal indsættes. Standard er en tom linje.

Eksempel:


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

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

Alle ScriptForge Basic-rutiner eller identifikatorer, som indledes med et understregningstegn "_" er reserveret til internt brug. De er ikke beregnet til brug i Basic-makroer.


Støt os venligst!