Περιεχόμενα
Δείκτης 🔎︎

# Υπηρεσία SFDialogs.DialogControl

Η υπηρεσία DialogControl διαχειρίζεται τα στοιχεία ελέγχου που ανήκουν σε ένα παράθυρο διαλόγου που ορίζεται με τη Basic Dialog Editor. Κάθε παρουσία της τρέχουσας υπηρεσίας αντιπροσωπεύει ένα μόνο στοιχείο ελέγχου μέσα σε ένα πλαίσιο διαλόγου.

Η εστίαση τίθεται στη λήψη και τη ρύθμιση των τιμών που εμφανίζονται από τα χειριστήρια του πλαισίου διαλόγου. Η μορφοποίηση είναι προσβάσιμη μέσω των ιδιοτήτων XControlModel και XControlView.

Σημειώστε ότι το μοναδικό περιεχόμενο της ιδιότητας DialogControl.Value ποικίλλει ανάλογα με τον τύπο ελέγχου.

Ιδιαίτερη προσοχή δίνεται στους ελέγχους τύπου δέντρου ελέγχου. Είναι εύκολο να συμπληρώσετε ένα δέντρο, είτε κλαδί προς κλαδί, είτε με ένα σύνολο κλαδιών ταυτόχρονα. Η συμπλήρωση ενός στοιχείου ελέγχου δέντρου μπορεί να εκτελεστεί στατικά ή δυναμικά.

Η υπηρεσία SFDialogs.DialogControl σχετίζεται στενά με την υπηρεσία SFDialogs.Dialog.

## Κλήση υπηρεσίας

Πριν τη χρήση της υπηρεσίας DialogControl, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:

• Οι μακροεντολές Basic απαιτούν τη φόρτωση της βιβλιοθήκης ScriptForge χρησιμοποιώντας την ακόλουθη πρόταση:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Τα σενάρια Python απαιτούν εισαγωγή από την ενότητα scriptforge:
από το scriptforge import CreateScriptService

Η υπηρεσία DialogControl καλείται από μια υπάρχουσα παρουσία της υπηρεσίας Dialog μέσω της μεθόδου Controls(). Το παράθυρο διαλόγου πρέπει να ξεκινήσει με την υπηρεσία SFDialogs.Dialog.

          Dim myDialog As Object, myControl As Object
          Set myDialog = CreateScriptService("SFDialogs.Dialog", "GlobalScope", myLibrary, DialogName)
          Set myControl = myDialog.Controls("myTextBox")
          myControl.Value = "Ο διάλογος ξεκίνησε στις " & Now()
          myDialog.Execute()
          ' ... επεξεργασία των ενεργών τιμών των στοιχείων ελέγχου
          myDialog.Terminate()

         from time import localtime, strftime
         dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', lib_name, dlg_name)
         text = dlg.Controls('myTextBox')
         text.Value = "Ο διάλογος ξεκίνησε στις " + strftime("%a, %d %b %Y %H:%M:%S", localtime())
         dlg.Execute()
         # ... επεξεργασία των ενεργών τιμών των στοιχείων ελέγχου
         dlg.Terminate()

## Retrieving the DialogControl instance that triggered a control event

An instance of the DialogControl service can be retrieved via the SFDialogs.DialogEvent service, provided that the dialog was initiated with the Dialog service. In the example below, oControl contains the DialogControl instance that triggered the control event.

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

Or using Python:

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

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

## Handling exceptions in event handlers

When creating an event handler for control events it is good practice to handle errors inside the subroutine itself. For instance, suppose the event handler below is called when button is clicked.

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

Call SF_Exception.Clear if you do not want the error to propagate after the dialog execution ended.

In Python use native try/except blocks for exception handling as shown below:

        def on_button_clicked(event=None):
            try:
                oControl = CreateScriptService("DialogEvent", event)
                # Process the event
            except Exception as e:
                # The object "bas" below is an instance of the Basic service
                bas.MsgBox(str(e))

## Τύποι ελέγχου

Η υπηρεσία DialogControl είναι διαθέσιμη για αυτούς τους τύπους ελέγχου:

- Button

