Dokumentacija HotXLS

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