Υπηρεσία SFDialogs.DialogControl

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

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

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

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

tip

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


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

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

note

• Οι μακροεντολές 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()
   

Ανάκτηση της παρουσίας DialogControl που ενεργοποίησε ένα συμβάν ελέγχου

Μια παρουσία της υπηρεσίας DialogControl μπορεί να ανακτηθεί μέσω της υπηρεσίας SFDialogs.DialogEvent, με την προϋπόθεση ότι το παράθυρο διαλόγου ξεκίνησε με την υπηρεσία Dialog. Στο παρακάτω παράδειγμα, το oControl περιέχει την παρουσία DialogControl που ενεργοποίησε το συμβάν ελέγχου.


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

Ή χρησιμοποιώντας Python:


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

Λάβετε υπόψη ότι στα προηγούμενα παραδείγματα, το πρόθεμα "SFDialogs." μπορεί να παραλειφθεί όταν κριθεί κατάλληλο.

Χειρισμός εξαιρέσεων σε χειριστές συμβάντων

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


    Sub OnButtonClicked(ByRef oEvent As Object)
    On Local Error GoTo Catch
        Dim oControl As Object
        oControl = CreateScriptService("DialogEvent", oEvent)
        ' Επεξεργασία του συμβάντος
        Exit Sub
    Catch:
        MsgBox SF_Exception.Description
        SF_Exception.Clear
    End Sub
  
tip

Καλέστε το SF_Exception.Clear εάν δεν θέλετε να διαδοθεί το σφάλμα μετά το τέλος της εκτέλεσης του διαλόγου.


Στην Python χρησιμοποιήστε εγγενή μπλοκ try/except για χειρισμό εξαιρέσεων όπως φαίνεται παρακάτω:


    def on_button_clicked(event=None):
        try:
            oControl = CreateScriptService("DialogEvent", event)
            # Επεξεργασία του συμβάντος
        except Exception as e:
            # Το αντικείμενο "bas" παρακάτω είναι μια παρουσία της υπηρεσίας Basic
            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

Ναι

String

Button, …

Η ιδιότητα Border αναφέρεται στο περιβάλλον του στοιχείου ελέγχου: "3D", "FLAT", ή "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

Ναι

Numeric

All

Η ιδιότητα TabIndex καθορίζει τη θέση ενός στοιχείου ελέγχου στη σειρά των καρτελών στο παράθυρο διαλόγου.

Text

Ναι

String

ComboBox, FileControl, FormattedField, PatternField, TextField

Παρέχει πρόσβαση στο κείμενο που εμφανίζεται από το στοιχείο ελέγχου.

TipText

Όχι

String

Όλα

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

TripleState

Όχι

Boolean

CheckBox

Καθορίζει εάν το στοιχείο ελέγχου πλαισίου ελέγχου μπορεί να εμφανίζεται αμυδρό (γκρίζο) ή όχι.

URL

Όχι

String

Hyperlink

Η διεύθυνση URL που θα ανοίξει όταν πατήσετε στο στοιχείο ελέγχου.

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


note

Δεν υπάρχει ιδιότητα Value για τα στοιχεία ελέγχου διαλόγου GroupBox, Hyperlink, ImageControl και TreeControl .


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

Οι ιδιότητες On… επιστρέφουν μια συμβολοσειρά URI με αναφορά στο σενάριο που ενεργοποιήθηκε από το συμβάν. Οι ιδιότητες On… μπορούν να οριστούν μέσω προγραμματισμού.
Διαβάστε τις προδιαγραφές του στο scripting frameworkURI.

Όνομα

Μόνο για ανάγνωση

Η περιγραφή όπως επισημαίνεται στο IDE Basic

OnActionPerformed

Ναι

Εκτέλεση ενέργειας

OnAdjustmentValueChanged

Ναι

Κατά την προσαρμογή

OnFocusGained

Ναι

Κατά τη λήψη της εστίασης

OnFocusLost

Ναι

Κατά τη απώλεια της εστίασης

OnItemStateChanged

Ναι

Η κατάσταση του στοιχείου τροποποιήθηκε

OnKeyPressed

Ναι

Με το πλήκτρο πατημένο

OnKeyReleased

Ναι

Με το πλήκτρο απελευθερωμένο

OnMouseDragged

Ναι

Το ποντίκι μετακινήθηκε κατά το πάτημα του πλήκτρου

OnMouseEntered

Ναι

Το ποντίκι εντός

OnMouseExited

Ναι

Το ποντίκι εκτός

OnMouseMoved

Ναι

Το ποντίκι μετακινήθηκε

OnMousePressed

Ναι

Με πατημένο το πλήκτρο του ποντικιού

OnMouseReleased

Ναι

Με απελευθερωμένο το πλήκτρο του ποντικιού

OnNodeExpanded

Όχι

(Όχι στο IDE Basic) όταν πατηθεί το πλήκτρο επέκτασης σε έναν κόμβο σε ένα στοιχείο ελέγχου δέντρου

OnNodeSelected

Όχι

(Όχι στο IDE Basic) όταν επιλέγεται ένας κόμβος σε ένα στοιχείο ελέγχου δέντρου

OnTextChanged

Ναι

Το κείμενο τροποποιήθηκε


warning

Η εκχώρηση συμβάντων μέσω του IDE της Basic και η εκχώρηση συμβάντων μέσω μακροεντολών είναι αμοιβαία αποκλειόμενες.


Μέθοδοι

Κατάλογος μεθόδων στην υπηρεσία 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

Μετακινήστε την επάνω αριστερή γωνία ενός στοιχείου ελέγχου διαλόγου σε νέες συντεταγμένες ή/και τροποποιήστε τις διαστάσεις του. Επιστρέψτε το True εάν η αλλαγή μεγέθους ήταν επιτυχής.

Σύνταξη:

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

Παράμετροι:

Όλες οι αποστάσεις εκφράζονται σε Μονάδες Map AppFont και μετρώνται από την επάνω αριστερή γωνία του γονικού διαλόγου. Χωρίς ορίσματα, η μέθοδος αλλάζει το μέγεθος του στοιχείου ελέγχου στο "προτιμώμενο μέγεθος", ένα μέγεθος που προσαρμόζεται ανάλογα με το πραγματικό του περιεχόμενο. Τα ορίσματα που λείπουν παραμένουν αμετάβλητα.

Left: Η οριζόντια απόσταση από την επάνω αριστερή γωνία

Top: Η κατακόρυφη απόσταση από την επάνω αριστερή γωνία

Width: το οριζόντιο πλάτος του ορθογωνίου που περιέχει το στοιχείο ελέγχου

Height: το κατακόρυφο ύψος του ορθογωνίου που περιέχει το στοιχείο ελέγχου

Παράδειγμα:

Σε Basic

      Dim oControl As Object
      Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
      Set oControl = oDlg.Controls("thisControl")
      oControl.Resize(100, 200, Height:=6000) ' Το πλάτος είναι αμετάβλητο
    
Σε Python

      dlg = CreateScriptService('Dialog', None, None, 'myDialog')
      ctrl = dlg.Controls('thisControl')
      ctrl.Resize(300, 200, 1500) # Το ύψος παραμένει αμετάβλητο
    

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

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

RowHeaderWidth: πλάτος στήλης της κεφαλίδας της σειράς που εκφράζεται σε Μονάδες Map AppFont. Προεπιλογή = 10. Το όρισμα αγνοείται όταν το TableControl δεν έχει κεφαλίδα σειράς.

Παράδειγμα:

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

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


Παρακαλούμε, υποστηρίξτε μας!