- CheckBox

- ComboBox

- CurrencyField

- DateField

- FileControl

- FixedLine

- FixedText

- FormattedField

- GroupBox

- ImageControl

- ListBox

- NumericField

- PatternField

- ProgressBar

- RadioButton

- ScrollBar

- TableControl

- TextField

- TimeField

- TreeControl

## Ιδιότητες

Όνομα | Μόνο για ανάγνωση | Τύπος | Εφαρμόζεται σε | Περιγραφή
--- | --- | --- | --- | ---
Cancel | Όχι | Boolean | Button | Καθορίζει εάν ένα πλήκτρο εντολής έχει ή όχι τη συμπεριφορά ενός πλήκτρου Ακύρωσης.
Caption | Όχι | String | Button, CheckBox, FixedLine, FixedText, GroupBox, RadioButton | Καθορίζει το κείμενο που σχετίζεται με το στοιχείο ελέγχου.
ControlType | Ναι | String | Όλα | Ένας από τους τύπους που αναφέρονται παραπάνω.
CurrentNode | Όχι | Αντικείμενο UNO | TreeControl | Ο προς το παρόν ανώτατος κόμβος που έχει επιλεγεί στο στοιχείο ελέγχου δέντρου. Ανατρέξτε στην τεκμηρίωση XmutableTreeNode της .διασύνδεση προγραμματισμού εφαρμογών (API) για λεπτομερείς πληροφορίες.
Default | Όχι | Boolean | Button | Καθορίζει εάν ένα πλήκτρο εντολής είναι το προεπιλεγμένο πλήκτρο (OK).
Enabled | Όχι | Boolean | Όλα | Καθορίζει εάν το στοιχείο ελέγχου είναι προσβάσιμο με τον δρομέα.

Format

Όχι

String

DateField, TimeField, FormattedField

(μόνο για ανάγνωση)

Καθορίζει τη μορφή που χρησιμοποιείται για την εμφάνιση ημερομηνιών και ωρών. Πρέπει να είναι μία από αυτές τις συμβολοσειρές:

Για ημερομηνίες: "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".

Για χρόνους: "24h short", "24h long", "12h short", "12h long".

