Πρόσθετο για προγραμματισμό στο LibreOffice Calc

Εικονίδιο προειδοποίησης

Η μέθοδος επέκτασης του Calc με Πρόσθετα που περιγράφεται στα ακόλουθα είναι ξεπερασμένη.Τα περιβάλλοντα είναι ακόμη έγκυρα και υποστηρίζονται για να εξασφαλισθεί η συμβατότητα με τα υπάρχοντα πρόσθετα, αλλά για προγραμματισμό νέων προσθέτων θα πρέπει να χρησιμοποιήσετε τις νέες συναρτήσεις API.


Στο LibreOffice Calc είναι δυνατή η προσθήκη προσθέτων, τα οποία αποτελούν εξωτερικές λειτουργικές μονάδες προγραμματισμού, που παρέχουν πρόσθετες συναρτήσεις για την εργασία με υπολογιστικά φύλλα. Τα πρόσθετα αυτά εμφανίζονται στον Οδηγό συνάρτησης, στην κατηγορία Πρόσθετες. Εάν θέλετε να προγραμματίσετε οι ίδιοι ένα τέτοιο πρόσθετο, μπορείτε να μάθετε εδώ ποιες είναι οι συναρτήσεις που πρέπει να εξαγάγετε από την έτσι ώστε να προσαρτηθεί επιτυχώς το Πρόσθετο.

Το LibreOffice ψάχνει το φάκελο Πρόσθετα που καθορίζεται στις ρυθμίσεις για μια κατάλληλη . Για να αναγνωρίζεται από το LibreOffice, η πρέπει να έχει συγκεκριμένες ιδιότητες, όπως εξηγείται ακολούθως. Αυτές οι πληροφορίες σας επιτρέπουν προγραμματίσετε το δικό σας Πρόσθετο για τον Οδηγό συνάρτησης του LibreOffice Calc.

Η έννοια του πρόσθετου

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

Συναρτήσεις της

Οι διαχειριστικές συναρτήσεις που πρέπει να υπάρχουν τουλάχιστον είναι οι συναρτήσεις GetFunctionCount και GetFunctionData. Βάσει αυτών των συναρτήσεων, μπορούν να οριστούν οι συναρτήσεις, οι τύποι των παραμέτρων και οι τιμές επιστροφής. Όσον αφορά τις τιμές επιστροφής, υποστηρίζονται οι τύποι Διπλή και Συμβολοσειρά. Ως παράμετροι, επιπλέον υποστηρίζονται οι περιοχές κελιών Double Array, String Array, και Cell Array.

Η μεταβίβαση των παραμέτρων γίνεται βάσει παραπομπών. Ως εκ τούτου, η αλλαγή αυτών των τιμών είναι, κανονικά, δυνατή. Ωστόσο, αυτή η δυνατότητα δεν υποστηρίζεται από το LibreOffice Calc, λόγω του ότι η χρήση της δεν έχει κανένα νόημα στα φύλλα υπολογισμού.

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

Η κλήση των συναρτήσεων γίνεται με συγχρονισμό και η επιστροφή των αποτελεσμάτων είναι άμεση. Υπάρχει και η δυνατότητα εφαρμογής συναρτήσεων σε πραγματικό χρόνο (ασύγχρονες συναρτήσεις). Δεν εξηγούνται, ωστόσο, με λεπτομέρεια, διότι είναι εξαιρετικά πολύπλοκες.

Γενικές πληροφορίες σχετικά με το περιβάλλον

Ο μέγιστος αριθμός παραμέτρων σε μια συνάρτηση πρόσθετου που επισυνάπτεται στο LibreOffice Calc είναι 16: μία τιμή επιστροφής και 15 παράμετροι εισαγωγής στη συνάρτηση το ανώτερο.

Οι τύποι των δεδομένων ορίζονται ως εξής:

Τύποι δεδομένων

Ορισμός

CALLTYPE

Σε περιβάλλον Windows: FAR PASCAL (_far _pascal)

Σε άλλο περιβάλλον: προεπιλογή (προεπιλογή ανάλογα με το λειτουργικό σύστημα)

USHORT

Ακέραιος 2 byte χωρίς πρόσημο

DOUBLE

Μορφή 8 byte ανάλογα με την πλατφόρμα

Paramtype

Ανάλογα με την πλατφόρμα, όπως ο int

PTR_DOUBLE =0 δείκτης σε τύπο διπλής ακρίβειας

