LibreOfficeDev 25.8 Hjelp
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.
Før du bruker DialogControl-tjenesten, må ScriptForge-biblioteket lastes eller importeres:
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()
   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.
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))
  Tjenesten DialogControl er tilgjengelig for disse kontrolltypene:
| • Button | • FixedLine | • ListBox | • TableControl | 
Kontrolltypen TabPageContainer er ikke definert i dialogredigereren.
| 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 | 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 | 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 | 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 | ||
| Visible | Nei | Boolean | Alle | Angir om kontrollen er skjult eller synlig. | 
| XControlModel | Ja | UNO | Alle | UNO-objektet som representerer kontrollmodellen. Se XControlModel og UnoControlDialogModel i Application Programming Interface (API) informasjonsdokumentasjon for detaljert dokumentasjon | 
| XControlView | Ja | UNO | Alle | UNO-objektet som representerer kontrollvisningen. Se XControl og UnoControlDialog i Application Programming Interface (API) dokumentasjon for detaljert informasjon. | 
| XTreeDataModel | Ja | UNO | TreeControl | UNO-objektet som representerer trekontrolldatamodellen. Se XMutableTreeDataModeli Application Programming Interface (API) for detaljert informasjon. | 
| XGridColumnModel | Ja | UNO | TableControl | UNO-objektet som representerer tabellkontrolldatamodellen. Se XGridColumnModel i dokumentasjonen for Application Programming Interface (API) for detaljert informasjon. | 
| XGridDataModel | Ja | UNO | TableControl | UNO-objektet som representerer trekontrolldatamodellen. Se XGridDataModel i dokumentasjonen for Application Programming Interface (API) for detaljert informasjon. | 
| Kontrolltype | Type | Beskrivelse | 
|---|---|---|
| Button | Boolean | Kun for veksleknapper | 
| CheckBox | Boolsk eller heltall | 0, usant: ikke merket | 
| 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 .
| 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 | 
| (Ikke i Basic IDE) når utvidelsesknappen trykkes på en node i en trekontroll | |
| (Ikke i Basic IDE) når en node i en trekontroll er valgt | |
| (Ikke i Basic IDE) når en fane i en TabPage-kontroll er valgt | |
| OnTextChanged | Tekst endret | 
| Liste over metoder i DialogControl-tjenesten | ||
|---|---|---|
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.
svc.AddSubNode(parentnode: uno, displayvalue: str, opt datavalue: any): uno
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.
LibreOfficeDev Basic- og Python-eksempler henter gjeldende dokuments myDialog-dialog fra Standard-biblioteket.
      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 ...')
   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.
svc.AddSubTree(parentnode: uno, flattree: any, opt withdatavalue: bool): bool
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, ...
      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)
   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.
svc.CreateRoot(displayvalue: str, opt datavalue: any): uno
displayvalue: Teksten som vises i trekontrollboksen.
      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 ...')
   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.
svc.FindNode(displayvalue: str = '', opt datavalue: any, casesensitive = False): uno
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.
skiller mellom store og små bokstaver: Standardverdien er Usann
      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:
         # ...
   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.
svc.Resize(opt Left: int, opt Top: int, opt Width: int, opt Height: int): bool
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
      Dim oControl As Object
      Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
      Set oControl = oDlg.Controls("thisControl")
      oControl.Resize(100, 200, Height:=6000) ' Bredde er uendret
    
      dlg = CreateScriptService('Dialog', None, None, 'myDialog')
      ctrl = dlg.Controls('thisControl')
      ctrl.Resize(300, 200, 1500) # Høyden er uendret
    Sett fokus på kontrollen. Returner Sann hvis fokuseringen var vellykket.
Denne metoden kalles ofte fra en dialog- eller kontrollhendelse.
svc.SetFocus(): bool
      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()
    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.
svc.SetTableData(dataarray: any[0..*, 0..*], widths: int[0..*], alignments: str, RowHeaderWidth = 10): bool
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.
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
   
     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.")
   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.
svc.WriteLine(opt line: str): bool
Linje: strengen som skal settes inn. Standard er en tom linje.
      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")