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.
Il primo personaggio di una storia ha cpFirst = zero. Se un argomento cp ha un valore maggiore del numero di caratteri nella storia, viene invece usato il numero di caratteri nella storia. Se un argomento cp è negativo, viene invece usato zero. Per coloro che hanno familiarità con Microsoft Visual Basic, Applications Edition, chiamare la proprietà cpFirstStart e la proprietà cpLimEnd (anche se la posizione iniziale di un intervallo è anche una fine).

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.

Diagramma di una stringa di testo a 30 caratteri, con due delle cinque parole ombreggiate 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.

Diagramma di una stringa di testo a 28 caratteri, con una delle quattro parole ombreggiate 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

Idispatch

Modello a oggetti di testo

Utilizzo del modello a oggetti di testo