Wobsah

# Słužba SFDialogs.DialogControl

Słužba DialogControl wodźenske elementy rjaduje, kotrež k dialogej słušeja, kotryž so z dialogowym editorom Basic definuje. Kóžda instanca aktualneje słužby jednotliwy wodźenski element w dialogowym polu reprezentuje.

Fokus na wotwołowanje a nastajenje hódnotow leži, kotrež so přez wodźenske elementy dialogoweho pola pokazuja. Formatěrowanje je přistupne přez kajkosći XControlModel a XControlView.

Dźiwajće na to, zo wobsah jónkróćneje kajkosće DialogControl.Value po wobsahowym typje wariěruje.

Wosebita kedźbnosć so na wodźenske elementy typa štom złožuje. Je lochko, štom pjelnić, pak hałuzu po hałuzy pak ze sadźbu hałuzow naraz. Pjelnjenje štomoweho wodźenskeho elementa da so statisce abo dynamisce wuwjesć.

Słužba SFDialogs.DialogControl je jara podobna na słužbu SFDialogs.Dialog.

## Słužbowe wuwołanje

Před wužiwanjom słužby DialogControl dyrbi so biblioteka ScriptForge začitać abo importować:

• Makra Basic sej wužaduja, zo so biblioteka ScriptForge z pomocu slědowaceho přikaza začituje:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Skripty Python sej import z modula scriptforge wužaduja:
from scriptforge import CreateScriptService

Słužba DialogControl so přez eksistowaceje słužboweje instancy Dialog z pomocu jeho metody Controls() wuwołuje. Dialog dyrbi so ze słužbu SFDialogs.Dialog iniciěrować.

          Dim myDialog As Object, myControl As Object
          Set myDialog = CreateScriptService("SFDialogs.Dialog", "GlobalScope", myLibrary, DialogName)
          Set myControl = myDialog.Controls("myTextBox")
          myControl.Value = "Dialog startowaše " & Now()
          myDialog.Execute()
          ' … aktualne hódnoty wodźenskich elementow předźěłać
          myDialog.Terminate()

         from time import localtime, strftime
         dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', lib_name, dlg_name)
         text = dlg.Controls('myTextBox')
         text.Value = "Dialog startowaše " + strftime("%a, %d %b %Y %H:%M:%S", localtime())
         dlg.Execute()
         # … aktualne hódnoty wodźenskich elementow předźěłać
         dlg.Terminate()

## Wotwołanje instancy DialogControl, kotraž je podawk wodźenskeho elementa wuwabiła

Instanca słužby DialogControl da so přez słužbu SFDialogs.DialogEvent wotwołać, pod wuměnjenjom, zo dialog je so ze słužbu Dialog iniciěrował. W slědowacym přikładźe oControl instancu DialogControl wobsahuje, kotraž je podawk wodźenskeho elementa wuwabiła.

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

Abo z Python:

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

Dźiwajće na to, zo w předchadnych přikładach prefiks "SFDialogs." da so wuwostajić, hdyž zda so přihódne być.

## Wobchadźenje z wuwzaćemi w podawkowych wobdźěłakach

Hdyž so podawkowy wobdźěłak za podawki wodźenskeho elementa wutworja, poruča so, zo so ze zmylkami w podprogramje samym wobchadźeja. Připušć na přikład, zo so podawkowy wobdźěłak woła, hdyž so tłóčatko klika.

        Sub OnButtonClicked(ByRef oEvent As Object)
        On Local Error GoTo Catch
            Dim oControl As Object
            oControl = CreateScriptService("DialogEvent", oEvent)
            ' Podawk předźěłać
            Exit Sub
        Catch:
            MsgBox SF_Exception.Description
            SF_Exception.Clear
        End Sub

Wołajće SF_Exception.Clear, jeli nochceće, zo so zmylk po skónčenju wuwjedźenja dialoga dale dawa.

Wužiwajće w Python natiwne bloki try/except za wobchadźenje z wuwzaćemi, kaž so deleka pokazuje:

        def on_button_clicked(event=None):
            try:
                oControl = CreateScriptService("DialogEvent", event)
                # Podawk předźěłać
            except Exception as e:
                # Objekt "bas" deleka je instanca słužby Basic
                bas.MsgBox(str(e))

