HotXLS-dokumentasjon

API for valg av ruter i regneark

TXLSWorksheet og TXLSXWorksheet eksponerer de samme rutebevisste metodene for å lese eller erstatte utvalgte celle- og celleintervallområder

Felles typer og metoder

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;

Områdetekst bruker A1-celle- eller områdereferanser, og ActiveAreaIndex er en nullbasert indeks inn i den returnerte eller oppgitte områdesekvensen

Områdesekvensen beholder kildeordenen og kan inneholde overlappende områder, fordi utvalgsorden og overlapping er en del av regnearkets visningstilstand

Eierskap til øyeblikksbildet

GetSelectedAreas returnerer en ny dynamisk matrise hvis strenger og lengde tilhører den som kaller, slik at endring eller frigjøring av resultatet ikke kan endre regnearket

Når den etterspurte ruten ikke har noen representert utvalgsgruppe, er resultatet tomt, og ActiveAreaIndex er -1

Lesing av en manglende rute oppretter aldri en rute, et utvalgsobjekt, en celle eller et område i arbeidsboken

Aggregering av Classic XLS-poster

Classic XLS beholder en uavhengig logisk utvalgsgruppe for hver rute og aggregerer påfølgende BIFF Selection-poster med samme rutekode i kildeorden

Den aktive raden, den aktive kolonnen og ActiveAreaIndex deles av hver post i én gruppe, og indeksen adresserer hele den aggregerte områdesekvensen og ikke én fysisk post

Lagring av en urørt gruppe bevarer de opprinnelige postlegemene, mens en redigert gruppe skrives i påfølgende blokker på høyst 1369 områder med samme aggregerte aktive indeks i hver blokk

Redigering av én rute lar de andre rutenes grupper være uendret, og regnearkskopier beholder hele rutens utvalgstilstand

Strukturelle endringer

Innsettinger eller slettinger av hele rader og kolonner omformer de ordnede utvalgsgruppene for hver representerte rute i begge arbeidsbokmotorene

Områder som overlever, beholder rekkefølgen og det aktive områdets identitet; hvis det aktive området fjernes, velges den første overlevende etterfølgeren, fulgt av den siste overlevende forgjengeren når ingen etterfølger gjenstår

Hvis hvert område fjernes, blir gruppen én celle ved slettegrensen, mens en aktiv celle utenfor det valgte overlevende området faller tilbake til områdets øverste venstre celle

Ugyldige klassiske poster

Feilformede, usammenhengende eller motsigelsesfulle Classic Selection-poster forblir ugjennomsiktige og eksponeres ikke gjennom den typede områdeforespørselen

En fysisk post som avslås under postvalidering, rapporterer xlsDiagnosticSelectionRecordInvalid med diagnostikkoden 1304, mens en motsigelse bare i aggregeringen rapporterer én gruppediagnostikk ved regnearkets EOF; lagring spiller av hvert opprinnelige postlegeme byte for byte

Store utvalg

Områdeanalyse og -normalisering, strukturell omforming og øyeblikksbildekonstruksjon bruker engangsbyggere eller geometrisk kapasitetsvekst, slik at store utvalgsgrupper forblir amortisert lineære

Rute-rullekoordinater

TryGetWindowScroll returnerer den første synlige cellen for én logisk rute, og ScrollWindow endrer den, med énbaserte regnearkrad- og kolonnekoordinater i begge motorene

Øvre ruter deler hele vinduets rad, nedre ruter deler nedre ruterad, venstre ruter deler hele vinduets kolonne, og høyre ruter deler høyre ruterkolonne

En manglende rute returnerer False uten å opprette visningstilstand, med spørringsutdata satt til null; ugyldige koordinater returnerer også False før noen akse endres

Classic XLS lagrer den øvre og venstre aksen i Window2 og den nedre og høyre aksen i Pane, mens XLSX beholder de tilsvarende sheetView- og pane-topLeftCell-verdiene uavhengig

Atomære oppdateringer

SelectAreas validerer hver A1-referanse og den aktive indeksen før regnearkets skrivetransaksjon hentes

Metoden returnerer False for feilformet eller tomt inndata, en ugyldig aktiv indeks eller en rute som ikke finnes i gjeldende delings- eller innfrysingsgeometri, med det tidligere utvalget uendret

Et vellykket kall returnerer True og bevarer de eksisterende motorspesifikke utvalgsobjektene og de eldre API-ene

Delphi-eksempel

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

Kompatibilitet

Den klassiske SelectAreas(const Areas; ActiveAreaIndex)-overbelastningen og XLSX-overbelastningen SelectAreas(const Areas; ActiveAreaIndex; APane) forblir tilgjengelige uendret

De klassiske ScrollRow- og ScrollColumn-egenskapene og XLSX-ens nullbaserte SetPaneScroll-, GetPaneScroll-, ScrollRow- og ScrollCol-medlemmer forblir også tilgjengelige uendret

Den felles fasaden konverterer eksplisitt logiske rutenavn, slik at de som kaller, ikke avhenger av de numeriske rutkodene som brukes av noe filformat