Megosztás a következőn keresztül:


UI Automation szövegegységek

Ez a témakör a Microsoft UI Automation TextRange vezérlőminta által támogatott szövegegységeket ismerteti. A felhasználói felületi automatizálási szolgáltatók és az ügyfelek szöveges egységek használatával határozzák meg, hogy a szövegtartományok mérete milyen mértékben legyen áthelyezve vagy módosítva.

Szöveges egység API-elemei

A UI Automation API a következő metódusokat tartalmazza, amelyekhez szövegegységet kell megadni:

A TextUnit enumerálás határozza meg a felhasználói felület automation szövegtartományai által támogatott szövegegységeket. A szöveges egység megadásához a TextUnit enumerálás egy ITextRangeProvider vagy IUIAutomationTextRange metódus hívásában van megadva. A szöveges egységek a legkisebbtől a legnagyobbig a következők:

Ha egy adott szövegalapú vezérlő nem támogatja a megadott szövegegységet, a szolgáltatónak a vezérlő által támogatott következő nagyobb szöveges egység helyettesítésével kell válaszolnia. Ha például TextUnit_Paragraph van megadva, de nem támogatott, a metódus helyettesítheti TextUnit_Page vagy TextUnit_Document.

A forrásszöveg nyelvi jellemzői megnehezíthetik a szolgáltató számára a szöveghatárok meghatározását a megadott szövegegység alapján. A szöveghatárok meghatározásához a szolgáltató használhat Uniscribe API-függvényeket, például ScriptBreak. További információ: Uniscribe.

Végpont inkluzivitása

A szövegegység-végpontok Start végpontként és záró végpontként is szolgálhatnak az azonos típusú szomszédos szövegtartományokhoz. Ha egy szöveges egység vége egy másik szövegegység kezdete is, a Végpont végpontot tartalmazó tartomány nem oszt meg attribútumokat vagy objektumokat a szomszédos tartományból, amely tartalmazza a Start végpontot.

A "Hello world" szövegfolyam például két szóegységet tartalmaz különböző betűsúly-attribútumokkal (normál és félkövér). Ebben az esetben a "Hello" szóegység end végpontja és a "world" szóegység Start végpontja megegyezik, ami a következőket eredményezi:

  • A "Hello" tartomány nem osztja meg a "world" szóegység félkövér attribútumát, és nem adja vissza a betűvastagsági szöveg attribútum vegyes attribútumértékét.
  • A "world" tartomány egyetlen betűvastagságú (félkövér), és nem osztja meg az előző "Hello" szóegység betűvastagságát.

Íme egy másik példa, amelyben egy szöveges stream két szóegységet tartalmaz, amelyek közül az egyik egy hivatkozás: [Foo]() Bar. Ebben az esetben az egység [Foo]() végpontja és a "Sáv" szóegység Start végpontja megegyezik, ami a következőket eredményezi:

  • A hivatkozás a "Foo" szöveget tartalmazó szövegtartományhoz tartozik.
  • A hivatkozás a "Foo" szövegtartomány gyermeke, és az ITextProvider közé tartozik.
  • A "Bar" szövegtartomány nem rendelkezik gyermekekkel, és az ITextProvider közé tartozik.

További megjegyzések:

Az azonos típusú szövegtartományt tartalmazó szövegegység határán lévő degenerált (üres) tartomány feltételezi a közvetlenül szomszédos szövegegység tulajdonságait.

Az IUIAutomationTextRange meghívása::ExpandToEnclosingUnit egy degenerátumtartományon egy azonos típusú szövegtartományt tartalmazó szövegegység határán, a degenerátumtartományt a következő szövegegységre bontja ki.

Szöveges egység leírásai

Ez a szakasz a felhasználói felület automatizálása által támogatott szövegegységeket ismerteti.

Karakter

TextUnit_Character egy szöveges nyelvi egység, amely egyetlen karaktert jelöl. A karakter nyelvi definíciója nyelv szerint változik. Az amerikai angol nyelv esetében a karaktereket általában szóköz vagy más karakter, például írásjel, szám vagy betű szegélyezi.

Az olyan vezérlőkarakterek, mint a kocsivisszaadók és a Unicode balról jobbra jel (LTM) nem tekinthetők karakternek, de a karakterszöveg-egység alapján normalizált szövegtartományba is belefoglalhatók.