## Typy wodźenskich elementow

Słužba DialogControl je za tute typy wodźenskich elementow k dispoziciji:

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

Typ wodźenskeho elementa TabPageContainer njeje w dialogowym editorje definowany.

## Kajkosće

Mjeno | Přećiwo pisanju škitany | Typ | Nałožujomny na | Wopisanje
--- | --- | --- | --- | ---
Border | Haj | String | Button, … | Kajkosć Border so na wokolinu wodźenskeho elementa poćahuje: "3D", "FLAT" abo "NONE".
Cancel | Ně | Boolean | Button | Podawa, hač přikazowe tłóčatko ma zadźerženje tłóčatka Přetorhnyć abo nic.
Caption | Ně | String | Button, CheckBox, FixedLine, FixedText, GroupBox, Hyperlink, RadioButton | Podawa tekst, kotryž je z wodźenskim elementom zwjazany.
ControlType | Haj | String | Wšě | Jedyn z horjeka podatych typow.
CurrentNode | Ně | Objekt UNO | TreeControl | Tuchwilu najwyši suk, kotryž je w štomowym wodźenskim elemenće wubrany. Hlejće XmutableTreeNode w dokumentaciji programowanskeje tykački (API) za podrobne informacije.
Default | Ně | Boolean | Button | Podawa, hač přikazowe tłóčatko je standardne tłóčatko (W porjadku).
Enabled | Ně | Boolean | Wšě | Podawa, hač wodźenski element je z kursorom přistupny.
Format | Ně | String | DateField, TimeField, FormattedField (přećiwo pisanju škitany) | Podawa format, kotryž so wužiwa, zo by datum a čas pokazał. Dyrbi jedyn ze slědowacych znamješkowych rjećazkow być: Za datum: "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". Za čas: "24h short", "24h long", "12h short", "12h long".
ListCount | Haj | Long | ComboBox, ListBox, TableControl | Podawa ličbu linkow w lisćinowym polu, kombinaciskim polu abo tabelowym wodźenskim elemenće.
ListIndex | Ně | Long | ComboBox, ListBox, TableControl | Podawa, kotry zapisk so w lisćinowym poli, kombinaciskim polu abo tabelowym wodźenskim elemenće wuběra.
Locked | Ně | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, TextField, TimeField | Podawa, hač wodźenski element je přećiwo pisanju škitany.
MultiSelect | Ně | Boolean | ListBox | Podawa, hač wužiwar móže wjacore wuběry w lisćinowym polu činić.
Name | Haj | String | Wšě | Mjeno wodźenskeho elementa.
Page | Ně | Integer | Wšě | Dialog móže wjacore strony měć, kotrež wužiwar móže krok po kroku přeběžeć. Kajkosć Page objekta Dialog definuje, kotra strona dialoga je aktiwna. Kajkosć Page wodźenskeho elementa stronu dialoga definuje, na kotrymž wodźenski element je widźomny.
Parent | Haj | Słužba Dialog | Wšě | Objektowa instanca nadrjadowaneje klasy SFDialogs.Dialog.
Picture | Ně | String | Button, ImageControl | Podawa datajowe mjeno, kotryž bitmap abo druhi grafikowy typ wobsahuje, kotryž so ma na podatym wodźenskim elemenće pokazać. Datajowe mjeno dyrbi atributej FileNaming słužby ScriptForge.FileSystem wotpowědować.
RootNode | Haj | Objekt UNO | TreeControl | Objekt, kotryž najniši korjenjowy suk reprezentuje (zwjetša je jenož jedyn korjenjowy suk). Hlejće XmutableTreeNode w dokumentaciji programowanskeje tykački (API) za podrobne informacije.
RowSource | Ně | Array of strings | ComboBox, ListBox | Podawa daty, kotrež su w kombinaciskim abo lisćinowym polu wobsahowane.
TabIndex | Haj | Numeric | All | Kajkosć TabIndex městno wodźenskeho elementa w tabulatorowym porjedźe w dialogu podawa.
Text | Haj | String | ComboBox, FileControl, FormattedField, PatternField, TextField | Zmóžnja přistup k tekstej, kotryž so přez wodźenski element pokazuje.
TipText | Ně | String | Wšě | Podawa tekst, kotryž so jako pomocny tekst jewi, hdyž pokazowak myški nad wodźenski element dźeržiće.
TripleState | Ně | Boolean | CheckBox | Podawa, jeli kontrolny kašćik móže so wosłabić (šěry) abo nic.
URL | Ně | String | Hyperlink | URL, kotryž so ma wočinić, hdyž so na wodźenski element klika.
Value | Ně | Variant |  | Hlejće Hódnotowu kajkosć
Visible | Ně | Boolean | Wšě | Podawa, hač wodźenski element je schowany abo widźomny.
XControlModel | Haj | Objekt UNO | Wšě | Objekt UNO, kotryž model wodźenskeho elementa reprezentuje. Hlejće XControlModel a UnoControlDialogModel w dokumentaciji programowanskeje tykački (API) za podrobne informacije.
XControlView | Haj | Objekt UNO | Wšě | Objekt UNO, kotryž napohlad wodźenskeho elementa reprezentuje. Hlejće XControl a UnoControlDialog w dokumentaciji programowanskeje tykački za podrobne informacije.
XTreeDataModel | Haj | Objekt UNO | TreeControl | Obkejt UNO, kotryž datowy model štomoweho wodźenskeho elementa reprezentuje. Hlejće XMutableTreeDataModel w dokumentaciji programowanskeje tykački (API) za podrobne informacije.
XGridColumnModel | Haj | Objekt UNO | TableControl | Objekt UNO, kotryž datowy model tabeloweho wodźenskeho elementa reprezentuje. Hlejće XGridColumnModel w dokumentaciji programowanskeje tykački (API) za podrobne informacije.
XGridDataModel | Haj | Objekt UNO | TableControl | Objekt UNO, kotryž datowy model lěsyčneho wodźenskeho elementa reprezentuje. Hlejće XGridDataModel w dokumentaciji programowanskeje tykački (API) za podrobne informacije.

