Automazione interfaccia utente unità di testo

In questo argomento vengono descritte le unità di testo supportate dal pattern di controllo TextRange di Microsoft Automazione interfaccia utente. Automazione interfaccia utente provider e client usano unità di testo per specificare la quantità in base alla quale spostare o modificare le dimensioni di un intervallo di testo.

Elementi dell'API unità di testo

L'API Automazione interfaccia utente include i metodi seguenti che richiedono l'specifica di un'unità di testo:

L'enumerazione TextUnit definisce le unità di testo supportate da Automazione interfaccia utente intervalli di testo. Per specificare l'unità di testo, un membro dell'enumerazione TextUnit viene specificato in una chiamata a un metodo ITextRangeProvider o IUIAutomationTextRange. Le unità di testo, dal più piccolo al più grande, sono le seguenti:

Se un particolare controllo basato su testo non supporta l'unità di testo specificata, il provider deve rispondere sostituendo l'unità di testo più grande successiva supportata dal controllo . Ad esempio, se TextUnit_Paragraph è specificato ma non supportato, il metodo può sostituire TextUnit_Page o TextUnit_Document.

Le caratteristiche linguistiche del testo di origine possono rendere difficile per un provider determinare i limiti di testo in base all'unità di testo specificata. Per informazioni su come determinare i limiti del testo, un provider può usare funzioni API Uniscribe come ScriptBreak. Per altre informazioni, vedere Uniscribe.

Inclusione degli endpoint

Un endpoint di unità di testo può fungere sia da endpoint iniziale che da endpoint end per intervalli di testo adiacenti dello stesso tipo. Se la fine di un'unità di testo è anche l'inizio di un'altra unità di testo, l'intervallo contenente l'endpoint end non condivide attributi o oggetti dell'intervallo adiacente contenente l'endpoint iniziale .

Ad esempio, un flusso di testo, "Hello world", contiene due unità di parole con attributi di spessore del carattere diversi (normale e grassetto). In questo caso, l'endpoint finale dell'unità di parola "Hello" e l'endpoint iniziale dell'unità di parola "world" sono gli stessi, che comporta quanto segue:

  • L'intervallo di "Hello" non condivide l'attributo grassetto dell'unità di parola "world" e non restituisce il valore dell'attributo misto per l'attributo text di spessore del carattere.
  • L'intervallo "world" ha un singolo spessore del carattere (grassetto) e non condivide lo spessore del carattere dell'unità di parola precedente "Hello".

Ecco un altro esempio in cui un flusso di testo contiene due unità di parola, una delle quali è un collegamento: [Foo]() Bar. In questo caso, l'endpoint finale dell'unità [Foo]() di parola e l'endpoint iniziale dell'unità di parola "Bar" sono gli stessi, il che comporta quanto segue:

  • Il collegamento appartiene all'intervallo di testo contenente "Foo".
  • Il collegamento è figlio dell'intervallo di testo "Foo" ed è racchiuso da ITextProvider.
  • L'intervallo di testo "Bar" non include elementi figlio ed è racchiuso da ITextProvider.

Note aggiuntive:

Un intervallo degenerato (vuoto) in corrispondenza di un limite di unità di testo con un intervallo di testo dello stesso tipo presuppone le proprietà dell'unità di testo immediatamente adiacente.

Chiamando IUIAutomationTextRange::ExpandToEnclosingUnit in un intervallo degenerato in corrispondenza di un limite di unità di testo con un intervallo di testo dello stesso tipo, espande l'intervallo degenerato nell'unità di testo seguente.

Descrizioni delle unità di testo

Questa sezione descrive ognuna delle unità di testo supportate da Automazione interfaccia utente.

Carattere

TextUnit_Character è un'unità linguistica di testo che rappresenta un singolo carattere. La definizione linguistica di un carattere varia in base alla lingua. Per l'inglese degli Stati Uniti, un carattere è in genere delimitato da uno spazio o da un altro carattere, ad esempio un segno di punteggiatura, un numero o una lettera.

I caratteri di controllo, ad esempio i ritorni a capo e il segno da sinistra a destra (LTM) Unicode non devono essere considerati come caratteri, ma possono essere inclusi in un intervallo di testo normalizzato in base all'unità di testo carattere.