Az írásjeleket és a szótörési karaktereket, például a szóközöket karaktereknek kell tekinteni.

Formátum

TextUnit_Format egy szövegtartomány határának elhelyezésére szolgál a szöveg formázási attribútumai alapján. Ha például egy szövegtartomány egy szó egyetlen karakterén van elhelyezve, TextUnit_Format megadva a IUIAutomationTextRange::ExpandToEnclosingUnit kibontja a szövegtartományt úgy, hogy az összes olyan szöveg szerepeljen, amely az egyetlen karakterrel azonos attribútumokkal rendelkezik. Előfordulhat, hogy az eredményként kapott szövegtartomány tartalmazza a teljes szót. A formátumszöveg-egység használata nem bontja ki a szövegtartományt egy beágyazott objektum, például egy kép vagy hivatkozás határán.

A többi szöveges egységtől eltérően, amelyek maguknál kisebb szöveges egységeket tartalmaznak, TextUnit_Format kisebbek vagy nagyobbak lehetnek, mint a többi egység. Ha például egy teljes dokumentum ugyanazokat a szövegattribútumokat használja, és nem tartalmaz beágyazott objektumokat, a szövegtartomány TextUnit_Format szerinti kibontása új tartományt hozna létre, amely magában foglalja a teljes dokumentumot, miközben a szövegtartományt TextUnit_Word kibővítve kisebb tartományt hozna létre.

Szó

TextUnit_Word a szöveg nyelvi egysége, amely egyetlen, egész szót jelöl. A szó nyelvi definíciója nyelv szerint változik. Az amerikai angol nyelv esetében a szavakat általában szóközök vagy írásjelek szegélyezik.

Ha TextUnit_Word használ egy szövegtartomány határának beállításához, az eredményként kapott szövegtartománynak tartalmaznia kell a szó végén, de a következő szó kezdete előtt található szótörési karaktereket.

Vonal

TextUnit_Line egy szövegegység, amely egyetlen szövegsort jelöl a vezérlőelem nézetében látható módon. Ha TextUnit_Line használ egy szövegtartomány határának beállításához, a szolgáltatónak közvetlenül azt a pontot követően kell beállítania a határt, ahol egy vezérlőkarakter megszakítja a vonalat, vagy ahol a vezérlőelem nézetportja új sorba burkolja a szöveget. A határt úgy kell beállítani, hogy egy új sor induljon el.

Bekezdés

TextUnit_Paragraph egy teljes bekezdést jelképező nyelvi szövegegység. A bekezdésnek a bekezdés első karaktere előtt kell kezdődnie, és általában az utolsó karakter után kell végződnie. A bekezdést követő üres sorokat egyesíteni kell a bekezdéssel, kivéve, ha a szövegforrásban valami másként nem jelez. A bekezdés véghatára általában egy TextUnit_Line szövegegység véghatárát is jelöli.

Oldal

TextUnit_Page egy dokumentum teljes szöveges oldalát jelöli. A lapok határait azokkal a közvetlen pontokkal kell beállítani, ahol egy oldal elindul és véget ér.

Dokumentum

TextUnit_Document a dokumentum teljes tartalmát a Szöveg vezérlőminta által támogatott módon jelöli. Dokumentumot tartalmazó szövegtartományon kívül nem létezhet szöveg. A dokumentumba beszúrt objektumokat, például az oldalhatárt átlépő széljegyzeteket, a dokumentum beágyazott objektumaiként kell kezelni, nem pedig a dokumentum szöveges tartalmának részeként.

Egyéb lehetséges tartományok

Az aktuális TextRange vezérlőminta-specifikáció nem teszi lehetővé az új szövegesegység-értékek hozzáadását a TextUnit enumeráláshoz, és nem teszi lehetővé a meglévő szövegesegység-értékek újradefiniálását sem. Más lehetséges tartományok, például fejlécek és széljegyzetek felfedéséhez a szolgáltatónak ezeket a tartományokat beágyazott objektumként kell elérhetővé tennie egy társított szövegtartománysal. Így támogatást is adhat a megfelelő szabályozási mintákhoz. Ez a megoldás rugalmasabb és bővíthetőbb, mint az új szövegegységek definiálása.

Utalás

TextPatternRangeEndpoint

ITextRangeProvider::GetChildren

Fogalmi

felhasználói felület automatizálásának támogatása szöveges tartalom

Szövegalapú vezérlők használata