## Kajkosć Value

Typ wodźenskeho elementa | Typ | Wopisanje
--- | --- | ---
Button | Boolean | Jenož za přepinanske tłóčatka
CheckBox | Boolean (logiska hódnota) abo Integer (cyła ličba) | 0, False: njewothóčkowany 1, True: wothóčkowany 2: zešěrjeny, njewěm
ComboBox | String | Wubrana hódnota. Kajkosć ListIndex je alternatiwna móžnosć.
CurrencyField | Numeriski |
DateField | Date |
FileControl | String | Datajowe mjeno, kotrež je po kajkosći FileNaming słužby ScriptForge.FileSystem sformatěrowane
FormattedField | Znamješkowy rjećazk abo numeriski |
ListBox | Znamješkowy rjećazk abo matriks znamješkowych rjećazkow | Wubrane linki jako skalar abo jako matriks wotwisujo wot atributa MultiSelect
NumericField | Numeriski |
PatternField | String |
ProgressBar | Numeriski | Dyrbi w předdefinowanych mjezach być
RadioButton | Boolean | Kóžde tłóčatko ma swójske mjeno. Su ze sobu zwjazane, jeli jich tabulatorowe pozicije su zwisuja. Jeli opciske tłóčatko je na True stajene, so druhe přisłušne tłóčatka awtomatisce na False stajeja
ScrollBar | Numeriski | Dyrbi w předdefinowanych mjezach być
TabPageContainer | Numeric | Dialog móže wjacore čisłowane rajtarki měć, kotrež su po swojej kajkosći Value identifikujomne abo změnjomne
TableControl | Array | Jednodimensionalna matriks z datami tuchwilu wubraneje linki.
TextField | String | Tekst, kotryž so w polu jewi.
TimeField | Date |

Kajkosć Value za dialogowe wodźenske elementy GroupBox, Hyperlink, ImageControl a TreeControl njeje.

## Podawkowe kajkosće

Podawkowe kajkosće On… su znamješkowe rjećazki URI, kotrež na skript wotkazuja, kiž je so přez podawak wuhibał. Čitajće specifikaciju w Scripting Framework URI Specification (jendźelsce).