PTR_STRING =1 δείκτης σε συμβολοσειρά που καταλήγει σε 0

PTR_DOUBLE_ARR =2 δείκτης σε διπλό πίνακα

PTR_STRING_ARR =3 δείκτης σε πίνακα συμβολοσειράς

PTR_CELL_ARR =4 δείκτης σε πίνακα κελιών

NONE =5


Συναρτήσεις

Ακολούθως θα βρείτε μια περιγραφή αυτών των συναρτήσεων, που καλούνται στην .

Για όλες τις συναρτήσεις της , ισχύουν τα ακόλουθα:

void CALLTYPE fn(out, in1, in2, ...)

Έξοδος: Η τιμή του αποτελέσματος

Είσοδος: Οποιοσδήποτε αριθμός τύπων (double&, char*, double*, char**, περιοχή κελιών), όπου η Περιοχή κελιών είναι ένας πίνακας με τύπο διπλός πίνακας, πίνακας συμβολοσειράς ή πίνακας κελιών.

GetFunctionCount()

Επιστρέφει τον αριθμό των συναρτήσεων χωρίς τις διαχειριστικές συναρτήσεις της παραμέτρου αναφοράς. Κάθε συνάρτηση έχει έναν μοναδικό αριθμό μεταξύ του 0 και του nCount-1. Αυτός ο αριθμός είναι απαραίτητος, στη συνέχεια, για τις συναρτήσεις GetFunctionData και GetParameterDescription.

Σύνταξη

void CALLTYPE GetFunctionCount(USHORT& nCount)

Παράμετρος

USHORT &nCount:

Έξοδος: Αναφορά σε μια μεταβλητή, η οποία πρέπει κανονικά να περιέχει τον αριθμό των συναρτήσεων πρόσθετου. Π.χ.: Εάν το πρόσθετο παρέχει 5 συναρτήσεις για το LibreOffice Calc, η έξοδος πρέπει να είναι nCount=5.

GetFunctionData()

Προσδιορίζει όλες τις σημαντικές πληροφορίες για μια Πρόσθετη συνάρτηση.

Σύνταξη

void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)

Παράμετρος

USHORT& nNo:

Είσοδος: Ο αριθμός των συναρτήσεων μεταξύ του 0 και του nCount-1, συμπεριλαμβανομένων και αυτών.

char* pFuncName:

Έξοδος: Το όνομα της συνάρτησης όπως το βλέπει ο προγραμματιστής, όπως ονομάζεται στην . Αυτό το όνομα δεν καθορίζει το όνομα που χρησιμοποιείται στον Οδηγό συνάρτησης.

USHORT& nParamCount:

Έξοδος: Ο αριθμός των παραμέτρων στη συνάρτηση πρόσθετου. Αυτός ο αριθμός πρέπει να είναι μεγαλύτερος του 0, καθώς υπάρχει πάντα μια τιμή αποτελέσματος. Η μέγιστη τιμή είναι 16.

Paramtype* peType:

Έξοδος: Δείκτης σε έναν πίνακα 16 ακριβώς μεταβλητών τύπου Paramtype. Οι πρώτες nParamCount καταχωρήσεις συμπληρώνονται με την παράμετρο του κατάλληλου τύπου.

char* pInternalName:

Έξοδος: Το όνομα της συνάρτησης όπως το βλέπει ο χρήστης, δηλαδή, όπως εμφανίζεται στον Οδηγό συνάρτησης. Μπορεί να περιλαμβάνει umlaut.

Οι παράμετροι pFuncName και pInternalName είναι πίνακες χαρακτήρων, οι οποίοι εφαρμόζονται με μέγεθος 256 στο LibreOffice Calc.

GetParameterDescription()

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

Σύνταξη

void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)

Παράμετρος

USHORT& nNo:

Είσοδος: Ο αριθμός της συνάρτησης στη βιβλιοθήκη. Μεταξύ του 0 και του nCount-1.

USHORT& nParam:

Είσοδος: Επισημαίνει την παράμετρο για την οποία δίνεται η περιγραφή. Οι παράμετροι ξεκινούν από το 1. Εάν η παράμετρος nParam είναι 0, η ίδια η περιγραφή πρέπει να εμφανίζεται στην παράμετρο pDesc. Σε αυτήν την περίπτωση, η παράμετρος pName δεν έχει κανένα νόημα.

char* pName:

