كائنات OLE وعناصر التحكم ActiveX
كائنات OLE وعناصر التحكم ActiveX
Aspose.Words FOSS لـ .NET يوفر إمكانية الوصول للقراءة إلى كائنات OLE المدمجة وعناصر التحكم Forms 2.0 ActiveX عبر نقطة الدخول OleFormat وفصوله المرتبطة في Aspose.Words.Drawing وAspose.Words.Drawing.Ole.
الوصول إلى بيانات كائن OLE المدمج
OleFormat يتم كشفه بواسطة Shape مدمج ويتيح الوصول إلى البيانات الخام والبيانات الوصفية للكائن المدمج. يصف SuggestedFileName وSuggestedExtension ما سيُحفظ به الكائن المدمج، ويحدد ProgId تطبيق خادم OLE الذي أنشأه، وIsLink يميز الكائن المرتبط (SourceFullName/SourceItem يشيران إلى المصدر الخارجي) عن الكائن المدمج بالكامل. يقرأ GetOleEntry(oleEntryName) تدفقًا مسمىً محددًا من بنية ملف OLE المركب، ويُعيد GetRawData() البيانات الخام الكاملة للكائن، وSave(fileName) / Save(stream) يكتبان بيانات الكائن الأصلية إلى قرص أو تدفق — مفيد لاستخراج الملف المدمج الأصلي (مثلاً جدول بيانات أو عرض تقديمي مدمج) دون فتحه في تطبيقه الأصلي. OlePackage، الذي يتم الوصول إليه عبر OleFormat.OlePackage، يكشف عن FileName وDisplayName للكائنات المدمجة كحزمة OLE.
العمل مع عناصر التحكم ActiveX في Forms 2.0
عندما يكون الكائن المدمج عنصر تحكم Microsoft Forms 2.0 ActiveX (مربعات اختيار، مربعات نص، صناديق مركبة، وعناصر تحكم تفاعلية مماثلة بدلاً من المستندات المدمجة)، يُعيد OleFormat.OleControl OleControl. تحقق من خاصية IsForms2OleControl الخاصة به، وإذا كان true، قم بتحويله إلى Forms2OleControl (الفئة الأساسية المجردة لجميع عناصر تحكم Forms 2.0) للوصول إلى خصائص العنصر المحددة: Caption، Value، Enabled، Type (قيمة Forms2OleControlType — CheckBox، Textbox، ComboBox، OptionButton، ListBox، CommandButton، وغيرها)، بالإضافة إلى الخصائص البصرية ForeColor، BackColor، Width، وHeight. تُظهر عناصر التحكم الحاوية مثل الإطارات عناصرها المتداخلة عبر ChildNodes، وهو Forms2OleControlCollection.
نصائح وأفضل الممارسات
- تحقق من
OleFormat.IsLinkقبل الافتراض بأن بيانات الكائن المدمج موجودة محليًا — الكائنات المرتبطة تشير إلى ملف خارجي عبرSourceFullNameبدلاً من تضمين محتواها. - استخدم
SuggestedExtensionمعSave()لإعادة بناء اسم ملف خروج معقول عند استخراج الكائنات المدمجة بشكل جماعي. - تحقق دائمًا من
OleControl.IsForms2OleControlقبل التحويل إلىForms2OleControl— ليس كلOleControlتحكمًا في Forms 2.0. Forms2OleControlCollection.Countوالتعداد عبرGetEnumerator()يتيحان لك التنقل عبر التحكمات المتداخلة داخل إطار أو عنصر تحكم حاوية متعدد الصفحات.
المشكلات الشائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
GetRawData() يُعيد بيانات غير متوقعة/فارغة | الكائن هو رابط (IsLink == true)، وليس مضمّنًا | تحقق من IsLink أولاً؛ حل SourceFullName للكائنات المرتبطة |
InvalidCastException يحول OleControl إلى Forms2OleControl | التحكم ليس عنصرًا من Forms 2.0 | تحقق من IsForms2OleControl قبل التحويل |
GetOleEntry() تُعيد null لتدفق مسمى | اسم التدفق غير موجود في بنية الملف المركب لهذا الكائن | عدّ أسماء الإدخالات الفعلية بدلاً من الافتراض بوجود اسم ثابت |
| لم يتم العثور على عناصر التحكم المتداخلة داخل الإطار | تم التحقق فقط من المستوى الأعلى OleControl، وليس ChildNodes | تكرار داخل Forms2OleControl.ChildNodes لعناصر التحكم الحاوية |
FAQ
كيف يمكنني استخراج كائن Excel أو PowerPoint مدمج من مستند Word؟
الوصول إلى OleFormat الخاص بالشكل، ثم استدعاء Save(fileName) أو GetRawData() لاسترجاع بايتات الكائن المدمج الأصلية؛ استخدم SuggestedExtension لتسمية ملف الخرج بشكل مناسب.
ما الفرق بين كائن OLE مضمّن وعنصر تحكم Forms 2.0؟
كائن OLE المضمّن (يُستَخدم عبر OleFormat مباشرةً) عادةً ما يكون مستندًا آخر (جدول بيانات، عرض تقديمي)؛ عنصر تحكم Forms 2.0 (OleFormat.OleControl → Forms2OleControl) هو عنصر واجهة مستخدم تفاعلي مثل خانة اختيار أو مربع نص.
كيف يمكنني معرفة ما إذا كان كائن OLE مرتبطًا بدلاً من مضمّنًا؟
تحقق من OleFormat.IsLink — عندما true، SourceFullName وSourceItem تصف المصدر الخارجي بدلاً من أن يحمل الكائن بياناته الخاصة.
هل يمكنني قراءة التسمية أو القيمة لعنصر تحكم خانة الاختيار؟
نعم — حوِّل OleControl إلى Forms2OleControl (بعد التأكد من IsForms2OleControl) واقرأ Caption وValue.
API Reference ملخص
| الفئة / الطريقة | وصف |
|---|---|
OleFormat | نقطة الدخول لبيانات الكائن OLE المدمج والبيانات الوصفية |
OleFormat.GetRawData() | استرجاع بايتات الكائن المضمّن الخام |
OleFormat.Save() | احفظ البيانات الأصلية للكائن المضمّن إلى ملف أو تدفق |
OlePackage | اسم الملف/اسم العرض لكائن حزمة OLE |
OleControl | التمثيل الأساسي لعنصر تحكم ActiveX المضمن |
Forms2OleControl | تحكم Microsoft Forms 2.0 (checkbox, textbox, combo box, إلخ) |
Forms2OleControlCollection | مجموعة من عقد Forms2OleControl الفرعية (مثلاً داخل إطار) |
Forms2OleControlType | تعداد أنواع تحكم Forms 2.0 |