کلاس TXLSXStructuralEditRegistry
TXLSXWorksheet.StructuralEditRegistry بهروزرسانیهای حساس به ارجاع را پس از درج یا حذف سطر و ستون هماهنگ میکند
شرکتکنندگان داخلی همیشه فرمولهای HotXLS، نامها، اعتبارسنجیها، قالبهای شرطی، نظرات، ابرپیوندها، ترسیمها، جداول، اتصالهای پرسوجو، سناریوها، جدولهای داده، فراداده چاپ، محدودههای محافظتشده، خطوط جرقه، جدولهای محوری تایپشده و ارجاعهای افزونه حفظشدهٔ قابل شناسایی را بهروزرسانی میکنند
برنامهها میتوانند شرکتکنندگان مرتب را برای فراداده برگه خودشان ثبت کنند بدون آنکه تراکنش داخلی را جایگزین کنند
اعلامها
type
TXLSXStructuralEdit = record
RowFrom: Integer;
RowDelta: Integer;
ColFrom: Integer;
ColDelta: Integer;
end;
IXLSXStructuralEditParticipant = interface
procedure ApplyStructuralEdit(Worksheet: TXLSXWorksheet;
const Edit: TXLSXStructuralEdit);
end;
TXLSXStructuralEditRegistry = class
procedure RegisterParticipant(
const Participant: IXLSXStructuralEditParticipant);
procedure UnregisterParticipant(
const Participant: IXLSXStructuralEditParticipant);
procedure Clear;
property Count: Integer;
end;
فیلدهای ویرایش
| RowFrom | اولین سطر مبتنی بر یک متأثر، یا صفر هنگامی که سطرها تغییر نکردهاند |
| RowDelta | تعداد سطر درجشده مثبت یا تعداد سطر حذفشده منفی |
| ColFrom | اولین ستون مبتنی بر یک متأثر، یا صفر هنگامی که ستونها تغییر نکردهاند |
| ColDelta | تعداد ستون درجشده مثبت یا تعداد ستون حذفشده منفی |
قواعد شرکتکننده
- شرکتکنندگان به ترتیب ثبت پس از همه بهروزرسانیهای ارجاع داخلی اجرا میشوند
- ثبت مجدد همان رابط بیش از یک بار اثری ندارد
Countفقط شرکتکنندگان برنامه را گزارش میدهد زیرا بهروزرسانیهای داخلی همیشه فعال هستند- شرکتکنندگان نباید رجیستری را تغییر دهند یا ویرایش ساختاری دیگری را از داخل فراخوانی شروع کنند
مثال
type
TMetadataUpdater = class(TInterfacedObject,
IXLSXStructuralEditParticipant)
public
procedure ApplyStructuralEdit(Worksheet: TXLSXWorksheet;
const Edit: TXLSXStructuralEdit);
end;
Updater := TMetadataUpdater.Create;
Sheet.StructuralEditRegistry.RegisterParticipant(Updater);
Sheet.InsertRows(4, 2);