ListCount | Ναι | Long | ComboBox, ListBox, TableControl | Καθορίζει τον αριθμό των σειρών σε ένα ListBox, σε ένα ComboBox ή ένα TableControl.
ListIndex | Όχι | Long | ComboBox, ListBox, TableControl | Καθορίζει ποιο στοιχείο επιλέγεται σε ένα ListBox (πλαίσιο καταλόγου), ComboBox (σύνθετο πλαίσιο), ή TableControl (στοιχείο ελέγχου πίνακα).
Locked | Όχι | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, TextField, TimeField | Καθορίζει εάν το στοιχείο ελέγχου είναι μόνο για ανάγνωση.
MultiSelect | Όχι | Boolean | ListBox | Καθορίζει εάν ένας χρήστης μπορεί να κάνει πολλές επιλογές σε ένα πλαίσιο καταλόγου.
Name | Ναι | String | Όλα | Το όνομα του στοιχείου ελέγχου.
Page | Όχι | Integer | Όλα | Ένα παράθυρο διαλόγου μπορεί να έχει πολλές σελίδες που μπορεί να διασχίσει ο χρήστης βήμα προς βήμα. Η ιδιότητα Page (Σελίδα) του αντικειμένου διαλόγου ορίζει ποια σελίδα του διαλόγου είναι ενεργή. Η ιδιότητα Page (Σελίδα) ενός στοιχείου ελέγχου ορίζει τη σελίδα του διαλόγου στην οποία είναι ορατό το στοιχείο ελέγχου.
Parent | Ναι | Υπηρεσία Dialog | Όλα | Η γονική παρουσία αντικειμένου κλάσης SFDialogs.Dialog.
Picture | Όχι | String | Button, ImageControl | Καθορίζει το όνομα αρχείου που περιέχειμια ψηφιογραφία (bitmap) ή άλλο τύπο γραφικού που θα εμφανίζεται στο καθορισμένο στοιχείο ελέγχου. Το όνομα αρχείου πρέπει να συμμορφώνεται με το γνώρισμα FileNaming της υπηρεσίας ScriptForge.FileSystem.
RootNode | Ναι | Αντικείμενο UNO | TreeControl | Ένα αντικείμενο που αντιπροσωπεύει τον χαμηλότερο ριζικό κόμβο (συνήθως υπάρχει μόνο ένας τέτοιος κόμβος ρίζας). Ανατρέξτε στην τεκμηρίωση XmutableTreeNode διασύνδεσης προγραμματισμού εφαρμογών (API) για αναλυτικές πληροφορίες.
RowSource | Όχι | Array of strings | ComboBox, ListBox | Καθορίζει τα δεδομένα που περιέχονται σε ένα σύνθετο πλαίσιο ή ένα πλαίσιο καταλόγου.
Text | Ναι | String | ComboBox, FileControl, FormattedField, PatternField, TextField | Παρέχει πρόσβαση στο κείμενο που εμφανίζεται από το στοιχείο ελέγχου.
TipText | Όχι | String | Όλα | Καθορίζει το κείμενο που εμφανίζεται ως συμβουλή όταν κρατάτε τον δείκτη του ποντικιού πάνω από το στοιχείο ελέγχου.
TripleState | Όχι | Boolean | CheckBox | Καθορίζει εάν το στοιχείο ελέγχου πλαισίου ελέγχου μπορεί να εμφανίζεται αμυδρό (γκρίζο) ή όχι.
Value | Όχι | Variant |  | Ανατρέξτε στην Ιδιότητα τιμής
Visible | Όχι | Boolean | Όλα | Καθορίζει εάν το στοιχείο ελέγχου είναι κρυφό ή ορατό.
XControlModel | Ναι | Αντικείμενο UNO | Όλα | Το αντικείμενο UNO που αντιπροσωπεύει το μοντέλο ελέγχου. Ανατρέξτε στην τεκμηρίωση XControlModel και στο UnoControlDialogModel διασύνδεσης προγραμματισμού εφαρμογών (API) για λεπτομερείς πληροφορίες.
XControlView | Ναι | Αντικείμενο UNO | Όλα | Το αντικείμενο UNO που αντιπροσωπεύει την προβολή ελέγχου. Ανατρέξτε στο XControl και στο UnoControlDialog στην τεκμηρίωση της διασύνδεσης προγραμματισμού εφαρμογών (API) για λεπτομερείς πληροφορίες.
XTreeDataModel | Ναι | Αντικείμενο UNO | TreeControl | Το αντικείμενο UNO που αντιπροσωπεύει το μοντέλο δεδομένων ελέγχου δέντρου. Ανατρέξτε στο XMutableTreeDataModel στην τεκμηρίωση διασύνδεσης προγραμματισμού εφαρμογών (API) για αναλυτικές πληροφορίες.

## Η ιδιότητα Value

Τύπος ελέγχου | Τύπος | Περιγραφή
--- | --- | ---
Button | Boolean | Μόνο για πλήκτρα εναλλαγής
CheckBox | Τιμή Μπουλ ή ακέραιος | 0, False: μη επιλεγμένο 1, True: επιλεγμένο 2: γκριζαρισμένο, άγνωστο
ComboBox | String | Η επιλεγμένη τιμή. Η ιδιότητα ListIndex είναι μια εναλλακτική επιλογή.
CurrencyField | Αριθμητικό |
DateField | Date |
FileControl | String | Ένα όνομα αρχείου μορφοποιημένο σύμφωνα με την ιδιότητα FileNaming της υπηρεσίας ScriptForge.FileSystem
FormattedField | Συμβολοσειρά ή αριθμητικό |
ListBox | Συμβολοσειρά ή πίνακας συμβολοσειρών | Οι επιλεγμένες σειρές ως βαθμωτές ή ως πίνακας ανάλογα με το γνώρισμα MultiSelect
NumericField | Αριθμητικό |
PatternField | String |
ProgressBar | Αριθμητικό | Πρέπει να είναι εντός των προκαθορισμένων ορίων
RadioButton | Boolean | Κάθε πλήκτρο έχει το δικό του όνομα. Συνδέονται μεταξύ τους εάν οι θέσεις τους στο TAB είναι συνεχόμενες. Εάν ένα ραδιοπλήκτρο έχει οριστεί σε True, τα άλλα σχετικά πλήκτρα ορίζονται αυτόματα σε False
ScrollBar | Αριθμητικό | Πρέπει να είναι εντός των προκαθορισμένων ορίων
TableControl | Array | Μονοδιάστατος πίνακας με τα δεδομένα της τρέχουσας επιλεγμένης σειράς.
TextField | String | Το κείμενο που εμφανίζεται στο πεδίο
TimeField | Date |

