Dokumentacija HotXLS

API odabira okvira radnog lista

TXLSWorksheet i TXLSXWorksheet izlažu iste metode svjesne okvira za čitanje ili zamjenu odabranih područja ćelija i raspona

Zajednički tipovi i metode

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;

Tekst područja rabi reference ćelija ili raspona A1, a ActiveAreaIndex je indeks s bazom nula u vraćenom ili pruženom nizu područja

Niz područja zadržava izvorni redoslijed i može sadržavati preklapajuće raspone jer su redoslijed odabira i preklapanje dio stanja prikaza radnog lista

Vlasništvo nad snimkom

GetSelectedAreas vraća novo dinamičko polje čiji nizovi i duljina pripadaju pozivatelju, pa promjena ili otpuštanje rezultata ne može izmijeniti radni list

Kada zatraženi okvir nema nijednu prikazanu skupinu odabira, rezultat je prazan, a ActiveAreaIndex je -1

Čitanje nepostojećeg okvira nikada ne stvara okvir, objekt odabira, ćeliju ni raspon u radnoj knjizi

Agregacija zapisa klasičnog XLS-a

Klasični XLS čuva neovisnu logičku skupinu odabira za svaki okvir i agregira uzastopne BIFF zapise Selection istim kôdom okvira u redoslijedu izvora

Aktivni redak, aktivni stupac i ActiveAreaIndex dijele svi zapisi u jednoj skupini, a indeks adresira potpuni agregirani niz područja, a ne jedan fizički zapis

Spremanje nedirnute skupine čuva njezina izvorna tijela zapisa, dok se uređena skupina zapisuje u uzastopnim blokovima od najviše 1369 područja s istim agregiranim aktivnim indeksom u svakom bloku

Uređivanje jednog okvira ostavlja skupine ostalih okvira nepromijenjenima, a kopije radnog lista zadržavaju potpuno stanje odabira okvira

Strukturalne izmjene

Umetanja ili brisanja cijelih redaka i stupaca premapiraju poredane skupine odabira za svaki prikazani okvir u oba pogona radnih knjiga

Područja koja prežive zadržavaju svoj redoslijed i identitet aktivnog područja; ako se aktivno područje ukloni, bira se prvi preživjeli sljedbenik, a potom posljednji preživjeli prethodnik kad ne preostane nijedan sljedbenik

Ako se ukloni svako područje, skupina postaje jedna ćelija na granici brisanja, dok aktivna ćelija izvan odabranog preživjelog područja pada na gornju lijevu ćeliju tog područja

Nevažeći klasični zapisi

Deformirani, nesusjedni ili proturječni klasični zapisi Selection ostaju neprozirni i ne izlažu se kroz tipizirani upit područja

Fizički zapis odbijen tijekom provjere zapisa izvještava xlsDiagnosticSelectionRecordInvalid s dijagnostičkim kôdom 1304, dok proturječnost samo na razini agregacije izvještava jednu dijagnostiku skupine pri EOF-u radnog lista; spremanje ponavlja svako izvorno tijelo zapisa bajt po bajt

Veliki odabiri

Raščlamba i normalizacija područja, strukturno premapiranje i izgradnja snimka rabiju jednoiteracijske graditelje ili geometrijski rast kapaciteta pa velike skupine odabira ostaju amortizirano linearne

Koordinate klizanja okvira

TryGetWindowScroll vraća prvu vidljivu ćeliju za jedan logički okvir, a ScrollWindow je mijenja, rabeći koordinate retka i stupca radnog lista koje broje od jedan u oba pogona

Gornji okviri dijele redak cjelokupnog prozora, donji okviri dijele redak donjeg okvira, lijevi okviri dijele stupac cjelokupnog prozora, a desni okviri dijele stupac desnog okvira

Nepostojeći okvir vraća False bez stvaranja stanja prikaza, s izlazima upita postavljenima na nulu; nevažeće koordinate također vraćaju False prije nego što se ijedna os promijeni

Klasični XLS trajno pohranjuje gornju i lijevu os u Window2 te donju i desnu os u Pane, dok XLSX neovisno zadržava odgovarajuće vrijednosti topLeftCell od sheetView i pane

Atomarna ažuriranja

SelectAreas provjerava svaku referencu A1 i aktivni indeks prije nego što stekne transakciju zapisa radnog lista

Metoda vraća False za deformiran ili prazan unos, nevažeći aktivni indeks ili okvir koji ne postoji u trenutačnoj geometriji razdjeljivanja ili zamrzavanja, s prethodnim odabirom nepromijenjenim

Uspješan poziv vraća True i čuva postojeće objekte odabira specifične za pogon i zastarjele API-je

Primjer 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);

Kompatibilnost

Klasično preopterećenje SelectAreas(const Areas; ActiveAreaIndex) i preopterećenje XLSX-a SelectAreas(const Areas; ActiveAreaIndex; APane) ostaju dostupni nepromijenjeni

Klasična svojstva ScrollRow i ScrollColumn te XLSX članovi s bazom nula SetPaneScroll, GetPaneScroll, ScrollRow i ScrollCol također ostaju dostupni nepromijenjeni

Zajednička fasada izričito pretvara logička imena okvira pa pozivatelji ne ovise o brojčanim kôdovima okvira koje rabi bilo koji format datoteke