اشیاء OLE و کنترل‌های ActiveX

اشیاء OLE و کنترل‌های ActiveX

شیءهای OLE و کنترل‌های ActiveX

Aspose.Words FOSS برای .NET دسترسی فقط خواندنی به اشیای OLE جاسازی‌شده و کنترل‌های Forms2.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 جاسازی شده‌اند، در معرض می‌گذارد.


کار با کنترل‌های Forms2.0 ActiveX

در جایی که شیء جاسازی‌شده یک کنترل Microsoft Forms2.0 ActiveX باشد (چک‌باکس‌ها، جعبه‌های متن، کاندومباکس‌ها و کنترل‌های تعاملی مشابه به جای اسناد جاسازی‌شده)، OleFormat.OleControl یک OleControl را برمی‌گرداند. ویژگی IsForms2OleControl آن را بررسی کنید، و اگر true بود، آن را به Forms2OleControl (کلاس پایهٔ انتزاعی برای تمام کنترل‌های Forms2.0) تبدیل کنید تا به ویژگی‌های خاص کنترل دسترسی پیدا کنید: Caption، Value، Enabled، Type (یک مقدار Forms2OleControlType — CheckBox، Textbox، ComboBox، OptionButton، ListBox، CommandButton و سایرین)، به‌علاوهٔ ویژگی‌های بصری ForeColor، BackColor، Width و Height. کنترل‌های محفظه‌ای مانند فریم‌ها، کنترل‌های تو در تو خود را از طریق ChildNodes، یک Forms2OleControlCollection، در دسترس می‌گذارند.


نکات و بهترین شیوه‌ها

  • قبل از این‌که فرض کنید دادهٔ شیء توکار به‌صورت محلی موجود است، OleFormat.IsLink را بررسی کنید — اشیاء پیوندی به‌جای تعبیهٔ محتوا، از طریق SourceFullName به یک فایل خارجی ارجاع می‌دهند.
  • برای بازسازی یک نام فایل خروجی معقول هنگام استخراج دسته‌جمعی اشیاء توکار، از SuggestedExtension همراه با Save() استفاده کنید.
  • همیشه قبل از تبدیل به Forms2OleControl، OleControl.IsForms2OleControl را بررسی کنید — هر OleControl یک کنترل Forms2.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 (مثلاً داخل یک فریم)
Forms2OleControlTypeEnum انواع کنترل‌های Forms 2.0

همچنین ببینید:

 فارسی