الأسلوب CreateLoadedCellCursor
ينشئ مؤشر سحب فوق الخلايا المخزنة في مصنف XLSX محمّل، مع خيار لتضمين الخلايا الفارغة المنمّطة بشكل مستقل
البنية
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
ترتيب التجول وتكلفته
يزور المؤشر أوراق العمل بترتيبها في المجموعة، ثم الخلايا بترتيب تصاعدي حسب الصف والعمود
تشكل SheetIndex وRow وCol إحداثيات عامة تبدأ من الواحد
تُقرأ أوراق العمل المجسدة مباشرة من كتلها المتناثرة المخصصة البالغ حجمها 256 صفًا دون بناء قائمة خلايا مرتبة
تُقرأ أوراق العمل المعبأة مباشرة عبر مكرر التخزين المعبأ وتبقى معبأة بعد التجول
حالة المؤشر ثابتة لا تتغير مع حجم المصنف ولا تخصص مصفوفات بحجم حدود صفوف أو أعمدة XLSX
يتخطى التحميل الزائد بلا معاملات الخلايا الفارغة المنمّطة فقط والعناصر النائبة Empty والعناصر النائبة Null المخزنة
مرر True لتضمين الإحداثيات الفارغة المنمّطة بشكل مستقل من التخزين المجسد أو المعبأ دون تجسيد الخلايا المعبأة
تبقى العناصر النائبة Empty وNull غير المنمّطة مستثناة في كلا الوضعين
حقول اللقطة
| الحقل | المعنى |
|---|---|
SheetIndex / SheetName | هوية ورقة العمل المالكة لحظة الالتقاط |
Row / Col | إحداثيات الخلية بدءًا من الواحد |
StyleIndex | فهرس تنسيق خلية XLSX الملتقط من التخزين المجسد أو المعبأ |
Kind | xlckText أو xlckNumber أو xlckDateTime أو xlckBoolean أو xlckFormula أو xlckError أو xlckBlank |
Value | قيمة Variant مملوكة التُقطت للخلية الحالية |
Formula | نص الصيغة لخلايا الصيغ، أو سلسلة فارغة غير ذلك |
السلاسل وقيم Variant في TXLSLoadedCellSnapshot قيم مملوكة ولا تكشف مؤشرات الخلايا الداخلية أو مؤشرات التخزين المعبأ
في خلايا صيغ XLSX، تمثل Value القيمة المخزنة مؤقتًا حاليًا ولا يعيد التجول حساب الصيغة
بالنسبة إلى xlckBlank، تكون Value تساوي Unassigned وFormula فارغة ويحدد StyleIndex تنسيق الخلية المخزن
الحالة والإبطال والعمر
تبقى State تساوي xlccBeforeFirst حتى أول استدعاء ناجح لـ MoveNext، وتساوي xlccActive ما دامت Current متاحة، وتساوي xlccEof بعد اكتمال التجول
تؤدي قراءة Current قبل الخلية الأولى أو بعد نهاية الملف إلى رفع EXLSLoadedCellCursorState
إنشاء خلايا مخزنة أو حذفها، أو تجسيد التخزين المعبأ، أو إعادة بناء الفهارس صراحة، أو إضافة أوراق عمل أو حذفها أو نقلها أو تفريغها يبطل المؤشر
يرفع استدعاء MoveNext أو Current التالي عندها الاستثناء EXLSLoadedCellCursorInvalidated
لا يؤدي تغيير قيمة خلية قائمة أو صيغتها أو تنسيقها إلى إبطال المؤشر، وتبقى اللقطة الملتقطة سابقًا كما هي
يؤدي تحرير المصنف قبل المؤشر أيضًا إلى رفع EXLSLoadedCellCursorInvalidated بدل ترك المؤشر بمؤشر معلق إلى مصنف
التحقق من التوليد كشف فاشل سريعًا ولا يجعل التعديل المتوازي والتجول آمنين على مؤشرات الترابط
مثال
Cursor := Workbook.CreateLoadedCellCursor;
while Cursor.MoveNext do
begin
Cell := Cursor.Current;
Memo1.Lines.Add(Format('%s!R%dC%d = %s',
[Cell.SheetName, Cell.Row, Cell.Col, VarToStr(Cell.Value)]));
end;