Mjeno (wotkaz podawkoweje API) | Wopisanje jako w Basic IDE popisane
--- | ---
OnActionPerformed | Akciju wuwjesć
OnAdjustmentValueChanged | Při přiměrjenju
OnFocusGained | Při dóstawanju fokusa
OnFocusLost | Při zhubjenju fokusa
OnItemStateChanged | Status zapiska je so změnił
OnKeyPressed | Tasta stłóčena
OnKeyReleased | Tasta pušćena
OnMouseDragged | Pohib myški při stłóčenej tasće
OnMouseEntered | Myška nutřka
OnMouseExited | Myška wonka
OnMouseMoved
OnMousePressed | Tasta myški stłóčena
OnMouseReleased | Tasta myški pušćena
OnNodeExpanded | (Nic w Basic IDE), hdyž so rozšěrjenske tłóčatko je na suku w štomowym wodźenskim elemenće tłóči
OnNodeSelected | (Nic w Basic IDE), hdyž so suk w štomowym wodźenskim elemenće wuběra
OnTabSelected | (Nic w Basic IDE), hdyž so rajtark we wodźenskim elemenće TabPage wuběra
OnTextChanged | Tekst změnjeny

Pokiw: Wšě kajkosće On… dadźa so přez program nastajić.
Přikład How to display data in a tree control (jendźelsce) w LibreOfficeDev Wiki to znazornja.

Připokazowanje podawkow přez Basic IDE a připokazowanje podawkow přez makra so mjez sobu wuzamkujetej.

## Metody

Lisćina metodow w słužbje DialogControl
AddSubNode AddSubTree CreateRoot | FindNode Resize SetFocus | SetTableData WriteLine

## AddSubNode

Wutwori nowy suk štomoweho wodźenskeho elementa a wróći jón jako objekt UNO, kotryž je nadrjadowanemu sukej podrjadowany. Hlejće XMUtableTreeNode w dokumentaciji programowanskeje tykački za podrobne informacije.

Tuta metoda da so wuwołać, prjedy hač so dialogowe polo pokazuje, kotrež ma spočatny štom wutworić. Móže so tež z dialoga abo podawka wodźenskeho elementa wuwołać – z pomocu podawka OnNodeExpanded –, zo by so štom dynamisce wudospołnił.

### Syntaksa:

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

### Parametry:

parentnode: sukowy objekt UNO typa com.sun.star.awt.tree.XMutableTreeNode.

displayvalue: Tekst, kotryž so w polu štomoweho wodźenskeho elementa jewi.

datavalue: Hódnota, kotraž je z nowym sukom zwjazana. datavalue móže znamješkowy rjećazk, ličba abo datum być. Wuwostajće argument, jeli nałožujomny njeje.

### Přikład:

Přikłady LibreOfficeDev Basoc a Python dialog myDialog aktualneho dokumenta z biblioteki Standard přejimaja.

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

##### W Python

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

## AddSubTree

Wróći True, hdyž so móžeše podštom, kotryž nadrjadowanemu sukej podrjadowany, wuspěšnje do štomoweho wodźenskeho elementa zasadźić. Jeli nadrjadowany suk hižo podrjadowane suki měješe, prjedy hač so tuta metoda wuwoła, so podrjadowane suki zhašeja.

Tuta metoda da so wuwołać, prjedy hač so dialogowe polo pokazuje, kotrež ma spočatny štom wutworić. Móže so tež z dialoga abo podawka wodźenskeho elementa wuwołać – z pomocu podawka OnNodeExpanded –, zo by so štom dynamisce wudospołnił.

### Syntaksa:

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

### Parametry:

parentnode: sukowy objekt UNO typa com.sun.star.awt.tree.XMutableTreeNode.

