Sdílet prostřednictvím


TextPattern a vložené objekty – přehled

Poznámka:

Tato dokumentace je určená pro vývojáře rozhraní .NET Framework, kteří chtějí používat spravované třídy model UI Automation definované v System.Windows.Automation oboru názvů. Nejnovější informace o model UI Automation najdete v tématu Rozhraní API služby Windows Automation: model UI Automation.

Tento přehled popisuje, jak Microsoft model UI Automation zpřístupňuje vložené objekty nebo podřízené prvky v textovém dokumentu nebo kontejneru.

V model UI Automation vložený objekt je jakýkoli prvek, který má netextové hranice, například obrázek, hypertextový odkaz, tabulku nebo typ dokumentu, jako je tabulka aplikace Microsoft Excel nebo soubor Microsoft Windows Media. To se liší od standardní definice, kde je prvek vytvořen v jedné aplikaci a vložený nebo propojený uvnitř jiné. Zda lze objekt upravit v rámci původní aplikace, je irelevantní v kontextu model UI Automation.

Vložené objekty a strom model UI Automation

Vložené objekty jsou považovány za jednotlivé prvky v ovládacím zobrazení model UI Automation stromu. Jsou vystavené jako podřízené položky textového kontejneru, aby k nim bylo možné přistupovat pomocí stejného modelu jako jiné ovládací prvky v model UI Automation.

Vložená tabulka s obrázkem v textovém kontejneru Příklad textového kontejneru s vloženými objekty Table, Image a Hyperlink

Zobrazení obsahu pro předchozí příklad Příklad zobrazení obsahu pro část předchozího textového kontejneru

Zveřejnění vložených objektů pomocí TextPattern a TextPatternRange

Používá se ve spojení, TextPattern řídicí vzor třídy a TextPatternRange třídy zpřístupňují metody a vlastnosti, které usnadňují navigaci a dotazování vložených objektů.

Textový obsah (nebo vnitřní text) textového kontejneru a vloženého objektu, jako je hypertextový odkaz nebo buňka tabulky, je vystaven jako jediný souvislý textový proud v zobrazení ovládacího prvku i zobrazení obsahu model UI Automation stromu; hranice objektů jsou ignorovány. Pokud klient model UI Automation načítá text pro účely recitování, interpretace nebo analýzy nějakým způsobem, je třeba zkontrolovat rozsah textu ve zvláštních případech, jako je tabulka s textovým obsahem nebo jinými vloženými objekty. Toho lze dosáhnout voláním GetChildren pro získání AutomationElement pro každý vložený objekt a voláním RangeFromChild získat rozsah textu pro každý prvek. To se provádí rekurzivně, dokud nebude načten veškerý textový obsah.

Rozsahy textu rozložené vloženými objekty Příklad textového datového proudu s vloženými objekty a rozsahy jejich rozsahů

