واجهة برمجة اختيار أجزاء ورقة العمل
تكشف TXLSWorksheet وTXLSXWorksheet عن الأساليب المدركة للأجزاء نفسها لقراءة مناطق الخلايا والنطاقات المحددة أو استبدالها
الأنواع والأساليب المشتركة
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;
يستخدم نص المنطقة مراجع A1 للخلايا أو النطاقات، ويعدّ ActiveAreaIndex فهرسًا يبدأ من الصفر في تسلسل المناطق المعاد أو المقدم
يحافظ تسلسل المناطق على ترتيب المصدر وقد يتضمن نطاقات متراكبة لأن ترتيب التحديد والتراكب جزء من حالة عرض ورقة العمل
ملكية اللقطة
يعيد GetSelectedAreas مصفوفة ديناميكية جديدة تنتمي سلاسلها وطولها إلى المتصل، لذا لا يمكن لتغيير النتيجة أو تحريرها أن يغير ورقة العمل
عندما لا يكون للجزء المطلوب مجموعة تحديد ممثلة، تكون النتيجة فارغة ويكون ActiveAreaIndex يساوي -1
لا تؤدي قراءة جزء غير موجود أبدًا إلى إنشاء جزء أو كائن تحديد أو خلية أو نطاق في المصنف
تجميع سجلات Classic XLS
يحتفظ Classic XLS بمجموعة تحديد منطقية مستقلة لكل جزء ويجمع سجلات Selection المتتالية من BIFF ذات رمز الجزء نفسه بترتيب المصدر
يشارك في الصف النشط والعمود النشط وActiveAreaIndex كل سجل في المجموعة الواحدة، ويعنون الفهرس تسلسل المناطق المجمعة الكامل لا سجلًا فيزيائيًا واحدًا
يحفظ حفظ المجموعة غير الملموسة أجسام سجلاتها الأصلية، بينما تُكتب المجموعة المحرَّرة في مقاطع متتالية من 1369 منطقة على الأكثر مع الفهرس النشط المجمّع نفسه في كل مقطع
يترك تحرير جزء واحد مجموعات الأجزاء الأخرى دون تغيير، وتحتفظ نسخ ورقة العمل بحالة تحديد الأجزاء الكاملة
التعديلات البنيوية
يعيد إدراج صفوف أو أعمدة كاملة أو حذفها تعيين مجموعات التحديد المرتبة لكل جزء ممثل في محركي المصنفات كليهما
تحافظ المناطق الناجية على ترتيبها وعلى هوية المنطقة النشطة؛ وإذا أزيلت المنطقة النشطة، فسيُختار أول خلف ناجٍ، يليه آخر سابق ناجٍ عندما لا يبقى أي خلف
إذا أزيلت كل منطقة، تصبح المجموعة خلية واحدة عند حد الحذف، بينما تعود الخلية النشطة خارج المنطقة الناجية المختارة إلى الخلية العلوية اليسرى لتلك المنطقة
السجلات الكلاسيكية غير الصالحة
تبقى سجلات Selection الكلاسيكية المشوَّهة أو غير المتجاورة أو المتناقضة معتمة ولا تُعرض عبر استعلام المناطق المنمّط
يبلّغ السجل الفيزيائي المرفوض أثناء التحقق من صحة السجلات عن xlsDiagnosticSelectionRecordInvalid برمز التشخيص 1304، بينما يبلّغ التناقض المقتصر على التجميع عن تشخيص مجموعة واحد عند نهاية ملف ورقة العمل؛ وتعيد عملية الحفظ تشغيل كل جسم سجل أصلي بايتًا ببايت
التحديدات الكبيرة
تستخدم معالجة المناطق وتسويتها وإعادة تعيينها البنيوية وبناء اللقطة بناة بمرور واحد أو نموًا هندسيًا للسعة، فتبقى مجموعات التحديد الكبيرة خطية الاستهلاك المطفأ
إحداثيات تمرير الجزء
يعيد TryGetWindowScroll أول خلية مرئية لجزء منطقي واحد ويغيّرها ScrollWindow، باستخدام إحداثيات صفوف وأعمدة ورقة العمل بترقيم يبدأ من الواحد في المحركين كليهما
تتشارك الأجزاء العلوية صف النافذة الكلي، وتتشارك الأجزاء السفلية صف الجزء السفلي، وتتشارك الأجزاء اليسرى عمود النافذة الكلي، وتتشارك الأجزاء اليمنى عمود الجزء الأيمن
يعيد الجزء غير الموجود القيمة False دون إنشاء حالة عرض، مع ضبط مخارج الاستعلام على الصفر؛ كما تعيد الإحداثيات غير الصالحة القيمة False قبل تغيير أي محور
يحفظ Classic XLS المحورين العلوي والأيسر في Window2 والمحورين السفلي والأيمن في Pane، بينما يحتفظ XLSX بقيم topLeftCell المقابلة في sheetView وpane باستقلالية
التحديثات الذرية
يتحقق SelectAreas من صحة كل مرجع A1 والفهرس النشط قبل الحصول على معاملة الكتابة لورقة العمل
تعيد الطريقة القيمة False عند مدخل مشوَّه أو فارغ أو فهرس نشط غير صالح أو جزء غير موجود في هندسة التقسيم أو التجميد الحالية، مع إبقاء التحديد السابق دون تغيير
تعيد الاستدعاء الناجح القيمة True ويحافظ على كائنات التحديد الخاصة بالمحرك الموجودة وعلى الواجهات القديمة
مثال بلغة 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);
التوافق
يبقى الحمل الزائد الكلاسيكي SelectAreas(const Areas; ActiveAreaIndex) والحمل الزائد لـ XLSX SelectAreas(const Areas; ActiveAreaIndex; APane) متاحين دون تغيير
تبقى الخاصيتان الكلاسيكيتان ScrollRow وScrollColumn والأعضاء الصفريو الترقيم في XLSX SetPaneScroll وGetPaneScroll وScrollRow وScrollCol متاحة أيضًا دون تغيير
تحوّل الواجهة الموحدة أسماء الأجزاء المنطقية صراحةً، فلا يعتمد المتصلون على رموز الأجزاء الرقمية التي يستخدمها أي من تنسيقي الملفين