Çalışma sayfası bölme seçimi API'si
TXLSWorksheet ve TXLSXWorksheet, seçili hücre ve aralık alanlarını okumak veya değiştirmek için aynı bölme duyarlı yöntemleri sunar
Paylaşılan türler ve yöntemler
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;
Alan metni A1 hücre veya aralık başvuruları kullanır ve ActiveAreaIndex, döndürülen veya sağlanan alan dizisinde sıfır tabanlı bir dizindir
Alan dizisi kaynak sırasını korur ve çakışan aralıklar içerebilir; çünkü seçim sırası ve çakışma, çalışma sayfası görünüm durumunun bir parçasıdır
Anlık görüntü sahipliği
GetSelectedAreas, dizeleri ve uzunluğu çağırana ait olan yeni bir dinamik dizi döndürür; böylece sonucu değiştirmek veya serbest bırakmak çalışma sayfasını değiştiremez
İstenen bölme için temsil edilen bir seçim grubu yoksa sonuç boştur ve ActiveAreaIndex değeri -1'dir
Eksik bir bölmeyi okumak asla çalışma kitabında bölme, seçim nesnesi, hücre veya aralık oluşturmaz
Klasik XLS kayıt birleştirmesi
Klasik XLS her bölme için bağımsız bir mantıksal seçim grubu tutar ve aynı bölme koduna sahip art arda gelen BIFF Selection kayıtlarını kaynak sırasına göre birleştirir
Etkin satır, etkin sütun ve ActiveAreaIndex bir gruptaki her kayıt tarafından paylaşılır ve dizin, tek bir fiziksel kayıt yerine tüm birleşik alan dizisini adresler
Dokunulmamış bir grubun kaydedilmesi özgün kayıt gövdelerini korur; düzenlenmiş bir grup ise her parçada aynı birleşik etkin dizinle, en fazla 1369 alanlık art arda gelen parçalar hâlinde yazılır
Tek bir bölmeyi düzenlemek diğer bölme gruplarını değiştirmez ve çalışma sayfası kopyaları tüm bölme seçim durumunu korur
Yapısal düzenlemeler
Tüm satır ve tüm sütun eklemeleri veya silmeleri, her iki çalışma kitabı motorunda da temsil edilen her bölme için sıralı seçim gruplarını yeniden eşler
Hayatta kalan alanlar sıralarını ve etkin alanın kimliğini korur; etkin alan kaldırılırsa ilk hayatta kalan ardıl seçilir, ardıl kalmadığında ise son hayatta kalan öncül izler
Her alan kaldırılırsa grup, silme sınırındaki tek bir hücreye dönüşür; seçilen hayatta kalan alanın dışında kalan bir etkin hücre ise o alanın sol üst hücresine geri düşer
Geçersiz klasik kayıtlar
Hatalı biçimlendirilmiş, bitişik olmayan veya çelişen Klasik Selection kayıtları opak kalır ve türlü alan sorgusu üzerinden açığa çıkarılmaz
Kayıt doğrulaması sırasında reddedilen bir fiziksel kayıt, 1304 tanılama koduyla xlsDiagnosticSelectionRecordInvalid bildirir; yalnızca birleşime özgü çelişki ise çalışma sayfası EOF'unda bir grup tanılaması bildirir; kaydetme, her özgün kayıt gövdesini bayt bayt yeniden yazar
Büyük seçimler
Alan ayrıştırma, normalleştirme, yapısal yeniden eşleme ve anlık görüntü oluşturma tek geçişli oluşturucular veya geometrik kapasite büyümesi kullanır; böylece büyük seçim grupları amortize edilmiş doğrusal kalır
Bölme kaydırma koordinatları
TryGetWindowScroll tek bir mantıksal bölme için ilk görünür hücreyi döndürür ve ScrollWindow bunu değiştirir; her iki motorda da 1 tabanlı çalışma sayfası satır ve sütun koordinatları kullanılır
Üst bölmeler genel pencere satırını, alt bölmeler alt bölme satırını, sol bölmeler genel pencere sütununu ve sağ bölmeler sağ bölme sütununu paylaşır
Eksik bir bölme, görünüm durumu oluşturmadan ve sorgu çıktılarını sıfıra ayarlayarak False döndürür; geçersiz koordinatlar da herhangi bir eksen değiştirilmeden False döndürür
Klasik XLS üst ve sol eksenleri Window2 içinde, alt ve sağ eksenleri Pane kaydında kalıcı kılar; XLSX ise karşılık gelen sheetView ve pane topLeftCell değerlerini bağımsız olarak korur
Atomik güncellemeler
SelectAreas, çalışma sayfası yazma işlemini edinmeden önce her A1 başvurusunu ve etkin dizini doğrular
Yöntem, hatalı biçimlendirilmiş veya boş giriş, geçersiz etkin dizin ya da geçerli bölünmüş veya dondurulmuş geometride bulunmayan bir bölme için False döndürür; önceki seçim değiştirilmeden bırakılır
Başarılı bir çağrı True döndürür ve mevcut motora özgü seçim nesnelerini ve eski API'leri korur
Delphi örneği
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);
Uyumluluk
Klasik SelectAreas(const Areas; ActiveAreaIndex) aşırı yüklemesi ve XLSX SelectAreas(const Areas; ActiveAreaIndex; APane) aşırı yüklemesi değişmeden kullanılabilir durumda kalır
Klasik ScrollRow ve ScrollColumn özellikleri ile XLSX sıfır tabanlı SetPaneScroll, GetPaneScroll, ScrollRow ve ScrollCol üyeleri de değişmeden kullanılabilir durumda kalır
Paylaşılan cephe, mantıksal bölme adlarını açıkça dönüştürür; böylece çağıranlar, iki dosya biçiminin kullandığı sayısal bölme kodlarına bağlı olmaz