## Ιδιότητες συμβάντος

Επιστρέφει μια συμβολοσειρά URI με αναφορά στο σενάριο που ενεργοποιήθηκε από το συμβάν. Διαβάστε τις προδιαγραφές του στην προδιαγραφή URI σεναρίου πλαισίου.

Όνομα | Μόνο για ανάγνωση | Η περιγραφή όπως επισημαίνεται στο IDE Basic
--- | --- | ---
OnActionPerformed | Ναι | Εκτέλεση ενέργειας
OnAdjustmentValueChanged | Ναι | Κατά την προσαρμογή
OnFocusGained | Ναι | Κατά τη λήψη της εστίασης
OnFocusLost | Ναι | Κατά τη απώλεια της εστίασης
OnItemStateChanged | Ναι | Η κατάσταση του στοιχείου τροποποιήθηκε
OnKeyPressed | Ναι | Με το πλήκτρο πατημένο
OnKeyReleased | Ναι | Με το πλήκτρο απελευθερωμένο
OnMouseDragged | Ναι | Το ποντίκι μετακινήθηκε κατά το πάτημα του πλήκτρου
OnMouseEntered | Ναι | Το ποντίκι εντός
OnMouseExited | Ναι | Το ποντίκι εκτός
OnMouseMoved | Ναι | Το ποντίκι μετακινήθηκε
OnMousePressed | Ναι | Με πατημένο το πλήκτρο του ποντικιού
OnMouseReleased | Ναι | Με απελευθερωμένο το πλήκτρο του ποντικιού
OnNodeExpanded | Όχι | (Όχι στο IDE Basic) όταν πατηθεί το πλήκτρο επέκτασης σε έναν κόμβο σε ένα στοιχείο ελέγχου δέντρου
OnNodeSelected | Όχι | (Όχι στο IDE Basic) όταν επιλέγεται ένας κόμβος σε ένα στοιχείο ελέγχου δέντρου
OnTextChanged | Ναι | Το κείμενο τροποποιήθηκε

## Μέθοδοι

Κατάλογος μεθόδων στην υπηρεσία DialogControl
AddSubNode AddSubTree CreateRoot | FindNode SetFocus | SetTableData WriteLine

## AddSubNode

Δημιουργήστε και επιστρέψτε έναν νέο κόμβο του στοιχείου ελέγχου δέντρου ως αντικειμένου UNO υποδεέστερο σε έναν γονικό κόμβο. Ανατρέξτε στο XMutableTreeNode στην τεκμηρίωση διασύνδεσης προγραμματισμού εφαρμογών (API) για λεπτομερείς πληροφορίες.

Αυτή η μέθοδος μπορεί να κληθεί πριν από την εμφάνιση του πλαισίου διαλόγου για τη δημιουργία του αρχικού δέντρου. Μπορεί επίσης να κληθεί από ένα συμβάν διαλόγου ή ελέγχου - χρησιμοποιώντας το συμβάν OnNodeExpanded - για δυναμική συμπλήρωση του δέντρου.

### Σύνταξη:

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

### Παράμετροι:

parentnode (γονικός κόμβος): Ένα αντικείμενο UNO κόμβου, τύπου com.sun.star.awt.tree.XMutableTreeNode.

displayvalue (τιμή εμφάνισης): Το κείμενο που εμφανίζεται στο πλαίσιο ελέγχου δέντρου.

