Pattern di controllo annotazione
Vengono descritte le linee guida e le convenzioni per l'implementazione di IAnnotationProvider, incluse informazioni sulle proprietà e sui metodi. L'annotazione pattern di controllo viene utilizzato per esporre le proprietà di un'annotazione in un documento.
Un esempio è un fumetto di commento che si trova nel margine di un documento ed è connesso a testo di documento o a una cella del foglio di calcolo.
La figura seguente mostra un esempio di annotazione. Per esempi di controlli che implementano questo pattern di controllo, vedere Tipi di controllo e i relativi pattern di controllo supportati.
Questo argomento contiene le sezioni seguenti.
- linee guida e convenzioni di implementazione
- membri obbligatori per IAnnotationProvider
- argomenti correlati
Linee guida e convenzioni di implementazione
Quando si implementa il pattern di controllo annotazione, tenere presenti le linee guida e le convenzioni seguenti:
- Esistono molti tipi diversi di annotazioni. Il file di intestazione UIAutomationClient.h definisce un set di valori costanti denominati che identificano i tipi di annotazioni supportate da Automazione interfaccia utente microsoft. Per altre informazioni, vedere identificatori del tipo di annotazione .
- Se si usa AnnotationType_Unknown, è necessario implementare la proprietà IAnnotationProvider::AnnotationTypeName per consentire ai client di individuare il nome del tipo di annotazione. Non è necessario implementare AnnotationTypeName per un tipo di annotazione standard perché Automazione interfaccia utente fornisce un nome predefinito, ma è possibile implementarlo se è necessario eseguire l'override del nome predefinito.
- La proprietà IAnnotationProvider::Author è facoltativa.
- La proprietà IAnnotationProvider::D ateTime è facoltativa.
- La proprietà IAnnotationProvider::Target è necessaria perché collega un'annotazione a un elemento dell'interfaccia utente, consentendo a un client di passare dall'annotazione all'elemento dell'interfaccia utente a cui fa riferimento l'annotazione.
- Poiché le annotazioni possono assumere molte forme diverse, l'interfacciaIAnnotationProvidernon definisce una proprietà per l'archiviazione del valore o del testo di un'annotazione. Una semplice annotazione deve esporre l'interfacciaIValueProvidere la proprietà IValueProvider::Value deve restituire un valore di sola lettura che specifica il testo dell'annotazione. Un'annotazione più completa deve esporre l'interfaccia ITextProvider per fornire testo più rtf ai client.
- Lo spostamento da un elemento dell'interfaccia utente a un'annotazione sull'elemento dipende dal tipo di elemento da annotare, come indicato di seguito:
- Per le celle del foglio di calcolo, implementare il metodo ISpreadsheetItemProvider::GetAnnotationObjects per fare riferimento all'annotazione.
- Per il contenuto testuale, implementare l'attributo AnnotationObjects text nell'interfaccia ITextRangeProvider per fare riferimento all'annotazione.
- Alcuni tipi di annotazioni non richiedono un'implementazione completa dell'interfaccia IAnnotationProvider. Ad esempio, un semplice indicatore di errore ortografico può essere rappresentato con l'interfaccia ITextRangeProvider restituire un attributo di testo AnnotationTypes attributo text di AnnotationType_SpellingErrore un valore Null per l'attributo di testo AnnotationObjects.
- Può essere utile implementare l'interfacciaIAnnotationProvider in un elemento dell'interfaccia utente non visibile. Ad esempio, è possibile creare un elemento di automazione interfaccia utente non visibile che implementa IAnnotationProvider per fornire informazioni estese su un errore grammaticale.
- Le annotazioni in un controllo basato su testo possono essere complesse se il controllo contiene commenti sovrapposti. Usare le linee guida seguenti per gestire annotazioni complesse:
- Un intervallo di testo senza annotazioni deve restituire una matrice vuota per l'attributo di testo AnnotationTypes e una matrice vuota per l'attributo di testo AnnotationObjects.
- Un intervallo di testo con un'annotazione deve restituire una matrice di un valore intero per l'attributo di testo AnnotationTypes e una matrice di un IRawElementProviderSimple interfaccia per l'attributo di testo AnnotationObjects.
- Un intervallo di testo con più annotazioni deve restituire una matrice di più valori interi per l'attributo AnnotationTypes attributo di testo e una matrice di un numero corrispondente di interfacce IRawElementProviderSimple per l'attributo di testo AnnotationObjects.
- Un intervallo di testo con annotazioni variabili, ad esempio un intervallo con testo annotato e non annotato, deve restituire la proprietà ReservedMixedAttributeValue sia per AnnotationTypes che per AnnotationObjects. Un client che riceve questa risposta può suddividere l'intervallo di testo per trovare dove iniziano e terminano le annotazioni.
Membri obbligatori per IAnnotationProvider
Per implementare l'interfacciaIAnnotationProvidersono necessarie le proprietà seguenti.
Membri obbligatori | Tipo di membro | Note |
---|---|---|
AnnotationTypeId | Proprietà | Nessuno. |
AnnotationTypeName | Proprietà | Nessuno. |
Author | Proprietà | Nessuno. |
DateTime | Proprietà | Nessuno. |
destinazione | Proprietà | Nessuno. |
Questo pattern di controllo non ha eventi associati.
Argomenti correlati
-
tipi di controllo e i relativi modelli di controllo supportati
-
Panoramica modelli di controllo di automazione interfaccia utente