API za izbiro podoken delovnega lista
TXLSWorksheet in TXLSXWorksheet razkrivata isti par metod, ki upoštevata podokna, za branje ali zamenjavo izbranih območij celic in obsegov
Skupni tipi in metodi
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;
Besedilo območja uporablja sklice A1 na celice ali obsege, ActiveAreaIndex pa je kazalo, ki se šteje od nič, v vrnjeni ali podani vrsti območij
Vrsta območij ohrani vrstni red vira in lahko vsebuje prekrivajoče se obsege, saj sta vrstni red izbire in prekrivanje del stanja pogleda delovnega lista
Lastništvo posnetka
GetSelectedAreas vrne novo dinamično tabelo, katere nizi in dolžina pripadajo klicatelju, zato spreminjanje ali sprostitev rezultata ne more spremeniti delovnega lista
Ko zahtevano podokno nima predstavljenih skupin izbire, je rezultat prazen, ActiveAreaIndex pa je -1
Branje manjkajočega podokna nikoli ne ustvari podokna, predmeta izbire, celice ali obsega v delovnem zvezku
Združevanje zapisov klasičnega XLS
Klasični XLS hrani neodvisno logično skupino izbire za vsako podokno in združuje zaporedne zapise BIFF Selection z enako kodo podokna v vrstnem redu vira
Aktivno vrstico, aktivni stolpec in ActiveAreaIndex si deli vsak zapis v eni skupini, kazalo pa naslavlja celotno združeno vrsto območij in ne enega fizičnega zapisa
Shranjevanje nedotaknjene skupine ohrani njena izvorna telesa zapisov, urejena skupina pa se zapiše v zaporednih blokih z največ 1369 območji z istim združenim aktivnim kazalom v vsakem bloku
Urejanje enega podokna pusti skupine drugih podoken nespremenjene, kopije delovnega lista pa ohranijo celotno stanje izbire podoken
Strukturne spremembe
Vstavljanja ali brisanja celih vrstic in stolpcev preslikajo razvrščene skupine izbire za vsako predstavljeno podokno v obeh pogonih delovnih zvezkov
Območja, ki preživijo, ohranijo svoj vrstni red in istovetnost aktivnega območja; če je aktivno območje odstranjeno, se izbere prvi preživeli naslednik, sledi pa zadnji preživeli predhodnik, ko ne ostane noben naslednik
Če je odstranjeno vsako območje, skupina postane ena celica na meji brisanja, aktivna celica zunaj izbranega preživelega območja pa se vrne na zgornjo levo celico tega območja
Neveljavni klasični zapisi
Napačno oblikovani, nesosednji ali nasprotujoči si klasični zapisi Selection ostanejo neprozorni in niso izpostavljeni skozi tipizirano poizvedovanje območij
Fizični zapis, zavrnjen med preverjanjem zapisov, poroča xlsDiagnosticSelectionRecordInvalid z diagnostično kodo 1304, nasprotje samo na ravni združevanja pa poroča eno diagnostiko skupine pri EOF delovnega lista; shranjevanje ponovi vsako izvorno telo zapisa bajt za bajtom
Velike izbire
Razčlenjevanje in normalizacija območij, strukturna preslikava in izgradnja posnetka uporabljajo enoprehodne graditelje ali geometrijsko rast zmogljivosti, zato velike skupine izbire ostanejo amortizirano linearne
Koordinate pomikanja podokna
TryGetWindowScroll vrne prvo vidno celico za eno logično podokno, ScrollWindow pa jo spremeni, z uporabo koordinat vrstic in stolpcev delovnega lista s številčenjem od 1 v obeh pogonih
Zgornja podokna si delijo vrstico celotnega okna, spodnja podokna vrstico spodnjega podokna, leva podokna stolpec celotnega okna, desna podokna pa stolpec desnega podokna
Manjkajoče podokno vrne False brez ustvarjanja stanja pogleda, z izidi poizvedbe, nastavljenimi na nič; neveljavne koordinate prav tako vrnejo False, preden se spremeni katera koli os
Klasični XLS trajno shrani zgornjo in levo os v Window2 ter spodnjo in desno os v Pane, XLSX pa neodvisno ohrani ustrezne vrednosti topLeftCell od sheetView in pane
Atomarne posodobitve
SelectAreas preveri vsak sklic A1 in aktivno kazalo, preden pridobi transakcijo pisanja delovnega lista
Metoda vrne False za napačno oblikovan ali prazen vnos, neveljavno aktivno kazalo ali podokno, ki ne obstaja v trenutni geometriji razdelitve ali zamrznitve, pri čemer prejšnja izbira ostane nespremenjena
Uspešen klic vrne True in ohrani obstoječe predmete izbire, značilne za pogon, ter zapuščene API-je
Primer za 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);
Združljivost
Klasično preobteženje SelectAreas(const Areas; ActiveAreaIndex) in preobteženje XLSX SelectAreas(const Areas; ActiveAreaIndex; APane) ostajata na voljo nespremenjena
Klasični lastnosti ScrollRow in ScrollColumn ter člani XLSX, šteti od nič, SetPaneScroll, GetPaneScroll, ScrollRow in ScrollCol prav tako ostanejo na voljo nespremenjeni
Skupna fasada izrecno pretvori logična imena podoken, zato klicatelji niso odvisni od številčnih kod podoken, ki jih uporablja kateri koli zapis datoteke