datavalue (τιμή δεδομένων): Οποιαδήποτε τιμή που σχετίζεται με τον νέο κόμβο. Η datavalue μπορεί να είναι μια συμβολοσειρά, ένας αριθμός ή μια ημερομηνία. Παραλείψτε το όρισμα όταν δεν ισχύει.

### Παράδειγμα:

Τα παραδείγματα στα LibreOffice Basic και Python λαμβάνουν το παράθυρο διαλόγου myDialog του τρέχοντος εγγράφου από τη βιβλιοθήκη Standard.

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

##### Σε Python

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

## AddSubTree

Επιστρέφει True όταν ένα υποδέντρο, δευτερεύον σε έναν γονικό κόμβο, μπορούσε να εισαχθεί με επιτυχία σε ένα στοιχείο ελέγχου δέντρου. Εάν ο γονικός κόμβος είχε ήδη θυγατρικούς κόμβους πριν από την κλήση αυτής της μεθόδου, οι θυγατρικοί κόμβοι διαγράφονται.

Αυτή η μέθοδος μπορεί να κληθεί πριν από την εμφάνιση του πλαισίου διαλόγου για τη δημιουργία του αρχικού δέντρου. Μπορεί επίσης να κληθεί από ένα συμβάν διαλόγου ή ελέγχου - χρησιμοποιώντας το συμβάν OnNodeExpanded - για δυναμική συμπλήρωση του δέντρου.

### Σύνταξη:

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

### Παράμετροι:

parentnode (γονικός κόμβος): Ένα αντικείμενο UNO κόμβου, τύπου com.sun.star.awt.tree.XMutableTreeNode.

flattree: ένας πίνακας δύο διαστάσεων ταξινομημένος στις στήλες που περιέχουν τις τιμές εμφάνισης. Ένας τέτοιος πίνακας μπορεί να εκδοθεί με τη μέθοδο GetRows που εφαρμόζεται στην υπηρεσία SFDatabases.Database. Όταν ένα στοιχείο πίνακα που περιέχει το προς εμφάνιση κείμενο είναι Empty ή Null, δεν δημιουργείται νέος υποκόμβος και το υπόλοιπο της σειράς παραλείπεται.

          Flat tree (Επίπεδο δέντρο) >>>> Το υποδέντρο που προκύπτει
          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 (με τιμή δεδομένων): Όταν χρησιμοποιείται η προεπιλεγμένη τιμή False, κάθε στήλη του flattree περιέχει το κείμενο που θα εμφανίζεται στο δέντρο ελέγχου. Όταν είναι True, τα κείμενα που θα εμφανίζονται (displayvalue) βρίσκονται στις στήλες 0, 2, 4, ... ενώ οι τιμές δεδομένων (datavalue ) βρίσκονται στις στήλες 1, 3, 5, ...

### Παράδειγμα:

##### Σε 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)

##### Σε 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

Επιστρέφει έναν νέο ριζικό κόμβο του στοιχείου ελέγχου δέντρου, ως αντικείμενο UNO κόμβου τύπου com.sun.star.awt.tree.XMutableTreeNode. Η νέα ρίζα δέντρου εισάγεται κάτω από προϋπάρχοντες ριζικούς κόμβους. Ανατρέξτε στο XMutableTreeNode στην τεκμηρίωση διασύνδεσης προγραμματισμού εφαρμογών (API) για λεπτομερείς πληροφορίες.

Αυτή η μέθοδος μπορεί να κληθεί πριν από την εμφάνιση του πλαισίου διαλόγου για τη δημιουργία του αρχικού δέντρου. Μπορεί επίσης να κληθεί από ένα συμβάν διαλόγου ή ελέγχου για να ολοκληρωθεί δυναμικά το δέντρο.

### Σύνταξη:

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

### Παράμετροι:

displayvalue (τιμή εμφάνισης): Το κείμενο που εμφανίζεται στο πλαίσιο ελέγχου δέντρου.

datavalue (τιμή δεδομένων): Οποιαδήποτε τιμή που σχετίζεται με τον νέο κόμβο. Η datavalue μπορεί να είναι μια συμβολοσειρά, ένας αριθμός ή μια ημερομηνία. Παραλείψτε το όρισμα όταν δεν ισχύει.

