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:
- ITextRangeProvider:: áthelyezése
- ITextRangeProvider::ExpandToEnclosingUnit
- ITextRangeProvider::MoveEndpointByUnit
- IUIAutomationTextRange:: áthelyezése
- IUIAutomationTextRange::ExpandToEnclosingUnit
- IUIAutomationTextRange::MoveEndpointByUnit
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:
- TextUnit_Character
- TextUnit_Format
- TextUnit_Word
- TextUnit_Line
- TextUnit_Paragraph
- TextUnit_Page
- TextUnit_Document
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.
Kapcsolódó témakörök
Utalás
ITextRangeProvider::GetChildren
Fogalmi
felhasználói felület automatizálásának támogatása szöveges tartalom