Interfaccia ITextRange (tom.h)
Gli oggetti ITextRange sono potenti strumenti di modifica e data binding che consentono a un programma di selezionare il testo in un brano e quindi esaminare o modificare tale testo.
Ereditarietà
L'interfaccia ITextRange eredita dall'interfaccia IDispatch . ITextRange include anche questi tipi di membri:
Metodi
L'interfaccia ITextRange include questi metodi.
ITextRange::CanEdit Determina se l'intervallo specificato può essere modificato. |
ITextRange::CanPaste Determina se un oggetto dati può essere incollato, utilizzando un formato specificato, nell'intervallo corrente. |
ITextRange::ChangeCase Modifica la distinzione tra maiuscole e minuscole in questo intervallo in base al parametro Type. |
ITextRange::Collapse Comprime l'intervallo di testo specificato in un punto degenerato all'inizio o alla fine dell'intervallo. |
ITextRange::Copy Copia il testo in un oggetto dati. |
ITextRange::Cut Taglia il testo normale o rtf in un oggetto dati o negli Appunti, a seconda del parametro pVar. |
ITextRange::D elete Simula i tasti DELETE e BACKSPACE, con e senza il tasto CTRL premuto. |
ITextRange::EndOf Sposta le estremità di questo intervallo alla fine dell'ultima unità sovrapposta nell'intervallo. |
ITextRange::Expand Espande questo intervallo in modo che tutte le unità parziali in esso contenute siano completamente contenute. |
ITextRange::FindText Cerca fino al numero di caratteri per il testo specificato da bstr. La posizione iniziale e la direzione sono specificate anche da Count e i criteri di corrispondenza vengono specificati da Flag. |
ITextRange::FindTextEnd Cerca fino a Count characters for the string, bstr, starting from the range's End cp.To Count characters for the string, bstr, starting from the range's End cp. |
ITextRange::FindTextStart Cerca fino a Count characters for the string, bstr, starting at the range's Start cp (cpFirst). |
ITextRange::GetChar Ottiene il carattere nella posizione iniziale dell'intervallo. |
ITextRange::GetDuplicate Ottiene un duplicato di questo oggetto intervallo. |
ITextRange::GetEmbeddedObject Recupera un puntatore all'oggetto incorporato all'inizio dell'intervallo specificato, ovvero in cpFirst. L'intervallo deve essere un punto di inserimento oppure deve selezionare solo l'oggetto incorporato. |
ITextRange::GetEnd Ottiene la posizione del carattere finale dell'intervallo. |
ITextRange::GetFont Ottiene un oggetto ITextFont con gli attributi di carattere dell'intervallo specificato. |
ITextRange::GetFormattedText Ottiene un oggetto ITextRange con il testo formattato dell'intervallo specificato. |
ITextRange::GetIndex Recupera l'indice del brano del parametro Unit nella posizione del carattere Start dell'intervallo specificato. |
ITextRange::GetPara Ottiene un oggetto ITextPara con gli attributi di paragrafo dell'intervallo specificato. |
ITextRange::GetPoint Recupera le coordinate dello schermo per la posizione del carattere iniziale o finale nell'intervallo di testo, insieme alla posizione all'interno della riga. |
ITextRange::GetStart Ottiene la posizione del carattere iniziale dell'intervallo. |
ITextRange::GetStoryLength Ottiene il numero di caratteri nel brano dell'intervallo. |
ITextRange::GetStoryType Ottenere il tipo della storia dell'intervallo. |
ITextRange::GetText Ottiene il testo normale in questo intervallo. La proprietà Text è la proprietà predefinita dell'interfaccia ITextRange. |
ITextRange::InRange Determina se l'intervallo è compreso o nello stesso testo di un intervallo specificato. |
ITextRange::Instory Determina se la storia di questo intervallo corrisponde alla storia di un intervallo specificato. |
ITextRange::IsEqual Determina se questo intervallo ha le stesse posizioni dei caratteri e lo stesso brano di quelli di un intervallo specificato. |
ITextRange::Move Sposta il punto di inserimento avanti o indietro in base a un numero specificato di unità. Se l'intervallo non viene generato, l'intervallo viene compresso in un punto di inserimento a entrambe le estremità, a seconda del conteggio e quindi viene spostato. |
ITextRange::MoveEnd Sposta la posizione finale dell'intervallo. |
ITextRange::MoveEndUntil Sposta la fine dell'intervallo alla posizione del primo carattere trovato nel set di caratteri specificato da Cset, purché il carattere venga trovato all'interno dei caratteri Count della fine dell'intervallo. |
ITextRange::MoveEndWhile Sposta la fine dell'intervallo tra i caratteri Count o solo oltre tutti i caratteri contigui trovati nel set di caratteri specificato da Cset, a qualsiasi valore minore. |
ITextRange::MoveStart Sposta la posizione iniziale dell'intervallo il numero specificato di unità nella direzione specificata. |
ITextRange::MoveStartUntil Sposta la posizione iniziale dell'intervallo la posizione del primo carattere trovato nel set di caratteri specificato da Cset, a condizione che il carattere venga trovato all'interno dei caratteri Count della posizione iniziale. |
ITextRange::MoveStartWhile Sposta la posizione iniziale dell'intervallo Conteggio caratteri o semplicemente incolla tutti i caratteri contigui trovati nel set di caratteri specificato da Cset, a meno. |
ITextRange::MoveUntil Cerca fino al numero di caratteri per il primo carattere nel set di caratteri specificato da Cset. Se viene trovato un carattere, l'intervallo viene compresso a quel punto. L'inizio della ricerca e la direzione vengono specificati anche da Count. |
ITextRange::MoveWhile Inizia alla fine specificata di un intervallo e cerca mentre i caratteri appartengono al set specificato da Cset e mentre il numero di caratteri è minore o uguale a Count. |
ITextRange::P aste Incolla il testo da un oggetto dati specificato. |
ITextRange::ScrollIntoView Scorre l'intervallo specificato nella visualizzazione. |
ITextRange::Select Imposta le posizioni iniziale e finale e i valori del brano della selezione attiva su quelli di questo intervallo. |
ITextRange::SetChar Imposta il carattere nella posizione iniziale dell'intervallo. |
ITextRange::SetEnd Imposta la posizione finale dell'intervallo. |
ITextRange::SetFont Imposta gli attributi di carattere di questo intervallo su quelli dell'oggetto ITextFont specificato. |
ITextRange::SetFormattedText Imposta il testo formattato di questo intervallo sul testo formattato dell'intervallo specificato. |
ITextRange::SetIndex Modifica questo intervallo nell'unità specificata della storia. |
ITextRange::SetPara Imposta gli attributi di paragrafo di questo intervallo su quelli dell'oggetto ITextPara specificato. |
ITextRange::SetPoint Modifica l'intervallo in base a un punto specificato in corrispondenza o verso l'alto (a seconda di Extend) il punto (x, y) allineato in base al tipo. |
ITextRange::SetRange Modifica gli endpoint di intervallo ai valori specificati. |
ITextRange::SetStart Imposta la posizione del carattere per l'inizio di questo intervallo. |
ITextRange::SetText Imposta il testo in questo intervallo. |
ITextRange::StartOf Sposta l'intervallo all'inizio della prima unità sovrapposta nell'intervallo. |
Commenti
Più intervalli di testo possono essere attivi e lavorare in modo cooperativo sulla stessa storia e evolversi con la storia. Ad esempio, se un intervallo di testo elimina il testo specificato prima di un altro intervallo di testo, quest'ultimo tiene traccia della modifica. In questo senso, gli intervalli di testo sono simili ai segnalibri di Microsoft Word, che tengono traccia anche delle modifiche di modifica. Tuttavia, i segnalibri non possono modificare il testo, mentre gli intervalli di testo possono. Inoltre, gli intervalli consentono di modificare il testo senza modificare la selezione o gli Appunti, entrambi preziosi per gli utenti finali. L'interfaccia ITextSelection eredita da ITextRange e aggiunge alcuni metodi e proprietà orientate all'interfaccia utente, come descritto nella sezione su ITextSelection.
È possibile esaminare un intervallo di testo usando metodi basati sulle posizioni dei caratteri. In particolare, un intervallo di testo è caratterizzato da:
- La prima posizione del carattere, cpFirst, che punta a un punto di inserimento immediatamente precedente al primo carattere (rispetto all'inizio della storia) nell'intervallo.
- Posizione limite , cpLim, che punta a un punto di inserimento immediatamente dopo l'ultimo carattere nell'intervallo.
Nella figura seguente le posizioni dei caratteri sono rappresentate dalle righe che separano le lettere. I valori di posizione dei caratteri corrispondenti vengono assegnati sotto le righe. L'intervallo a partire da cpFirst = 5 e termina a cpLim = 7 contiene la parola a due lettere. Se questa figura illustra il testo completo in una storia, la lunghezza della storia è 30.
La lunghezza di un intervallo viene specificata da cpLim cpFirst - o in modo equivalente per End - Start. Un intervallo con lunghezza zero viene chiamato un intervallo degenerato o vuoto e ha valori cp* uguali, ovvero cpFirst = cpLim. Un esempio di intervallo degenerato è il punto di inserimento corrente. Una selezione non Null è un esempio di un intervallo non generato.Si supponga che l'intervallo compreso tra 5 e 7 indicato dalle celle ombreggiate nella figura precedente venga detto di eliminare il testo (vedere Elimina), trasformandosi così in un punto di inserimento. L'intervallo compreso tra 25 e 29 tiene automaticamente traccia del contenuto, ovvero il testo della parola. La figura seguente mostra il risultato.
In questa figura l'intervallo per il testo è stato modificato automaticamente per avere cpFirst = 23 e cpLim = 27. Il proprietario dell'intervallo non deve preoccuparsi di aggiornare i valori di posizione dei caratteri di intervallo in caso di modifica.I nomi dei metodi di spostamento indicano quale fine spostare, ma si noti che se qualsiasi metodo tenta di spostare un intervallo oltre l'altro, entrambe le estremità vengono spostate nella posizione di destinazione. Di conseguenza, il punto di inserimento si trova nella posizione di destinazione. Il concetto è che cpFirst e cpLim devono sempre obbedire alla condizione fondamentale
0 <= cpFirst<= cpLim<= # caratteri nella storia
o equivalentemente per un intervallo r, 0 <= r. Start <= r. End <= r. StoryLength, che è quello che ci si aspetta dai nomi di queste quantità.
Un'altra caratteristica importante è che tutte le storie contengono un carattere CR (0xD) non aggiornabile alla fine. Quindi anche una storia vuota ha un singolo personaggio, ovvero il CR finale. Un intervallo può selezionare questo carattere, ma non può diventare un punto di inserimento oltre. Per vedere come funziona, provare a selezionare il CR finale in un documento Word e quindi premere il tasto FRECCIA DESTRA per comprimerlo. L'albero della directory verrà compresso prima del CR finale, ma non è possibile eliminare il CR. Il modello a oggetti di testo (TOM) funziona allo stesso modo. Quindi, se r. Start <= r. Terminare, quindi r. End <= (r. StoryLength - 1. Per una discussione sull'eliminazione di un CR, vedere Elimina.
Alcuni metodi dipendono da un argomento Unit , che può assumere i valori predefiniti elencati nella tabella seguente.
Unità | Valore | Significato |
---|---|---|
tomCharacter | 1 | Carattere. |
tomWord | 2 | Word. |
tomSentence | 3 | Frase. |
tomParagraph | 4 | Paragrafo. |
tomLine | 5 | Linea (in visualizzazione). |
tomStory | 6 | Storia. |
tomScreen | 7 | Schermata (come per PAGE UP/PAGE DOWN). |
tomSection | 8 | Sezione. |
tomColumn | 9 | Colonna tabella. |
tomRow | 10 | Riga tabella. |
tomWindow | 11 | In alto a sinistra o in basso a destra della finestra. |
tomCell | 12 | Cella tabella. |
tomCharFormat | 13 | Esecuzione della formattazione dei caratteri costante. |
tomParaFormat | 14 | Esecuzione della formattazione di paragrafo costante. |
tomTable | 15 | Tabella. |
tomObject | 16 | Oggetto incorporato. |
La maggior parte dei valori Unit è autoesplicativa. Tuttavia, per maggiore chiarezza vengono fornite le descrizioni seguenti.
tomWord
La costante tomWord è una fine di paragrafo o un intervallo di caratteri alfanumerici o punteggiatura, inclusi eventuali spazi vuoti che seguono. Per ottenere un aspetto sullo schermo per tomWord, watch il modo in cui il cursore si sposta quando si preme CTRL+FRECCIA DESTRA (—>) o CTRL+FRECCIA SINISTRA (<) in un documento di Word.tomSentence
La costante tomSentence descrive una stringa di testo che termina con un punto, un punto interrogativo o un punto esclamativo e viene seguito da uno o più caratteri ASCII (da 9 a 0xd e 0x20) o dal separatore di paragrafo Unicode (0x2029). Lo spazio vuoto finale fa parte della frase. L'ultima frase in una storia non deve avere un punto, un punto interrogativo o un punto esclamativo. L'inizio di una storia viene qualificato come inizio di un tomSentence, anche se la stringa non è qualificata come frase grammaticalmente. Le altre frasi devono seguire una fine della frase e non possono iniziare con un punto, un punto interrogativo o un punto esclamativo.tomParagraph
La costante tomParagraph è una stringa di testo terminata da un segno di fine paragrafo (CRLF, CR, VT (per MAIUSC+INVIO), LF, FF o 0x2029. I motori TOM hanno sempre un segno di fine paragrafo nondeletable alla fine di una storia. Così, tutte le storie TOM hanno automaticamente almeno un tomWord, un tomSentence e un tomParagraph.tomLine
La costante tomLine corrisponde a una riga di testo in una visualizzazione, a condizione che un display sia associato all'intervallo. Se a un intervallo non è associato alcun display, tomLine viene considerato tomParagraph. Una selezione ha automaticamente una visualizzazione e un intervallo duplicato (vedere GetDuplicate). Altri intervalli potrebbero non avere uno schermo, a seconda del motore e del contesto TOM.I metodi che spostano uno o entrambi terminano in termini di unità, ad esempio Move, MoveEnd e MoveStart, dipendono dall'argomento Count firmato. Ad eccezione dei comandi di movimento geometrico ITextSelection , se Count è maggiore di zero, le estremità da spostare vengono spostate in avanti (verso la fine del brano) e se Count è minore di zero, le estremità vengono spostate all'indietro (verso l'inizio). Il valore predefinito di Count per questi metodi Move è 1. Questi metodi tentano di spostare Le unità conteggio, ma il movimento non supera mai le estremità della storia.
I metodi che spostano una o entrambe le estremità in base a stringhe o stringhe corrispondenti, ad esempio MoveWhile, MoveEndWhile e MoveStartWhile, possono passare fino a un numero massimo di caratteri specificati dall'argomento Count firmato. Se Count è maggiore di zero, le estremità da spostare vengono spostate in avanti e se Count è minore di zero, le estremità vengono spostate all'indietro. Vengono definiti due valori count speciali, tomForward e tomBackward. Questi valori sono garantiti per raggiungere la fine e l'inizio della storia, rispettivamente. Il valore predefinito di Count è tomForward.
Nei metodi Move* che trasformano un intervallo non generato in un intervallo degenerato, ad esempio Move, MoveWhile e MoveUntil, cpFirst viene modificato se Count è negativo e cpLim viene modificato se Count è positivo. Dopo questo movimento, anche l'altra estremità dell'intervallo viene spostata nella nuova posizione. Per informazioni più specifiche sul conteggio , vedere i singoli metodi. Per gli intervalli non generati, i metodi MoveStart, MoveEnd, MoveStartWhile, MoveEndWhile, MoveStartUntil e MoveEndUntil spostano la posizione iniziale (Start) o la posizione finale (Fine).
Per selezionare un'unità corrispondente a un intervallo contiguo, ad esempio tomWord, tomSentence e tomParagraph, utilizzare il metodo MoveEnd . Per selezionare un'unità che corrisponde a un intervallo non contiguo, ad esempio tomObject, utilizzare il metodo EndOf , poiché l'oggetto successivo può verificarsi dopo testo intermedio sostanziale, se affatto. Per selezionare un'unità tomCell, l'intervallo deve trovarsi all'interno di una tabella.
Di seguito sono riportati esempi e altre spiegazioni degli argomenti Count e Unit . Si noti che i motori TOM potrebbero non supportare tutte le unità della tabella precedente. Ad esempio, i controlli di modifica avanzati non offrono i concetti delle sezioni, ma restituiscono piuttosto E_NOTIMPL quando viene specificato tomSection. Tuttavia, se un motore TOM supporta un'unità, ha il valore di indice specificato nella tabella.
Le applicazioni in genere non implementano l'interfaccia ITextRange . Le soluzioni di testo Microsoft, ad esempio i controlli rich edit, implementano ITextRange come parte dell'implementazione tom.
Le applicazioni possono recuperare un puntatore ITextRange chiamando il metodo Range .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | tom.h |
Vedi anche
Informazioni concettuali