I segni di punteggiatura e i caratteri di interruzione di parola, ad esempio gli spazi, devono essere considerati come caratteri.

Formato

TextUnit_Format viene usato per posizionare il limite di un intervallo di testo in base agli attributi di formattazione del testo. Ad esempio, se un intervallo di testo è attualmente posizionato su un singolo carattere di una parola, specificando TextUnit_Format in una chiamata a IUIAutomationTextRange::ExpandToEnclosingUnit espande l'intervallo di testo per includere tutto il testo che condivide tutti gli stessi attributi del singolo carattere. L'intervallo di testo risultante potrebbe includere o meno l'intera parola. Inoltre, l'uso dell'unità di testo di formato non espanderà un intervallo di testo oltre il limite di un oggetto incorporato, ad esempio un'immagine o un collegamento ipertestuale.

A differenza delle altre unità di testo, che includono le unità di testo più piccole di se stesse, TextUnit_Format possono essere inferiori o maggiori rispetto alle altre unità. Se, ad esempio, un intero documento condivide gli stessi attributi di testo e non contiene oggetti incorporati, espandendo un intervallo di testo TextUnit_Format verrà creato un nuovo intervallo che include l'intero documento, espandendo l'intervallo di testo TextUnit_Word verrà creato un intervallo più piccolo.

Word

TextUnit_Word è un'unità linguistica di testo che rappresenta una singola parola intera. La definizione linguistica di una parola varia in base alla lingua. Per l'inglese degli Stati Uniti, le parole sono in genere delimitate da spazi o caratteri di punteggiatura.

Quando TextUnit_Word viene utilizzato per impostare il limite di un intervallo di testo, l'intervallo di testo risultante deve includere qualsiasi carattere di interruzione di parola presente alla fine della parola, ma prima dell'inizio della parola successiva.

A linee

TextUnit_Line è un'unità di testo che rappresenta una singola riga di testo, come illustrato nel riquadro di visualizzazione del controllo. Quando si utilizza TextUnit_Line per impostare il limite di un intervallo di testo, un provider deve impostare il limite immediatamente dopo il punto in cui un carattere di controllo interrompe la riga o dove il riquadro di visualizzazione del controllo esegue il wrapping del testo in una nuova riga. Il limite deve essere impostato dove inizia una nuova riga.

Paragrafo

TextUnit_Paragraph è un'unità linguistica di testo che rappresenta un paragrafo completo. Un paragrafo deve iniziare subito prima del primo carattere di un paragrafo e in genere deve terminare subito dopo l'ultimo carattere. Le righe vuote che seguono un paragrafo devono essere unite nel paragrafo, a meno che non venga indicato un elemento nell'origine testo. In genere, il limite finale di un paragrafo contrassegna anche il limite finale di un'unità di testo TextUnit_Line .

Pagina

TextUnit_Page rappresenta una pagina di testo completa di un documento. I limiti di una pagina devono essere impostati nei punti immediati in cui inizia e termina una pagina.

Documento

TextUnit_Document rappresenta l'intero contenuto di un documento supportato dal pattern di controllo Text. Nessun testo deve esistere all'esterno di un intervallo di testo che contiene un documento. Tutti gli oggetti inseriti in un documento, ad esempio le note di annotazione che superano un limite di pagina, devono essere considerati oggetti incorporati del documento e non come parte del contenuto di testo del documento.

Altri intervalli potenziali

La specifica corrente del pattern di controllo TextRange non consente l'aggiunta di nuovi valori di unità di testo all'enumerazione TextUnit , né consente di ridefinire i valori delle unità di testo esistenti. Per esporre altri intervalli potenziali, ad esempio intestazioni e annotazioni, un provider deve esporre questi intervalli come oggetti incorporati con un intervallo di testo associato. In questo modo, è anche possibile aggiungere il supporto per i pattern di controllo appropriati. Questa soluzione è più flessibile ed estendibile rispetto alla definizione di nuove unità di testo.

Riferimento

TextPatternRangeEndpoint

ITextRangeProvider::GetChildren

Informazioni concettuali

Automazione interfaccia utente supporto per il contenuto testuale

Uso dei controlli basati su testo