Obiekty OLE i kontrolki ActiveX

Obiekty OLE i kontrolki ActiveX

Obiekty OLE i kontrolki ActiveX

Aspose.Words FOSS dla .NET zapewnia dostęp tylko do odczytu do osadzonych obiektów OLE i kontrolek Forms 2.0 ActiveX poprzez punkt wejścia OleFormat oraz powiązane klasy w Aspose.Words.Drawing i Aspose.Words.Drawing.Ole.


Uzyskiwanie dostępu do danych osadzonego obiektu OLE

OleFormat jest udostępniane przez osadzony Shape i zapewnia dostęp do surowych danych oraz metadanych osadzonego obiektu. SuggestedFileName i SuggestedExtension opisują, w jakiej formie osadzony obiekt zostałby zapisany, ProgId identyfikuje aplikację serwera OLE, która go utworzyła, a IsLink rozróżnia obiekt powiązany (SourceFullName/SourceItem wskazują na zewnętrzne źródło) od w pełni osadzonego. GetOleEntry(oleEntryName) odczytuje określony nazwany strumień ze struktury pliku złożonego OLE, GetRawData() zwraca pełne surowe dane obiektu, a Save(fileName) / Save(stream) zapisują natywne dane osadzonego obiektu na dysk lub do strumienia — przydatne do wyodrębnienia oryginalnego osadzonego pliku (na przykład osadzonego arkusza kalkulacyjnego lub prezentacji) bez otwierania go w natywnej aplikacji. OlePackage, osiągane poprzez OleFormat.OlePackage, udostępnia FileName i DisplayName dla obiektów osadzonych jako pakiet OLE.


Praca z kontrolkami Forms 2.0 ActiveX

Gdy osadzony obiekt jest kontrolką Microsoft Forms 2.0 ActiveX (pola wyboru, pola tekstowe, listy rozwijane i podobne interaktywne kontrolki, a nie osadzone dokumenty), OleFormat.OleControl zwraca OleControl. Sprawdź jej właściwość IsForms2OleControl, a jeśli true, rzutuj ją na Forms2OleControl (abstrakcyjną klasę bazową dla wszystkich kontrolek Forms 2.0), aby uzyskać właściwości specyficzne dla kontrolki: Caption, Value, Enabled, Type (wartość Forms2OleControlType — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton i inne), oraz właściwości wizualne ForeColor, BackColor, Width i Height. Kontrolki kontenerowe, takie jak ramki, udostępniają swoje zagnieżdżone kontrolki poprzez ChildNodes, a Forms2OleControlCollection.


Wskazówki i najlepsze praktyki

  • Sprawdź OleFormat.IsLink przed założeniem, że dane osadzonego obiektu są dostępne lokalnie — obiekty powiązane odwołują się do zewnętrznego pliku poprzez SourceFullName zamiast osadzać ich zawartość.
  • Użyj SuggestedExtension razem z Save(), aby odtworzyć sensowną nazwę pliku wyjściowego przy masowym wyodrębnianiu osadzonych obiektów.
  • Zawsze sprawdzaj OleControl.IsForms2OleControl przed rzutowaniem na Forms2OleControl — nie każdy OleControl jest kontrolką Forms 2.0.
  • Forms2OleControlCollection.Count oraz enumeracja za pomocą GetEnumerator() umożliwiają przechodzenie po zagnieżdżonych kontrolkach wewnątrz ramki lub kontrolki kontenera wielostronicowego.

Typowe problemy

ProblemPrzyczynaRozwiązanie
GetRawData() zwraca nieoczekiwane/puste daneObiekt jest odnośnikiem (IsLink == true), a nie osadzonymSprawdź najpierw IsLink; rozwiąż SourceFullName dla obiektów powiązanych
InvalidCastException rzutuje OleControl na Forms2OleControlKontrolka nie jest kontrolką Forms 2.0Sprawdź IsForms2OleControl przed rzutowaniem
GetOleEntry() zwraca null dla strumienia o nazwieNazwa strumienia nie istnieje w strukturze pliku złożonego tego obiektuWymień rzeczywiste nazwy wpisów zamiast zakładać stałą nazwę
Nie znaleziono zagnieżdżonych kontrolek wewnątrz ramkiSprawdzono tylko poziom najwyższy OleControl, a nie ChildNodesRekurencyjnie przechodź do Forms2OleControl.ChildNodes w celu uzyskania kontrolek kontenera

FAQ

Jak wyodrębnić osadzony obiekt Excel lub PowerPoint z dokumentu Word?

Uzyskaj dostęp do OleFormat kształtu, a następnie wywołaj Save(fileName) lub GetRawData(), aby pobrać natywne bajty osadzonego obiektu; użyj SuggestedExtension, aby odpowiednio nazwać plik wyjściowy.

Jaka jest różnica między osadzonym obiektem OLE a kontrolką Forms 2.0?

Osadzony obiekt OLE (dostępny bezpośrednio przez OleFormat) to zazwyczaj inny dokument (arkusz kalkulacyjny, prezentacja); kontrolka Forms 2.0 (OleFormat.OleControl → Forms2OleControl) to interaktywny element interfejsu, taki jak pole wyboru lub pole tekstowe.

Jak sprawdzić, czy obiekt OLE jest połączony, a nie osadzony?

Sprawdź OleFormat.IsLink — gdy true, SourceFullName i SourceItem opisują źródło zewnętrzne zamiast obiektu zawierającego własne dane.

Czy mogę odczytać etykietę lub wartość kontrolki pola wyboru?

Tak — rzutuj OleControl na Forms2OleControl (po potwierdzeniu IsForms2OleControl) i odczytaj Caption oraz Value.


API Reference Podsumowanie

Klasa / MetodaOpis
OleFormatPunkt wejścia dla danych i metadanych osadzonego obiektu OLE
OleFormat.GetRawData()Pobierz surowe bajty osadzonego obiektu
OleFormat.Save()Zapisz natywne dane osadzonego obiektu do pliku lub strumienia
OlePackageNazwa pliku/nazwa wyświetlana dla obiektu OLE Package
OleControlPodstawowa reprezentacja osadzonej kontrolki ActiveX
Forms2OleControlKontrolka Microsoft Forms 2.0 (pole wyboru, pole tekstowe, pole kombi, itp.)
Forms2OleControlCollectionZbiór potomnych węzłów Forms2OleControl (np. wewnątrz ramki)
Forms2OleControlTypeWyliczenie rodzajów kontrolek Forms 2.0

Zobacz także

 Polski