Pokud je nutné procházet obsah oblasti textu, jsou na pozadí zapojena řada kroků, aby Move se metoda úspěšně spustila.

  1. Rozsah textu je normalizován; to znamená, že oblast textu je sbalená do degenerovaného rozsahu v Start koncovém bodě, což způsobí End , že koncový bod je nadbytečný. Tento krok je nezbytný k odebrání nejednoznačnosti v situacích, kdy rozsah textu přesahuje TextUnit hranice: například { {The URL https://www.microsoft.com is embedded in text a "}" jsou koncové body textového rozsahu.

  2. Výsledný rozsah se přesune zpět na DocumentRange začátek požadované TextUnit hranice.

  3. Rozsah se posune dopředu nebo dozadu DocumentRange požadovaným TextUnit počtem hranic.

  4. Rozsah se pak rozšíří ze stavu degenerovaného rozsahu přesunutím koncového End bodu o jednu požadovanou TextUnit hranici.

Úpravy rozsahu podle move &ExpandToEnclosingUnit Příklady úprav rozsahu textu pro Move() a ExpandToEnclosingUnit()

Obvyklé situace

Následující části obsahují příklady nejběžnějších scénářů, které zahrnují vložené objekty.

Legenda pro uvedené příklady:

{ = Start

} = End

Příklad 1 – oblast textu, která obsahuje vložený textový hypertextový odkaz

{The URL https://www.microsoft.com is embedded in text}.

Volána metoda Výsledek
GetText Vrátí řetězec The URL https://www.microsoft.com is embedded in text.
GetEnclosingElement Vrátí nejvíce vnitřní část AutomationElement , která uzavře oblast textu. V tomto případě AutomationElement představuje samotného zprostředkovatele textu.
GetChildren Vrátí reprezentaci AutomationElement ovládacího prvku hypertextového odkazu.
RangeFromChild where AutomationElement je objekt vrácen předchozí GetChildren metodou. Vrátí oblast, která představuje https://www.microsoft.com.

Příklad 2 – oblast textu, která částečně pokrývá vložený textový hypertextový odkaz

Adresa URL https://{[www]} je vložena do textu.

Volána metoda Výsledek
GetText Vrátí řetězec "www".
GetEnclosingElement Vrátí nejvíce vnitřní část AutomationElement , která uzavře oblast textu; v tomto případě ovládací prvek hypertextového odkazu.
GetChildren Vrátí null , protože rozsah textu nepřekryje celý řetězec adresy URL.

Příklad 3 – oblast textu, která částečně pokrývá obsah textového kontejneru. Textový kontejner obsahuje vložený textový hypertextový odkaz, který není součástí oblasti textu.

{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.

Volána metoda Výsledek
GetText Vrátí řetězec "The URL".
GetEnclosingElement Vrátí nejvíce vnitřní část AutomationElement , která uzavře oblast textu. V tomto případě AutomationElement představuje samotného zprostředkovatele textu.
Move s parametry (TextUnit.Word, 1). Přesune rozsah textu na http, protože text hypertextového odkazu se skládá z jednotlivých slov. V tomto případě hypertextový odkaz není považován za jeden objekt.

Adresa URL {[http]} je vložena do textu.

Image

Příklad 1 – oblast textu, která obsahuje vložený obrázek

{Obrázek Příklad vloženého obrázku je vložen do textu}.

Volána metoda Výsledek
GetText Vrátí řetězec "The is embedded in text". U jakéhokoli alternativního textu přidruženého k obrázku nelze očekávat zahrnutí do textového streamu.
GetEnclosingElement Vrátí nejvíce vnitřní část AutomationElement , která uzavře oblast textu. V tomto případě AutomationElement představuje samotného zprostředkovatele textu.
GetChildren Vrátí reprezentaci AutomationElement ovládacího prvku obrázek.
RangeFromChild where AutomationElement je objekt vrácen předchozí GetChildren metodou. Vrátí degenerovat oblast, která představuje "Příklad vloženého obrázku".

Příklad 2 – oblast textu, která částečně pokrývá obsah textového kontejneru. Textový kontejner obsahuje vložený obrázek, který není součástí oblasti textu.

{The image} Příklad vloženého obrázku je vložen do textu.

Volána metoda Výsledek
GetText Vrátí řetězec "The image".
GetEnclosingElement Vrátí nejvíce vnitřní část AutomationElement , která uzavře oblast textu. V tomto případě AutomationElement představuje samotného zprostředkovatele textu.
Move s parametry (TextUnit.Word, 1). Přesune rozsah textu na "is". Vzhledem k tomu, že textově vložené objekty jsou považovány za součást textového streamu, nemá obrázek v tomto příkladu vliv na přesunutí ani jeho návratovou hodnotu (v tomto případě 1).

Table

Tabulka použitá pro příklady

Buňka s obrázkem Buňka s textem
Příklad vloženého obrázku X
Vložený obrázek – příklad 2 Y
Vložený obrázek – příklad 3

Obrázek pro Z
Z

Příklad 1 – Získání textového kontejneru z obsahu buňky

Volána metoda Výsledek
GetItem s parametry (0,0) Vrátí reprezentaci AutomationElement obsahu buňky tabulky. V tomto případě je element textovým ovládacím prvkem.
RangeFromChild where AutomationElement je objekt vrácen předchozí GetItem metodou. Vrátí oblast, která zahrnuje obrázek Příklad vloženého obrázku.
GetEnclosingElement pro objekt vrácený předchozí RangeFromChild metodou. Vrátí reprezentaci AutomationElement buňky tabulky. V tomto případě je element textovým ovládacím prvkem, který podporuje TableItemPattern.
GetEnclosingElement pro objekt vrácený předchozí GetEnclosingElement metodou. Vrátí reprezentaci AutomationElement tabulky.
GetEnclosingElement pro objekt vrácený předchozí GetEnclosingElement metodou. AutomationElement Vrátí hodnotu, která představuje samotného zprostředkovatele textu.

Příklad 2 – Získání textového obsahu buňky

Volána metoda Výsledek
GetItem s parametry (1,1). Vrátí reprezentaci AutomationElement obsahu buňky tabulky. V tomto případě je element textovým ovládacím prvkem.
RangeFromChild where AutomationElement je objekt vrácen předchozí GetItem metodou. Vrátí "Y".

Viz také