كائنات OLE وعناصر التحكم ActiveX

كائنات 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

انظر أيضاً

 العربية