Περιεχόμενα

# Υπηρεσία 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 • Hyperlink • ImageControl | • ListBox • NumericField • PatternField • ProgressBar • RadioButton • ScrollBar | • TableControl • TextField • TimeField • TreeControl

## Ιδιότητες

Όνομα | Μόνο για ανάγνωση | Τύπος | Εφαρμόζεται σε | Περιγραφή
--- | --- | --- | --- | ---
Border | Yes | String | Button, … | The Border property refers to the surrounding of the control: 3D, FLAT or NONE.
Cancel | Όχι | Boolean | Button | Καθορίζει εάν ένα πλήκτρο εντολής έχει ή όχι τη συμπεριφορά ενός πλήκτρου Ακύρωσης.
Caption | Όχι | String | Button, CheckBox, FixedLine, FixedText, GroupBox, Hyperlink, 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 | Καθορίζει τα δεδομένα που περιέχονται σε ένα σύνθετο πλαίσιο ή ένα πλαίσιο καταλόγου.
TabIndex | Yes | Numeric | All | The TabIndex property specifies a control's place in the tab order in the dialog.
Text | Ναι | String | ComboBox, FileControl, FormattedField, PatternField, TextField | Παρέχει πρόσβαση στο κείμενο που εμφανίζεται από το στοιχείο ελέγχου.
TipText | Όχι | String | Όλα | Καθορίζει το κείμενο που εμφανίζεται ως συμβουλή όταν κρατάτε τον δείκτη του ποντικιού πάνω από το στοιχείο ελέγχου.
TripleState | Όχι | Boolean | CheckBox | Καθορίζει εάν το στοιχείο ελέγχου πλαισίου ελέγχου μπορεί να εμφανίζεται αμυδρό (γκρίζο) ή όχι.
URL | No | String | Hyperlink | The URL to open when the control is clicked.
Value | Όχι | Variant |  | Refer to Value property
Visible | Όχι | Boolean | Όλα | Καθορίζει εάν το στοιχείο ελέγχου είναι κρυφό ή ορατό.
XControlModel | Ναι | Αντικείμενο UNO | Όλα | Το αντικείμενο UNO που αντιπροσωπεύει το μοντέλο ελέγχου. Ανατρέξτε στην τεκμηρίωση XControlModel και στο UnoControlDialogModel διασύνδεσης προγραμματισμού εφαρμογών (API) για λεπτομερείς πληροφορίες.
XControlView | Ναι | Αντικείμενο UNO | Όλα | Το αντικείμενο UNO που αντιπροσωπεύει την προβολή ελέγχου. Ανατρέξτε στο XControl και στο UnoControlDialog στην τεκμηρίωση της διασύνδεσης προγραμματισμού εφαρμογών (API) για λεπτομερείς πληροφορίες.
XTreeDataModel | Ναι | Αντικείμενο UNO | TreeControl | Το αντικείμενο UNO που αντιπροσωπεύει το μοντέλο δεδομένων ελέγχου δέντρου. Ανατρέξτε στο XMutableTreeDataModel στην τεκμηρίωση διασύνδεσης προγραμματισμού εφαρμογών (API) για αναλυτικές πληροφορίες.

## The Value property

Τύπος ελέγχου | Τύπος | Περιγραφή
--- | --- | ---
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 |

There's no Value property for GroupBox, Hyperlink, ImageControl and TreeControl dialog controls.

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

On… properties return a URI string with the reference to the script triggered by the event. On… properties can be set programmatically.
Read its specification in the scripting framework URI specification.

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

Assigning events via the Basic IDE and assigning events via macros are mutually exclusive.

## Μέθοδοι

Κατάλογος μεθόδων στην υπηρεσία DialogControl
AddSubNode AddSubTree CreateRoot | FindNode Resize 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:
             # ...

## Resize

Move the top-left corner of a dialog control to new coordinates and/or modify its dimensions. Return True if resizing was successful.

### Σύνταξη:

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

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

All distances are expressed in Map AppFont units and are measured from the top-left corner of the parent dialog. Without arguments the method resizes the control to its "preferred size", a size adjusted depending on its actual content. Missing arguments are left unchanged.

Left: The horizontal distance from the top-left corner

Top: The vertical distance from the top-left corner

Width: the horizontal width of the rectangle containing the control

Height: the vertical height of the rectangle containing the control

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

##### Σε Basic

          Dim oControl As Object
          Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
          Set oControl = oDlg.Controls("thisControl")
          oControl.Resize(100, 200, Height:=6000) ' Width is unchanged

##### Σε Python

          dlg = CreateScriptService('Dialog', None, None, 'myDialog')
          ctrl = dlg.Controls('thisControl')
          ctrl.Resize(300, 200, 1500)  # Height is unchanged

## 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, RowHeaderWidth = 10): bool

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

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

widths: Array containing the relative widths of each column. In other words, widths = (1, 2) means that the second column is twice as wide as the first one. If the number of values in the array is smaller than the number of columns in the table, then the last value in the array is used to define the width of the remaining columns.

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

RowHeaderWidth: width of the row header column expressed in Map AppFont units. Default = 10. The argument is ignored when the TableControl has no row header.

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

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