### Παράδειγμα:

##### Σε Basic

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

##### Σε Python

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

## FindNode

Διασχίζει το δέντρο και βρίσκει αναδρομικά, ξεκινώντας από τη ρίζα, έναν κόμβο που πληροί ορισμένα κριτήρια. Είτε - 1 η αντιστοίχιση είναι αρκετή - η τιμή εμφάνισης αντιστοιχεί στο μοτίβο displayvalue (τιμή εμφάνισης) ή η τιμή δεδομένων της είναι ίση με datavalue. Οι συγκρίσεις μπορεί να είναι ή όχι με διάκριση πεζών-κεφαλαίων. Η πρώτη εμφάνιση αντιστοίχισης επιστρέφεται ως αντικείμενο UNO κόμβου τύπου com.sun.star.awt.tree.XMutableTreeNode. Ανατρέξτε στο XMutableTreeNode στην τεκμηρίωση διασύνδεσης προγραμματισμού εφαρμογών (API) για λεπτομερείς πληροφορίες.

Όταν δεν βρεθεί, η μέθοδος επιστρέφει Nothing, για δοκιμή με την ενσωματωμένη συνάρτηση IsNull().

Αυτή η μέθοδος μπορεί να κληθεί πριν από την εμφάνιση του πλαισίου διαλόγου για τη δημιουργία του αρχικού δέντρου. Μπορεί επίσης να κληθεί από ένα συμβάν διαλόγου ή ελέγχου.

### Σύνταξη:

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

### Παράμετροι:

Πρέπει να καθοριστεί ένα όρισμα από την displayvalue (τιμή εμφάνισης) ή την datavalue (τιμή δεδομένων). Εάν υπάρχουν και τα δύο, αρκεί μία αντιστοίχιση για την επιλογή του κόμβου.

displayvalue (τιμή εμφάνισης): Το μοτίβο που πρέπει να αντιστοιχιστεί. Ανατρέξτε στη μέθοδο SF_String.IsLike() για τον κατάλογο των πιθανών χαρακτήρων υποκατάστασης. Όταν ισούται με τη συμβολοσειρά μηδενικού μήκους (προεπιλογή), αυτή η τιμή εμφάνισης δεν αναζητείται.

datavalue (τιμή δεδομένων): Οποιαδήποτε τιμή που σχετίζεται με τον νέο κόμβο. Η datavalue μπορεί να είναι μια συμβολοσειρά, ένας αριθμός ή μια ημερομηνία. Παραλείψτε το όρισμα όταν δεν ισχύει.

casesensitive (διάκριση πεζών-κεφαλαίων): Η προεπιλεγμένη τιμή είναι False

### Παράδειγμα:

##### Σε Basic

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

##### Σε Python

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

## SetFocus

Ρύθμιση της εστίασης στον έλεγχο. Επιστρέφει True εάν η εστίαση ήταν επιτυχής.

Αυτή η μέθοδος καλείται συχνά από ένα συμβάν διαλόγου ή ελέγχου.

### Σύνταξη:

svc.SetFocus(): bool

### Παράδειγμα:

##### Σε Basic

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

##### Σε Python

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

## SetTableData

Γεμίζει ένα TableControl με τα δεδομένα. Όλα τα προϋπάρχοντα δεδομένα διαγράφονται πριν από την εισαγωγή των νέων δεδομένων που διαβιβάστηκαν ως όρισμα.

Όταν το TableControl προστεθεί στο παράθυρο διαλόγου, μπορείτε να χρησιμοποιήσετε το IDE της Basic για να καθορίσετε εάν οι κεφαλίδες στηλών και σειρών θα εμφανίζονται στον πίνακα. Εάν το TableControl έχει κεφαλίδες στηλών ή/και σειρών, η πρώτη στήλη και/ή σειρά στον παρεχόμενο πίνακα δεδομένων χρησιμοποιούνται ως ετικέτες για τις κεφαλίδες του πίνακα.

Αυτή η μέθοδος επιστρέφει True όταν είναι επιτυχής.

### Σύνταξη:

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

