Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano jednostki tekstowe obsługiwane przez usługę Microsoft UI Automation TextRange wzorca kontrolki. Dostawcy automatyzacji interfejsu użytkownika i klienci używają jednostek tekstowych do określania ilości, o jaką należy przenieść lub zmienić rozmiar zakresu tekstu.
- Elementy interfejsu API jednostki tekstu
- opisy jednostek tekstowych
- innych potencjalnych zakresów
- Tematy pokrewne
Elementy interfejsu API jednostki tekstu
Interfejs API automatyzacji interfejsu użytkownika zawiera następujące metody, które wymagają określenia jednostki tekstowej:
- ITextRangeProvider::Move
- ITextRangeProvider::ExpandToEnclosingUnit
- ITextRangeProvider::MoveEndpointByUnit
- IUIAutomationTextRange::Move
- IUIAutomationTextRange::ExpandToEnclosingUnit
- IUIAutomationTextRange::MoveEndpointByUnit
Wyliczenie TextUnit definiuje jednostki tekstowe obsługiwane przez zakresy tekstu automatyzacji interfejsu użytkownika. Aby określić jednostkę tekstową, element członkowski TextUnit wyliczania jest określony w wywołaniu metody ITextRangeProvider lub IUIAutomationTextRange. Jednostki tekstowe od najmniejszych do największych są następujące:
- TextUnit_Character
- TextUnit_Format
- TextUnit_Word
- TextUnit_Line
- TextUnit_Paragraph
- TextUnit_Page
- TextUnit_Document
Jeśli określona kontrolka oparta na tekście nie obsługuje określonej jednostki tekstowej, dostawca powinien odpowiedzieć, zastępując następną większą jednostkę tekstową obsługiwaną przez kontrolkę. Jeśli na przykład TextUnit_Paragraph jest określona, ale nie jest obsługiwana, metoda może zastąpić TextUnit_Page lub TextUnit_Document.
Cechy językowe tekstu źródłowego mogą utrudnić dostawcy określenie granic tekstu na podstawie określonej jednostki tekstu. Aby uzyskać pomoc dotyczącą określania granic tekstu, dostawca może używać funkcji interfejsu API uniscribe, takich jak ScriptBreak. Aby uzyskać więcej informacji, zobacz Uniscribe.
Inkluzywność punktu końcowego
Punkt końcowy jednostki tekstowej może służyć zarówno jako punkt końcowy Start, jak i punkt końcowy end dla sąsiednich zakresów tekstu tego samego typu. Jeśli koniec jednej jednostki tekstowej jest również początkiem innej jednostki tekstowej, zakres zawierający punkt końcowy nie współużytkuje żadnych atrybutów ani obiektów sąsiedniego zakresu zawierającego punkt końcowy Start.
Na przykład strumień tekstowy "Hello world" zawiera dwie jednostki wyrazów z różnymi atrybutami wagi czcionki (normalny i pogrubiony). W tym przypadku punkt końcowy end jednostki wyrazu "Hello" i punkt końcowy Start jednostki wyrazu "world" są takie same, co powoduje następujące wyniki:
- Zakres "Hello" nie współużytkuje atrybutu pogrubionego słowa "world" i nie zwraca wartości atrybutu mieszanego atrybutu dla atrybutu tekstu wagi czcionki.
- Zakres "world" ma jedną wagę czcionki (pogrubioną) i nie ma udziału w wadze czcionki poprzedniej lekcji słowa "Hello".
Oto inny przykład, w którym strumień tekstowy zawiera dwie jednostki wyrazów, z których jeden jest linkiem: [Foo]() Bar. W tym przypadku punkt końcowy końca jednostki wyrazów [Foo]() i punkt końcowy Start jednostki wyrazu "Pasek" są takie same, co powoduje następujące wyniki:
- Link należy do zakresu tekstu zawierającego wartość "Foo".
- Link jest elementem podrzędnym zakresu tekstu "Foo" i jest ujęty w ITextProvider.
- Zakres tekstu "Bar" nie ma elementów podrzędnych i jest ujęty w ITextProvider.
dodatkowe uwagi dotyczące :
Odgeneruj (pusty) zakres na granicy jednostki tekstowej z zakresem tekstu tego samego typu zakłada właściwości bezpośrednio sąsiadującej jednostki tekstowej.
Wywoływanie IUIAutomationTextRange::ExpandToEnclosingUnit w zakresie degeneracji w granicach jednostki tekstowej z zakresem tekstowym tego samego typu, rozszerza zakres degeneracji do następującej jednostki tekstowej.
Opisy jednostek tekstowych
W tej sekcji opisano każdą z jednostek tekstowych obsługiwanych przez automatyzację interfejsu użytkownika.
Znak
TextUnit_Character jest jednostką językową tekstu, która reprezentuje pojedynczy znak. Definicja językowa znaku różni się w zależności od języka. W przypadku języka angielskiego USA znak jest zwykle obramowany spacją lub innym znakiem, takim jak znak interpunkcyjny, cyfra lub litera.
Znaki sterujące, takie jak powroty karetki, i znak Unicode od lewej do prawej (LTM) nie powinny być traktowane jako znaki, ale mogą być uwzględniane w zakresie tekstowym znormalizowanym na podstawie jednostki tekstowej znaku.
Znaki interpunkcyjne i znaki podziału wyrazów, takie jak spacje, powinny być traktowane jako znaki.
Format
TextUnit_Format służy do umieszczania granicy zakresu tekstu na podstawie atrybutów formatowania tekstu. Jeśli na przykład zakres tekstu jest obecnie umieszczony na pojedynczym znaku wyrazu, określając TextUnit_Format w wywołaniu IUIAutomationTextRange::ExpandToEnclosingUnit rozszerza zakres tekstu, aby uwzględnić wszystkie atrybuty, które współużytkują wszystkie atrybuty co pojedynczy znak. Wynikowy zakres tekstu może lub nie zawiera całego wyrazu. Ponadto użycie jednostki tekstowej formatu nie spowoduje rozwinięcia zakresu tekstu na granicy osadzonego obiektu, takiego jak obraz lub hiperlink.
W przeciwieństwie do innych jednostek tekstowych, które zawierają jednostki tekstowe mniejsze niż same, TextUnit_Format mogą być mniejsze lub większe niż inne jednostki. Jeśli na przykład cały dokument współudzieli te same atrybuty tekstowe i nie zawiera żadnych obiektów osadzonych, rozszerzenie zakresu tekstu przez TextUnit_Format spowoduje utworzenie nowego zakresu obejmującego cały dokument, a jednocześnie rozwinięcie zakresu tekstu przez TextUnit_Word spowoduje utworzenie mniejszego zakresu.
Słowo
TextUnit_Word jest jednostką językową tekstu, która reprezentuje jedno, całe słowo. Definicja językowa słowa różni się w zależności od języka. W przypadku języka angielskiego w Stanach Zjednoczonych wyrazy są zwykle obramowane spacjami lub znakami interpunkcyjnymi.
Gdy TextUnit_Word służy do ustawiania granicy zakresu tekstu, wynikowy zakres tekstu powinien zawierać wszelkie znaki podziału wyrazów, które znajdują się na końcu słowa, ale przed rozpoczęciem następnego słowa.
Linia
TextUnit_Line jest jednostką tekstu, która reprezentuje pojedynczy wiersz tekstu, jak pokazano w widoku kontrolki. W przypadku używania TextUnit_Line do ustawiania granicy zakresu tekstu dostawca powinien ustawić granicę bezpośrednio po punkcie, w którym znak kontrolny przerywa wiersz lub gdzie widok kontrolki opakowuje tekst w nowym wierszu. Granicę należy ustawić, w której rozpoczyna się nowy wiersz.
Akapit
TextUnit_Paragraph to jednostka językowa tekstu reprezentująca pełny akapit. Akapit powinien zaczynać się tuż przed pierwszym znakiem akapitu i zazwyczaj powinien kończyć się tuż po ostatnim znaku. Wszystkie puste wiersze po akapicie powinny zostać scalone z akapitem, chyba że coś w źródle tekstu wskazuje inaczej. Zazwyczaj granica końcowa akapitu oznacza również granicę końcową TextUnit_Line jednostki tekstowej.
Strona
TextUnit_Page reprezentuje pełną stronę tekstową dokumentu. Granice strony powinny być ustawiane w punktach natychmiastowych, w których strona zaczyna się i kończy.
Dokument
TextUnit_Document reprezentuje całą zawartość dokumentu obsługiwaną przez wzorzec kontrolki Text. Żaden tekst nie powinien istnieć poza zakresem tekstowym zawierającym dokument. Wszystkie obiekty wstawione do dokumentu, takie jak notatki adnotacji, które przecinają granicę strony, powinny być traktowane jako obiekty osadzone dokumentu, a nie część zawartości tekstowej dokumentu.
Inne potencjalne zakresy
Bieżąca specyfikacja wzorca kontrolki TextRange nie zezwala na dodawanie nowych wartości jednostek tekstowych do wyliczenia TextUnit ani nie zezwala na ponowne zdefiniowanie istniejących wartości jednostki tekstowej. Aby uwidocznić inne potencjalne zakresy, takie jak nagłówki i adnotacje, dostawca powinien uwidocznić te zakresy jako obiekty osadzone ze skojarzonym zakresem tekstu. W ten sposób można również dodać obsługę odpowiednich wzorców kontrolek. To rozwiązanie jest bardziej elastyczne i rozszerzalne niż definiowanie nowych jednostek tekstu.
Tematy pokrewne
Odniesienie
ITextRangeProvider::GetChildren
Konceptualny
Obsługa automatyzacji interfejsu użytkownika dla zawartości tekstowej