Έξοδος: Λαμβάνει το όνομα ή τον τύπο της παραμέτρου, π.χ. τη λέξη "Αριθμός" ή "Συμβολοσειρά" ή "Ημερομηνία" κ.ο.κ. Υλοποιείται στο LibreOffice Calc ως char[256].

char* pDesc:

Έξοδος: Λαμβάνει την περιγραφή της παραμέτρου, π.χ. τη λέξη "Τιμή, στην οποία θα υπολογισθεί το σύμπαν". Υλοποιείται στο LibreOffice Calc ως char[256].

Οι παράμετροι pName και pDesc είναι πίνακες χαρακτήρων. Εφαρμόζονται στο LibreOffice Calc με μέγεθος 256. Ο χώρος που είναι διαθέσιμος στον Οδηγό συνάρτησης είναι περιορισμένος και δεν είναι δυνατή η χρήση και των 256 χαρακτήρων.

Περιοχές κελιών

Οι ακόλουθοι πίνακες περιλαμβάνουν τις πληροφορίες για το ποιες δομές δεδομένων πρέπει να παρέχονται από μια εξωτερική λειτουργική μονάδα προγράμματος, προκειμένου να είναι δυνατή η μεταβίβαση των περιοχών κελιών. Το LibreOffice Calc διακρίνει μεταξύ τριών διαφορετικών πινάκων, ανάλογα με τον τύπο των δεδομένων.

Διπλός πίνακας

Ως παράμετρος, μπορεί να μεταβιβαστεί μια περιοχή κελιών με τιμές τύπου Αριθμό/Διπλής. Ένα διπλός πίνακας στο LibreOffice Calc ορίζεται ως ακολούθως:

Αντιστάθμισμα

Όνομα

Περιγραφή

0

Στήλη1

Ο αριθμός της στήλης στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

2

Γραμμή1

Ο αριθμός της γραμμής στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

4

Καρτέλα1

Ο αριθμός του πίνακα στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

6

Στήλη2

Ο αριθμός στήλης στην κάτω δεξιά γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

8

Γραμμή2

Ο αριθμός γραμμής στην κάτω δεξιά γωνία της περιοχής κελιών· η αρίθμηση ξεκινά από το 0.

10

Καρτέλα2

Ο αριθμός πίνακα στην κάτω δεξιά γωνία της περιοχής κελιών· η αρίθμηση ξεκινά από το 0.

12

Μέτρηση

Ο αριθμός των ακόλουθων στοιχείων. Τα κενά κελιά δεν καταμετρούνται ή περνούν.

14

Στήλη

Αριθμός στήλης του στοιχείου. Η αρίθμηση ξεκινά από το 0.

16

Γραμμή

Αριθμός σειράς του στοιχείου. Η αρίθμηση ξεκινά από το 0.

18

Καρτέλα

Αριθμός πίνακα του στοιχείου. Η αρίθμηση ξεκινά από το 0.

20

Σφάλμα

Αριθμός σφάλματος, όπου η τιμή 0 καθορίζεται ως "όχι σφάλμα". Αν το στοιχείο προέρχεται από ένα κελί με τύπο η τιμή σφάλματος καθορίζεται από τον τύπο.

22

Τιμή

Μεταβλητή IEEE 8 byte τύπου διπλής ακρίβειας/κινητής υποδιαστολής

30

...

Επόμενο στοιχείο


Σειρά αλφαριθμητικών δεδομένων

Μια περιοχή κελιών, η οποία περιέχει τιμές με τύπο δεδομένων Κείμενο και χειρίζεται ως σειρά αλφαριθμητικών δεδομένων. Μία σειρά αλφαριθμητικών δεδομένων στο LibreOffice Calc καθορίζεται ως εξής:

Αντιστάθμισμα

Όνομα

Περιγραφή

0

Στήλη1

Ο αριθμός της στήλης στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

2

Γραμμή1

Ο αριθμός της γραμμής στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

4

Καρτέλα1

Ο αριθμός του πίνακα στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

6

Στήλη2

Ο αριθμός στήλης στην κάτω δεξιά γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

8

Γραμμή2

Ο αριθμός γραμμής στην κάτω δεξιά γωνία της περιοχής κελιών· η αρίθμηση ξεκινά από το 0.

10

Καρτέλα2

Ο αριθμός πίνακα στην κάτω δεξιά γωνία της περιοχής κελιών· η αρίθμηση ξεκινά από το 0.

12

Μέτρηση

Ο αριθμός των ακόλουθων στοιχείων. Τα κενά κελιά δεν καταμετρούνται ή περνούν.