### Παράμετροι:

dataarray: Τα δεδομένα που θα εισαχθούν στον πίνακα αντιπροσωπεύονται ως πίνακας πινάκων στη Basic ή πλειάδα πλειάδων στην Python. Τα δεδομένα πρέπει να περιλαμβάνουν κεφαλίδες στηλών και σειρών, εάν πρόκειται να εμφανιστούν από το TableControl.

widths (πλάτη): Πίνακας που περιέχει τα σχετικά πλάτη κάθε στήλης. Με άλλα λόγια, widths = Array(1, 2) σημαίνει ότι η δεύτερη στήλη έχει διπλάσιο πλάτος από την πρώτη. Εάν ο αριθμός των τιμών στον πίνακα είναι μικρότερος από τον αριθμό των στηλών στον πίνακα, τότε η τελευταία τιμή του πίνακα χρησιμοποιείται για τον καθορισμό του πλάτους των υπολοίπων στηλών.

alignments (στοιχίσεις): Ορίζει τη στοίχιση σε κάθε στήλη ως μια συμβολοσειρά στην οποία κάθε χαρακτήρας μπορεί να είναι "L" (Αριστερά), "C" (Κέντρο), "R" (Δεξιά) ή " " (κενός χώρος, προεπιλογή, που σημαίνει αριστερά για συμβολοσειρές και δεξιά για αριθμητικές τιμές). Εάν το μήκος της συμβολοσειράς είναι μικρότερο από τον αριθμό των στηλών του πίνακα, τότε ο τελευταίος χαρακτήρας της συμβολοσειράς χρησιμοποιείται για τον καθορισμό της στοίχισης των υπόλοιπων στηλών.

### Παράδειγμα:

##### Σε Basic

Το παρακάτω παράδειγμα προϋποθέτει ότι το παράθυρο διαλόγου myDialog έχει ένα TableControl (στοιχείο ελέγχου πίνακα) με όνομα Grid1 με ιδιότητες "Show row header (Εμφάνιση κεφαλίδας γραμμής)" και "Show column header (Εμφάνιση κεφαλίδας στήλης)" ορισμένες σε " Ναι".

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

Η ιδιότητα Value (Τιμή) επιστρέφει την επιλεγμένη σειρά στον πίνακα. Εάν δεν έχει επιλεγεί καμία σειρά, επιστρέφεται ένα κενό αντικείμενο Array. Το παρακάτω απόσπασμα κώδικα δείχνει πώς να ελέγξετε εάν έχει επιλεγεί κάποια σειρά στον πίνακα.

         rowValues = oTable.Value
         If UBound(rowValues) < 0 Then
             MsgBox "Δεν έχει επιλεγεί σειρά."
         Else
             MsgBox "Η σειρά " & oTable.ListIndex & " έχει επιλεγεί."
         End If

##### Σε 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

Προσθέστε μια νέα γραμμή στο τέλος ενός πεδίου κειμένου πολλών γραμμών. Ένας χαρακτήρας νέας γραμμής θα εισαχθεί όταν χρειάζεται. Η μέθοδος επιστρέφει True όταν είναι επιτυχής.

Παρουσιάζεται σφάλμα εάν το πραγματικό στοιχείο ελέγχου δεν είναι του τύπου TextField ή δεν είναι πολύγραμμο.

### Σύνταξη:

svc.WriteLine(opt line: str): bool

### Παράμετροι:

Line (Γραμμή): Η συμβολοσειρά προς εισαγωγή. Η προεπιλογή είναι μια κενή γραμμή.

### Παράδειγμα:

##### Σε Basic

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

##### Σε Python

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

Όλες οι ρουτίνες ή αναγνωριστικά του ScriptForge στη Basic που έχουν το πρόθεμα χαρακτήρα υπογράμμισης "_" δεσμεύονται για εσωτερική χρήση. Δεν προορίζονται να χρησιμοποιηθούν σε μακροεντολές Basic ή σενάρια Python.

Σχετικά θέματα

SFDialogs. Υπηρεσία Διάλογος

Υπηρεσία ScriptForge.String

Υπηρεσία ScriptForge.UI