API επιλογής παραθύρων φύλλου εργασίας
Τα TXLSWorksheet και TXLSXWorksheet εκθέτουν τις ίδιες μεθόδους με επίγνωση παραθύρου για την ανάγνωση ή την αντικατάσταση επιλεγμένων περιοχών κελιών και εύρων
Κοινοί τύποι και μέθοδοι
TXLSPanePosition = (xlspTopLeft, xlspTopRight, xlspBottomLeft, xlspBottomRight); TXLSSelectedAreas = array of WideString; function GetSelectedAreas(APane: TXLSPanePosition; out ActiveAreaIndex: Integer): TXLSSelectedAreas; function SelectAreas(APane: TXLSPanePosition; const Areas: array of WideString; ActiveAreaIndex: Integer = 0): Boolean; function TryGetWindowScroll(APane: TXLSPanePosition; out ARow, ACol: Integer): Boolean; function ScrollWindow(APane: TXLSPanePosition; ARow, ACol: Integer): Boolean;
Το κείμενο περιοχής χρησιμοποιεί αναφορές κελιού ή εύρους A1, και το ActiveAreaIndex είναι ευρετήριο με βάση το μηδέν στην επιστρεφόμενη ή τη παρεχόμενη ακολουθία περιοχών
Η ακολουθία περιοχών διατηρεί τη σειρά πηγής και μπορεί να περιέχει επικαλυπτόμενα εύρη, επειδή η σειρά επιλογής και η επικάλυψη αποτελούν μέρος της κατάστασης προβολής του φύλλου εργασίας
Ιδιοκτησία στιγμιότυπου
Το GetSelectedAreas επιστρέφει νέο δυναμικό πίνακα του οποίου οι συμβολοσειρές και το μήκος ανήκουν στον καλούντα, ώστε η αλλαγή ή η αποδέσμευση του αποτελέσματος δεν μπορεί να αλλοιώσει το φύλλο εργασίας
Όταν το ζητούμενο παράθυρο δεν έχει εκπροσωπούμενη ομάδα επιλογής, το αποτέλεσμα είναι κενό και το ActiveAreaIndex είναι -1
Η ανάγνωση ανύπαρκτου παραθύρου δεν δημιουργεί ποτέ παράθυρο, αντικείμενο επιλογής, κελί ή εύρος στο βιβλίο εργασίας
Συσσωμάτωση εγγραφών Classic XLS
Το Classic XLS διατηρεί ανεξάρτητη λογική ομάδα επιλογής για κάθε παράθυρο και συσσωματώνει διαδοχικές εγγραφές Selection BIFF με τον ίδιο κωδικό παραθύρου σε σειρά πηγής
Η ενεργή γραμμή, η ενεργή στήλη και το ActiveAreaIndex μοιράζονται από κάθε εγγραφή μιας ομάδας, και το ευρετήριο απευθύνεται στην πλήρη συσσωματωμένη ακολουθία περιοχών και όχι σε μία φυσική εγγραφή
Η αποθήκευση ανέγγιχτης ομάδας διατηρεί τα αρχικά σώματα εγγραφών της, ενώ μια επεξεργασμένη ομάδα γράφεται σε διαδοχικά τμήματα το πολύ 1369 περιοχών με τον ίδιο συσσωματωμένο ενεργό δείκτη σε κάθε τμήμα
Η επεξεργασία ενός παραθύρου αφήνει τις ομάδες των άλλων παραθύρων αμετάβλητες, και τα αντίγραφα του φύλλου εργασίας διατηρούν την πλήρη κατάσταση επιλογής παραθύρων
Δομικές επεξεργασίες
Οι εισαγωγές ή διαγραφές ολόκληρων γραμμών και στηλών αναχαρτογραφούν τις διατεταγμένες ομάδες επιλογής για κάθε εκπροσωπούμενο παράθυρο και στις δύο μηχανές βιβλίου εργασίας
Οι περιοχές που επιζούν διατηρούν τη σειρά και την ταυτότητα της ενεργού περιοχής· αν η ενεργός περιοχή αφαιρεθεί, επιλέγεται ο πρώτος επιζών διάδοχος, ακολουθούμενος από τον τελευταίο επιζών προκάτοχο όταν δεν απομένει διάδοχος
Αν αφαιρεθεί κάθε περιοχή, η ομάδα γίνεται ένα κελί στο όριο διαγραφής, ενώ ένα ενεργό κελί εκτός της επιλεγμένης επιζούσας περιοχής επανέρχεται στο επάνω αριστερό κελί εκείνης της περιοχής
Άκυρες κλασικές εγγραφές
Κακοδιατυπωμένες, μη συνεχόμενες ή αντιφατικές κλασικές εγγραφές Selection παραμένουν αδιαφανείς και δεν εκτίθενται μέσω του τυποποιημένου ερωτήματος περιοχών
Μια φυσική εγγραφή που απορρίπτεται κατά την επικύρωση εγγραφών αναφέρει xlsDiagnosticSelectionRecordInvalid με διαγνωστικό κωδικό 1304, ενώ μια αντιφατικότητα μόνο συσσωμάτωσης αναφέρει μία διαγνωστική ομάδας στο EOF του φύλλου εργασίας· η αποθήκευση επαναλαμβάνει κάθε αρχικό σώμα εγγραφής byte προς byte
Μεγάλες επιλογές
Η ανάλυση και κανονικοποίηση περιοχών, η δομική αναχαρτογράφηση και η κατασκευή στιγμιότυπου χρησιμοποιούν κατασκευαστές μίας διέλευσης ή γεωμετρική αύξηση χωρητικότητας, ώστε μεγάλες ομάδες επιλογής παραμένουν αποσβεστικά γραμμικές
Συντεταγμένες κύλισης παραθύρου
Το TryGetWindowScroll επιστρέφει το πρώτο ορατό κελί για ένα λογικό παράθυρο και το ScrollWindow το αλλάζει, χρησιμοποιώντας συντεταγμένες γραμμής και στήλης φύλλου εργασίας με αρίθμηση από τη μονάδα και στις δύο μηχανές
Τα επάνω παράθυρα μοιράζονται τη γραμμή του συνολικού παραθύρου, τα κάτω παράθυρα τη γραμμή του κάτω παραθύρου, τα αριστερά παράθυρα τη στήλη του συνολικού παραθύρου και τα δεξιά παράθυρα τη στήλη του δεξιού παραθύρου
Ένα ανύπαρκτο παράθυρο επιστρέφει False χωρίς να δημιουργηθεί κατάσταση προβολής, με τα αποτελέσματα του ερωτήματος μηδενισμένα· άκυρες συντεταγμένες επιστρέφουν επίσης False πριν αλλάξει οποιουδήποτε άξονας
Το Classic XLS διατηρεί τους επάνω και αριστερούς άξονες στο Window2 και τους κάτω και δεξιούς άξονες στο Pane, ενώ το XLSX διατηρεί τις αντίστοιχες τιμές topLeftCell του sheetView και του pane ανεξάρτητα
Ατομικές ενημερώσεις
Το SelectAreas επικυρώνει κάθε αναφορά A1 και τον ενεργό δείκτη πριν αποκτήσει τη συναλλαγή εγγραφής του φύλλου εργασίας
Η μέθοδος επιστρέφει False για κακοδιατυπωμένη ή κενή είσοδο, άκυρο ενεργό δείκτη ή παράθυρο που δεν υπάρχει στην τρέχουση διαίρεση ή παγωμένη γεωμετρία, με την προηγούμενη επιλογή αμετάβλητη
Μια επιτυχής κλήση επιστρέφει True και διατηρεί τα υπάρχοντα αντικείμενα επιλογής ειδικά ανά μηχανή και τα legacy API
Παράδειγμα Delphi
if Sheet.SelectAreas(xlspBottomRight,
['C4:E5', 'D5:F6', 'G7'], 1) then
begin
Areas := Sheet.GetSelectedAreas(xlspBottomRight,
ActiveAreaIndex);
UseSelection(Areas, ActiveAreaIndex);
end;
if Sheet.ScrollWindow(xlspBottomRight, 20, 8) and
Sheet.TryGetWindowScroll(xlspBottomRight, Row, Col) then
ShowVisibleCell(Row, Col);
Συμβατότητα
Η κλασική υπερφόρτωση SelectAreas(const Areas; ActiveAreaIndex) και η υπερφόρτωση XLSX SelectAreas(const Areas; ActiveAreaIndex; APane) παραμένουν διαθέσιμες αμετάβλητες
Οι κλασικές ιδιότητες ScrollRow και ScrollColumn και τα μέλη XLSX με βάση το μηδέν SetPaneScroll, GetPaneScroll, ScrollRow και ScrollCol παραμένουν επίσης διαθέσιμα αμετάβλητα
Η κοινή πρόσοψη μετατρέπει ρητά τα ονόματα λογικών παραθύρων, ώστε οι καλούντες να μην εξαρτώνται από τους αριθμητικούς κωδικούς παραθύρων που χρησιμοποιεί οποιαδήποτε μορφή αρχείου