14

Στήλη

Αριθμός στήλης του στοιχείου. Η αρίθμηση ξεκινά από το 0.

16

Γραμμή

Αριθμός σειράς του στοιχείου. Η αρίθμηση ξεκινά από το 0.

18

Καρτέλα

Αριθμός πίνακα του στοιχείου. Η αρίθμηση ξεκινά από το 0.

20

Σφάλμα

Αριθμός σφάλματος, όπου η τιμή 0 καθορίζεται ως "όχι σφάλμα". Αν το στοιχείο προέρχεται από ένα κελί με τύπο η τιμή σφάλματος καθορίζεται από τον τύπο.

22

Len

Το μήκος της επόμενης συμβολοσειράς, συμπεριλαμβανομένου του μηδενικού byte τερματισμού. Εάν το μήκος, συμπεριλαμβανομένου του μηδενικού byte, ισούται με περιττή τιμή, προστίθεται ένα δεύτερο μηδενικό στη συμβολοσειρά, προκειμένου να επιτευχθεί μια άρτια τιμή. Ως εκ τούτου, το μήκος υπολογίζεται βάσει της συνάρτησης ((StrLen+2)&~1).

24

Αλφαριθμητικό

Ακολουθία χαρακτήρων με μηδενική ψηφιολέξη κλεισίματος.

24+Len

...

Επόμενο στοιχείο


Πίνακες κελιών

Οι πίνακες κελιών χρησιμοποιούνται για την κλήση περιοχών κελιών, που περιέχουν τόσο κείμενο όσο και αριθμούς. Ο πίνακας κελιών ορίζεται στο LibreOffice Calc ως εξής:

Αντιστάθμισμα

Όνομα

Περιγραφή

0

Στήλη1

Ο αριθμός της στήλης στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

2

Γραμμή1

Ο αριθμός της γραμμής στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

4

Καρτέλα1

Ο αριθμός του πίνακα στην πάνω αριστερή γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

6

Στήλη2

Ο αριθμός στήλης στην κάτω δεξιά γωνία της περιοχής κελιών. Η αρίθμηση ξεκινά από το 0.

8

Γραμμή2

Ο αριθμός γραμμής στην κάτω δεξιά γωνία της περιοχής κελιών· η αρίθμηση ξεκινά από το 0.

10

Καρτέλα2

Ο αριθμός πίνακα στην κάτω δεξιά γωνία της περιοχής κελιών· η αρίθμηση ξεκινά από το 0.

12

Μέτρηση

Ο αριθμός των ακόλουθων στοιχείων. Τα κενά κελιά δεν καταμετρούνται ή περνούν.

14

Στήλη

Αριθμός στήλης του στοιχείου. Η αρίθμηση ξεκινά από το 0.

16

Γραμμή

Αριθμός σειράς του στοιχείου. Η αρίθμηση ξεκινά από το 0.

18

Καρτέλα

Αριθμός πίνακα του στοιχείου. Η αρίθμηση ξεκινά από το 0.

20

Σφάλμα

Αριθμός σφάλματος, όπου η τιμή 0 καθορίζεται ως "όχι σφάλμα". Αν το στοιχείο προέρχεται από ένα κελί με τύπο η τιμή σφάλματος καθορίζεται από τον τύπο.

22

Τύπος

Τύπος του περιεχομένου του κελιού, 0 == Διπλής ακρίβειας, 1 == Συμβολοσειρά

24

Τιμή ή Μήκος

Εάν ο τύπος == 0: Μεταβλητή IEEE 8 byte τύπου διπλής ακρίβειας/κινητής υποδιαστολής

Εάν ο τύπος == 1: Το μήκος της επόμενης συμβολοσειράς, συμπεριλαμβανομένου του μηδενικού byte κλεισίματος. Εάν το μήκος, συμπεριλαμβανομένου του μηδενικού byte κλεισίματος, ισούται με περιττή τιμή, προστίθεται ένα δεύτερο μηδενικό στη συμβολοσειρά, προκειμένου να επιτευχθεί μια άρτια τιμή. Ως εκ τούτου, το μήκος υπολογίζεται βάσει της συνάρτησης ((StrLen+2)&~1).

26 εάν ο τύπος==1

Αλφαριθμητικό

Εάν ο τύπος == 1: Συμβολοσειρά με μηδενικό byte κλεισίματος

32 ή 26+Len

...

Επόμενο στοιχείο