الأسلوب CreateLoadedCellCursor
ينشئ مؤشر سحب فوق الخلايا المخزنة في مصنف Classic XLS محمّل، مع خيار لتضمين الخلايا الفارغة المنمّطة بشكل مستقل
البنية
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
ترتيب التجول وتكلفته
يزور المؤشر أوراق العمل بترتيبها في المجموعة، ثم الخلايا بترتيب تصاعدي حسب الصف والعمود
SheetIndexو Rowو Col إحداثيات عامة تبدأ من الواحد
يتبع التجول فروع التخزين المتناثر الكلاسيكية المخصصة مباشرة، فتبقى حالة المؤشر ثابتة ولا يخصص مصفوفات بحجم حدود صفوف أو أعمدة ورقة العمل
يتخطى التحميل الزائد بلا معاملات الخلايا الفارغة ويحافظ على عقد التجول الحالي للقيم والصيغ
مرر True لتضمين الخلايا الفارغة المخزنة التي يختلف تنسيق XF الخاص بها عن تنسيق الصف أو العمود أو ورقة العمل الموروث
لا يولّد التنسيق الموروث وحده إحداثية فارغة ولا يجسدها
حقول اللقطة
| الحقل | المعنى |
|---|---|
SheetIndex / SheetName | هوية ورقة العمل المالكة لحظة الالتقاط |
Row / Col | إحداثيات الخلية بدءًا من الواحد |
StyleIndex | فهرس النمط XF الكلاسيكي |
Kind (TXLSLoadedCellKind) | xlckTextأو xlckNumberأو xlckDateTimeأو xlckBooleanأو xlckFormulaأو xlckBlank |
Value | قيمة Variant مملوكة التُقطت للخلية الحالية |
Formula | نص الصيغة لخلايا الصيغ، أو سلسلة فارغة غير ذلك |
السلاسل وقيم Variant في TXLSLoadedCellSnapshot قيم مملوكة ولا تكشف كائنات الخلايا الداخلية
في خلايا الصيغ، تتبع Value دلالات الوصول إلى القيم المعتادة للمصنف الكلاسيكي، بما في ذلك الحساب عند اللزوم
بالنسبة إلى xlckBlank، تكون Value تساوي Unassignedو Formula فارغة ويحدد StyleIndex تنسيق XF المخزن للخلية
الحالة والإبطال
State تبقى TXLSLoadedCellCursorStateتساوي xlccBeforeFirst حتى أول استدعاء ناجح لـ MoveNext، وتساوي xlccActive ما دامت Current متاحة، وتساوي xlccEof بعد اكتمال التجول
تؤدي قراءة Current قبل الخلية الأولى أو بعد نهاية الملف إلى رفع EXLSLoadedCellCursorState
إنشاء خلايا مخزنة أو حذفها، أو إضافة أوراق عمل أو حذفها أو نقلها، أو استبدال نموذج المصنف يبطل المؤشر
يرفع استدعاء MoveNext أو Current التالي عندها الاستثناء 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;