Munkalap ablaktábla-kijelölési API
A TXLSWorksheet és a TXLSXWorksheet ugyanazokat az ablaktábla-érzékeny metódusokat teszik elérhetővé a kijelölt cella- és tartományterületek kiolvasására vagy cseréjére
Közös típusok és metódusok
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;
A területszöveg A1 cella- vagy tartományhivatkozásokat használ, az ActiveAreaIndex pedig a visszaadott vagy megadott területsorozat nulla alapú indexe
A területsorozat megőrzi a forrás sorrendjét, és tartalmazhat átfedő tartományokat, mert a kijelölés sorrendje és az átfedés a munkalap nézetállapotának része
Pillanatkép-tulajdonlás
A GetSelectedAreas egy új dinamikus tömböt ad vissza, amelynek karakterláncai és hossza a hívó tulajdonát képezik, így az eredmény módosítása vagy felszabadítása nem változtathatja meg a munkalapot
Ha a kért ablaktáblához nem tartozik reprezentált kijelölési csoport, az eredmény üres, és az ActiveAreaIndex értéke -1
Egy hiányzó ablaktábla kiolvasása soha nem hoz létre ablaktáblát, kijelölési objektumot, cellát vagy tartományt a munkafüzetben
Klasszikus XLS rekordaggregáció
A klasszikus XLS minden ablaktáblához független logikai kijelölési csoportot tart nyilván, és az azonos ablaktáblakódú egymást követő BIFF Selection rekordokat forrássorrendben aggregálja
Az aktív sort, az aktív oszlopot és az ActiveAreaIndex értéket egy csoport minden rekordja közösen használja, és az index a teljes aggregált területsorozatot címezzi, nem pedig egyetlen fizikai rekordot
Egy érintetlen csoport mentése megőrzi az eredeti rekordtesteket, míg egy szerkesztett csoport legfeljebb 1369 területhosszú egymást követő darabokban íródik, minden darabban ugyanazzal az aggregált aktív indexszel
Egy ablaktábla szerkesztése változatlanul hagyja a többi ablaktábla csoportjait, a munkalapmásolatok pedig megtartják a teljes ablaktábla-kijelölési állapotot
Strukturális szerkesztések
A teljes sorra és teljes oszlopra kiterjedő beszúrások és törlések átrendezik a rendezett kijelölési csoportokat minden reprezentált ablaktáblához mindkét munkafüzet-motorban
A fennmaradó területek megtartják sorrendjüket és az aktív terület azonosságát; ha az aktív terület eltávolításra kerül, az első fennmaradó utód kerül kijelölésre, majd ha utód már nincs, az utolsó fennmaradó előd következik
Ha minden terület eltávolításra kerül, a csoport a törlési határon lévő egyetlen cellává alakul, míg a kiválasztott fennmaradó területen kívülre eső aktív cella az adott terület bal felső cellájára esik vissza
Érvénytelen klasszikus rekordok
A hibás, nem összefüggő vagy ellentmondásos klasszikus Selection rekordok átlátszatlanok maradnak, és nem jelennek meg a típusos területlekérdezésben
A rekordérvényesítés során elutasított fizikai rekord xlsDiagnosticSelectionRecordInvalid diagnózist jelent 1304 diagnosztikai kóddal, míg a csak az aggregációt érintő ellentmondás egy csoportdiagnózist jelent a munkalap EOF-jánál; a mentés bájtról bájtra visszajátssza az összes eredeti rekordtestet
Nagy kijelölések
A területek elemzése, normalizálása, strukturális átrendezése és a pillanatkép összeállítása egylépéses összeállítókat vagy geometriai kapacitásnövelést használ, így a nagy kijelölési csoportok amortizáltan lineárisak maradnak
Ablaktábla-görgetési koordináták
A TryGetWindowScroll egyetlen logikai ablaktábla első látható celláját adja vissza, a ScrollWindow pedig módosítja azt, mindkét motorban 1 alapú munkalap sor- és oszlopkoordinátákkal
A felső ablaktáblák megosztják a teljes ablak sorát, az alsó ablaktáblák az alsó ablaktábla sorát, a bal oldali ablaktáblák a teljes ablak oszlopát, a jobb oldali ablaktáblák pedig a jobb ablaktábla oszlopát
Egy hiányzó ablaktábla False értéket ad vissza nézetállapot létrehozása nélkül, a lekérdezési kimenetek nullára állításával; az érvénytelen koordináták szintén False értéket adnak vissza, mielőtt bármelyik tengely megváltozna
A klasszikus XLS a felső és bal tengelyt a Window2, az alsó és jobb tengelyt a Pane rekordban őrzi meg, míg az XLSX a megfelelő sheetView és pane topLeftCell értékeket egymástól függetlenül tartja meg
Atomi frissítések
A SelectAreas minden A1 hivatkozást és az aktív indexet érvényesít, mielőtt megszerezné a munkalap írási tranzakcióját
A metódus False értéket ad vissza hibás vagy üres bemenet, érvénytelen aktív index, vagy olyan ablaktábla esetén, amely nem létezik az aktuális felosztási vagy rögzítési geometriában, miközben a korábbi kijelölés változatlan marad
Egy sikeres hívás True értéket ad vissza, és megőrzi a meglévő, motorra jellemző kijelölési objektumokat és az örökölt API-kat
Delphi-példa
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);
Kompatibilitás
A klasszikus SelectAreas(const Areas; ActiveAreaIndex) túlterhelés és az XLSX SelectAreas(const Areas; ActiveAreaIndex; APane) túlterhelés változatlanul elérhető marad
A klasszikus ScrollRow és ScrollColumn tulajdonságok, valamint az XLSX nulla alapú SetPaneScroll, GetPaneScroll, ScrollRow és ScrollCol tagok is változatlanul elérhetők maradnak
A közös homlokzat a logikai ablaktáblaneveket explicit módon konvertálja, így a hívók nem függenek egyik fájlformátum által használt numerikus ablaktáblakódoktól sem