flattree: dwudimensionalna matriks, sortěrowana po špaltach, kotrež pokazowanske hódnoty wobsahuja. Tajka matriks da so přez metodu GetRows wudać, kotraž so na słužbu SFDatabases.Database nałožuje. Hdy matriksowy zapisk, kotryž tekst wobsahuje, kotryž so ma pokazać, je Empty abo Null so nowy podsuk njewutwori a zbytk linki so přeskakuje.

          Flacher Baum >>>> Rezultowacy podštom
          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: Hdyž False, so standardna hódnota wužiwa, kóžda špalta flattree tekst wobsahuje, kotryž so ma w štomowym wodźenskim elemenće pokazać. Hdyž True, su teksty, kotrež so maja pokazać (displayvalue) w špaltach 0, 2, 4, …, mjeztym zo datowe hódnoty (datavalue su w špaltach 1, 3, 5, …

### Přikład:

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

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

Wróći nowy korjenjowy suk štomoweho wodźenskeho elementa jako sukowy objekt UNO typa com.sun.star.awt.tree.XMutableTreeNode. Nowy štomowy korjeń so pod do toho eksistowacymi korjenjowymi sukami zasadźi. Hlejće XMUtableTreeNode w dokumentaciji programowanskeje tykački za podrobne informacije.

Tuta metoda da so wuwołać, prjedy hač so dialogowe polo pokazuje, kotrež ma spočatny štom wutworić. Móže so tež z dialoga abo podawka wodźenskeho elementa wuwołać, zo by so štom dynamisce wudospołnił.

### Syntaksa:

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

### Parametry:

displayvalue: Tekst, kotryž so w polu štomoweho wodźenskeho elementa jewi.

datavalue: Hódnota, kotraž je z nowym sukom zwjazana. datavalue móže znamješkowy rjećazk, ličba abo datum być. Wuwostajće argument, jeli nałožujomny njeje.

### Přikład:

##### W Basic

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

##### W Python

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

## FindNode

Přeběži štom a namaka rekursiwnje, započinajo z korjenjom, suk, kotryž někotrym kriterijam wotpowěduje. Pak – 1 wotpowědnik dosaha – wotpowěduje jeho pokazowanska hódnota mustrej displayvalue pak jeho datowa hódnota je runja datavalue. Přirunanja móža na wulkopisanje dźiwać abo nic. Prěni wotpowědnik so jako sukowy objekt UNO typa com.sun.star.awt.tree.XMutableTreeNode wróći. Hlejće XMUtableTreeNode w dokumentaciji programowanskeje tykački za podrobne informacije.

Hdyž so njenamaka, metoda Nothing wróća, zo by so ze zatwarjenej funkciju IsNUll() testowała.

Tuta metoda da so wuwołać, prjedy hač so dialogowe polo pokazuje, kotrež ma spočatny štom wutworić. Móže so tež z dialoga abo podawka wodźenskeho elementa wuwołać.

### Syntaksa:

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

### Parametry:

Jedyn argument z displayvalue abo datavalue dyrbi so podać. Jeli wobaj stej, jedyn wotpowědnik dosaha, zo by suk wubrał.

displayvalue? Muster, kotryž so ma přirunać. Hlejće metodu SF_String.IsLike() za lisćinu móžnych wildcard. Hdyž runja znamješkowy rjećazk z dołhosću nula (standard), so za tutej pokazowanskej hódnotu njepyta.

datavalue: Hódnota, kotraž je z nowym sukom zwjazana. datavalue móže znamješkowy rjećazk, ličba abo datum być. Wuwostajće argument, jeli nałožujomny njeje.

casesensitive: Standardna hódnota je False

### Přikład:

##### W Basic

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

##### W Python

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

## Resize

Přesuwa róžk horjeka nalěwo dialogoweho wodźenskeho elementa k nowym koordinatam a/abo měnja jeho wotměry. Wróći True, jeli změnjenje wulkosće běše wuspěšne.

### Syntaksa:

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

### Parametry:

Wšě wotstupy so w jednotkach Map AppFont zwuraznjeja a měrja so wot róžka horjeka nalěwo nadrjadowaneho dialoga. Bjez argumentow metoda wulkosć wodźenskeho elementa do jeho „preferowaneje wulkosć“ změni, wulkosć, kotraž so wotwisujo wot jeho aktualneho wobsaha. Falowace argumenty njezměnjene wostawaja.

Left: Horicontalny wotstup wot hornjeho lěweho róžka

Top: Wertikalny wotstup wot hornjeho lěweho róžka

Width: horicontalna šěrokosć praworóžka, kotryž wodźenski element wobsahuje

Height: wertikalna wysokosć praworóžka, kotryž wodźenski element wobsahuje

### Přikład:

##### W Basic

          Dim oControl As Object
          Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
          Set oControl = oDlg.Controls("thisControl")
          oControl.Resize(100, 200, Height:=6000) ' Šěrokosć je njezměnjena

##### W Python

          dlg = CreateScriptService('Dialog', None, None, 'myDialog')
          ctrl = dlg.Controls('thisControl')
          ctrl.Resize(300, 200, 1500) # Wysokosć je njezměnjena

## SetFocus

Staja fokus na wodźenski element. Wróći True, jeli fokusěrowanje běše wuspěšne.

tuta metoda so husto z dialogoweho podawka abo podawka wodźenskeho elementa wuwołuje.

### Syntaksa:

svc.SetFocus(): bool

### Přikład:

##### W Basic

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

##### W Python

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

## SetTableData

Pjelni TableControl z podatymi datami. Wšě do toho eksistowace daty so zhašeja, prjedy hač so nowe daty jako argument zasadźuja.

Hdyž so TableControl dialogej přidawa, je móžno, Basic IDE wužiwać, zo byšće definował, hač so špaltowe a linkowe hłowy w tabeli pokazuja. Jeli TableControl ma špaltowe a/abo linkowe hłowy so prěnja špalta a/abo linka w podatych datach jako popisy za tabelowe hłowy wužiwatej.

Tuta metoda True wróći, hdyž je wuspěšna.

### Syntaksa:

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

### Parametry:

dataarray: Daty, kotrež so maja do tabele zapodać, přestajene jako matriks matriksow w Basic abo tupel tupelow w Python. Daty dyrbja špaltowe a linkowe hłowy wobsahować, jeli so maja přez TableControl pokazać.

widths: Matriks, kotraž relatiwne šěrokosće kóždeje špalty wobsahuje. Hinak prajene, widths = (1, 2) woznamjenja, zo druha špalta je dwójce šěrša jako prěnja. Jeli ličba hódnotow w tutej matriksy je mjeńša hač ličba špaltow w tabeli, so poslednja hódnota w matriksy wužiwa, zo by šěrokosć zbytnych špaltow definowała.

alignment: Definuje wusměrjenje w kóždej špalće jako znamješkowy rjećazk, w kotrymž kóžde znamješko móže "L" (nalěwo), "C" (wosrjedźa), "R" (naprawo) abo " " (mjezota, standard, to rěka: nalěwo za znamješkowe rjećazki a naprawo za numeriske hódnoty). Jeli dołhosć znamješkoweho rjećazka je krótša hač ličba špaltow w tabeli, so poslednje znamješko w znamješkowym rjećazku wužiwa, zo by wusměrjenje zbytnych špaltow definowało.

RowHeaderWidth: Šěrokosć špalty linkoweje hłowy, zwuraznjena w jednotkach Map AppFont. Standard = 10. Argument so ignoruje, hdyž TableControl linkowu hłowu nima.

### Přikład:

##### W Basic

Slědowacy přikład wot toho wuchadźa, zo dialog myDialog ma TableControl z mjenom Grid1, kotrehož kajkosći "Linkowu hłowu pokazać" a "Špaltowu hłowu pokazać" stej na "Haj" stajenej.

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

Kajkosć Value wubranu linku w tabeli wróća. Jeli linka wubrana njeje, so prózdny matriksowy objekt wróća. Slědowacy kodowa šlipka pokazuje, kak móžeće testować, hač so někajka linka w tabeli wuběra.

         rowValues = oTable.Value
         If UBound(rowValues) < 0 Then
             MsgBox "Žana linka wubrana."
         Else
             MsgBox "Linka " & oTable.ListIndex & "je wubrana."
         End If

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

Přidawa nowu linku na kóncu wjacelinkoweho tekstoweho pola. Znamješko za łamanje linki so zasadźuje, hdyž je wužitne. Metoda True wróća, hdyž je wuspěšna.

Zmylk so wuwabja, jeli poprawny wodźenski element typ TextField nima abo wjacelinkowy njeje.

### Syntaksa:

svc.WriteLine(opt line: str): bool

### Parametry:

Line: Znamješkowy rjećazk, kotryž so ma zasadźić. Standard je prózdna linka.

### Přikład:

##### W Basic

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

##### W Python

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

Wšě rutiny Basic ScriptForge abo identifikatory, kotrež so z podsmužku „_“ započinaja, su za interne wužiwanje wuměnjene. Njejsu za to myslene, so w makrach Basic abo skriptach Python wužiwać.

Podobne temy

Słužba SFDialogs.Dialog

ScriptForge.String service

ScriptForge.UI service

Prošu podpěrajće nas!