Partager via


Interface ITextRange (tom.h)

Les objets ITextRange sont de puissants outils d’édition et de liaison de données qui permettent à un programme de sélectionner du texte dans un article, puis d’examiner ou de modifier ce texte.

Héritage

L’interface ITextRange hérite de l’interface IDispatch. ITextRange a également les types de membres suivants :

Méthodes

L’interface ITextRange possède ces méthodes.

 
ITextRange ::CanEdit

Détermine si la plage spécifiée peut être modifiée.
ITextRange ::CanPaste

Détermine si un objet de données peut être collé, à l’aide d’un format spécifié, dans la plage actuelle.
ITextRange ::ChangeCase

Modifie la casse des lettres dans cette plage en fonction du paramètre Type.
ITextRange ::Collapse

Réduit la plage de texte spécifiée en un point dégénéré au début ou à la fin de la plage.
ITextRange ::Copy

Copie le texte dans un objet de données.
ITextRange ::Cut

Coupe le texte brut ou enrichi dans un objet de données ou dans le Presse-papiers, en fonction du paramètre pVar.
ITextRange ::D elete

Imite les touches DELETE et BACKSPACE, avec et sans la touche Ctrl enfoncée.
ITextRange ::EndOf

Déplace les extrémités de cette plage vers la fin de la dernière unité qui se chevauche dans la plage.
ITextRange ::Expand

Développe cette plage afin que toutes les unités partielles qu’elle contient soient entièrement contenues.
ITextRange ::FindText

Recherche jusqu’à Nombre de caractères pour le texte donné par bstr. La position de départ et la direction sont également spécifiées par Count, et les critères de correspondance sont donnés par indicateurs.
ITextRange ::FindTextEnd

Recherche jusqu’à Compter les caractères pour la chaîne, bstr, en commençant par fin cp de la plage.
ITextRange ::FindTextStart

Recherche jusqu’à Nombre de caractères pour la chaîne, bstr, en commençant par le cp (cpFirst) de la plage.
ITextRange ::GetChar

Obtient le caractère à la position de début de la plage.
ITextRange ::GetDuplicate

Obtient un doublon de cet objet de plage.
ITextRange ::GetEmbeddedObject

Récupère un pointeur vers l’objet incorporé au début de la plage spécifiée, c’est-à-dire à cpFirst. La plage doit être un point d’insertion ou sélectionner uniquement l’objet incorporé.
ITextRange ::GetEnd

Obtient la position de caractère de fin de la plage.
ITextRange ::GetFont

Obtient un objet ITextFont avec les attributs de caractère de la plage spécifiée.
ITextRange ::GetFormattedText

Obtient un objet ITextRange avec le texte mis en forme de la plage spécifiée.
ITextRange ::GetIndex

Récupère l’index d’histoire du paramètre Unit à la position de caractère de début de la plage spécifiée.
ITextRange ::GetPara

Obtient un objet ITextPara avec les attributs de paragraphe de la plage spécifiée.
ITextRange ::GetPoint

Récupère les coordonnées d’écran pour la position du caractère de début ou de fin dans la plage de texte, ainsi que la position intraligne.
ITextRange ::GetStart

Obtient la position du caractère de début de la plage.
ITextRange ::GetStoryLength

Obtient le nombre de caractères dans l’histoire de la plage.
ITextRange ::GetStoryType

Obtenez le type de l’histoire de la plage.
ITextRange ::GetText

Obtient le texte brut de cette plage. La propriété Text est la propriété par défaut de l’interface ITextRange.
ITextRange ::InRange

Détermine si cette plage se trouve dans ou dans le même texte qu’une plage spécifiée.
ITextRange ::InStory

Détermine si l’histoire de cette plage est identique à l’histoire d’une plage spécifiée.
ITextRange ::IsEqual

Détermine si cette plage a les mêmes positions de caractères et l’histoire que celles d’une plage spécifiée.
ITextRange ::Move

Déplace le point d’insertion vers l’avant ou vers l’arrière un nombre spécifié d’unités. Si la plage n’est pas dégénérée, la plage est réduite à un point d’insertion à chaque extrémité, en fonction du nombre, puis est déplacée.
ITextRange ::MoveEnd

Déplace la position de fin de la plage.
ITextRange ::MoveEndUntil

Déplace la fin de la plage vers la position de caractère du premier caractère trouvé qui se trouve dans l’ensemble de caractères spécifié par Cset, à condition que le caractère se trouve dans nombre de caractères de la fin de la plage.
ITextRange ::MoveEndWhile

Déplace la fin de la plage, soit compter les caractères, soit simplement dépasser tous les caractères contigus qui se trouvent dans l’ensemble de caractères spécifié par Cset, selon la valeur la moins importante.
ITextRange ::MoveStart

Déplace la position de début de la plage le nombre d’unités spécifié dans le sens spécifié.
ITextRange ::MoveStartUntil

Déplace la position de début de la plage la position du premier caractère trouvé qui se trouve dans l’ensemble de caractères spécifié par Cset, à condition que le caractère se trouve dans nombre de caractères de la position de début.
ITextRange ::MoveStartWhile

Déplace la position de début de la plage Soit nombre de caractères, soit juste au-delà de tous les caractères contigus qui se trouvent dans l’ensemble de caractères spécifié par Cset, selon la valeur la moins importante.
ITextRange ::MoveUntil

Recherche jusqu’à Compter les caractères pour le premier caractère de l’ensemble de caractères spécifié par Cset. Si un caractère est trouvé, la plage est réduite à ce point. Le début de la recherche et la direction sont également spécifiés par Count.
ITextRange ::MoveWhile

Commence à l’extrémité spécifiée d’une plage et recherche alors que les caractères appartiennent à l’ensemble spécifié par Cset et que le nombre de caractères est inférieur ou égal à Count.
ITextRange ::P aste

Colle le texte d’un objet de données spécifié.
ITextRange ::ScrollIntoView

Fait défiler la plage spécifiée dans l’affichage.
ITextRange ::Select

Définit les positions de début et de fin, ainsi que les valeurs d’histoire de la sélection active, sur celles de cette plage.
ITextRange ::SetChar

Définit le caractère à la position de départ de la plage.
ITextRange ::SetEnd

Définit la position de fin de la plage.
ITextRange ::SetFont

Définit les attributs de caractères de cette plage sur ceux de l’objet ITextFont spécifié.
ITextRange ::SetFormattedText

Définit le texte mis en forme de ce texte de plage sur le texte mis en forme de la plage spécifiée.
ITextRange ::SetIndex

Remplace cette plage par l’unité spécifiée de l’article.
ITextRange ::SetPara

Définit les attributs de paragraphe de cette plage sur ceux de l’objet ITextPara spécifié.
ITextRange ::SetPoint

Modifie la plage en fonction d’un point spécifié jusqu’à (en fonction de l’extension) du point (x, y) aligné en fonction du type.
ITextRange ::SetRange

Ajuste les points de terminaison de plage aux valeurs spécifiées.
ITextRange ::SetStart

Définit la position du caractère pour le début de cette plage.
ITextRange ::SetText

Définit le texte de cette plage.
ITextRange ::StartOf

Déplace la fin de la plage jusqu’au début de la première unité qui se chevauche dans la plage.

Remarques

Plusieurs plages de texte peuvent être actives et travailler en coopération sur la même histoire et évoluer avec l’histoire. Par exemple, si une plage de texte supprime le texte spécifié avant une autre plage de texte, cette dernière effectue le suivi de la modification. En ce sens, les plages de texte sont similaires aux signets Microsoft Word, qui effectuent également le suivi des modifications. Toutefois, les signets ne peuvent pas modifier le texte, contrairement aux plages de texte. En outre, les plages vous permettent de manipuler du texte sans modifier la sélection ou le Presse-papiers, qui sont tous deux utiles pour les utilisateurs finaux. L’interface ITextSelection hérite d’ITextRange et ajoute des méthodes et des propriétés orientées interface utilisateur, comme décrit dans la section sur ITextSelection.

Vous pouvez examiner une plage de texte à l’aide de méthodes basées sur les positions des caractères. Plus précisément, une plage de texte se caractérise par :

  • Première position du premier caractère, cpFirst, qui pointe vers un point d’insertion qui précède immédiatement le premier caractère (par rapport au début de l’histoire) dans la plage.
  • Position limite , cpLim, qui pointe vers un point d’insertion immédiatement après le dernier caractère de la plage.
Le premier personnage d’une histoire a cpFirst = zéro. Si un argument cp a une valeur supérieure au nombre de caractères dans l’article, le nombre de caractères dans l’article est utilisé à la place. Si un argument cp est négatif, zéro est utilisé à la place. Pour ceux qui connaissent Microsoft Visual Basic pour Applications, appelez la propriété cpFirstStart et la propriété cpLimEnd (même si la position de départ d’une plage est également une fin).

Dans la figure suivante, les positions des caractères sont représentées par les lignes qui séparent les lettres. Les valeurs de position de caractère correspondantes sont indiquées sous les lignes. La plage commençant à cpFirst = 5 et se terminant à cpLim = 7 contient le mot à deux lettres est . Si cette figure représente le texte complet d’une histoire, la longueur de l’histoire est de 30.

Diagramme d’une chaîne de texte de 30 caractères, avec deux des cinq mots ombrés La longueur d’une plage est donnée par cpLim - cpFirst ou de manière équivalente par End - Start. Une plage de longueur nulle est appelée plage dégénérée ou vide et a des valeurs cp* égales, c’est-à-dire cpFirst = cpLim. Le point d’insertion actuel est un exemple de plage dégénérée. Une sélection non null est un exemple de plage non générée.

Supposons que la plage de 5 à 7 indiquée par les cellules ombrées dans la figure précédente soit invitée à supprimer son texte (voir Supprimer), se transformant ainsi en point d’insertion. La plage comprise entre 25 et 29 permet de suivre automatiquement son contenu, à savoir le texte du mot. L’illustration suivante montre le résultat.

Diagramme d’une chaîne de texte de 28 caractères, avec l’un des quatre mots ombré Dans cette figure, la plage de texte a maintenant été automatiquement ajustée pour avoir cpFirst = 23 et cpLim = 27. Le propriétaire de la plage n’a pas à se soucier de la mise à jour des valeurs de position des caractères de plage en cas de modification.

Les noms des méthodes de déplacement indiquent la fin à déplacer, mais notez que si une méthode tente de déplacer une plage au-delà de l’autre, les deux extrémités sont déplacées vers la position cible. Par conséquent, le point d’insertion se trouve à la position cible. Le concept est que cpFirst et cpLim doivent toujours obéir à la condition fondamentale

0 <= cpFirst<= cpLim<= # caractères dans l’histoire

ou équivalent pour une plage r, 0 <= r. Start <= r. End <= r. StoryLength, qui est ce que vous attendez des noms de ces quantités.

Une autre fonctionnalité importante est que tous les récits contiennent un caractère cr final (0xD) nondeletable à la fin. Ainsi, même une histoire vide a un seul caractère, à savoir le CR final. Une plage peut sélectionner ce caractère, mais ne peut pas devenir un point d’insertion au-delà de celui-ci. Pour voir comment cela fonctionne, essayez de sélectionner le cr final dans un document Word, puis appuyez sur la flèche droite pour le réduire. L’arborescence de répertoires est réduite avant le cr final, mais la cr ne peut pas être supprimée. Le modèle d’objet texte (TOM) fonctionne de la même façon. Donc, si r. Start <= r. Fin, puis r. End <= (r. StoryLength – 1). Pour une discussion sur la suppression d’un CR, consultez Supprimer.

Certaines méthodes dépendent d’un argument Unit , qui peut prendre les valeurs prédéfinies répertoriées dans le tableau suivant.

Unité Valeur Signification
tomCharacter 1 Caractère.
tomWord 2 Word.
tomSentence 3 Phrase.
tomParagraph 4 Paragraphe.
tomLine 5 Ligne (à l’écran).
tomStory 6 Histoire.
tomScreen 7 Écran (comme pour PAGE UP/PAGE DOWN).
tomSection 8 Section.
tomColumn 9 Colonne de table.
tomRow 10 Ligne de tableau.
tomWindow 11 En haut à gauche ou en bas à droite de la fenêtre.
tomCell 12 Cellule de tableau.
tomCharFormat 13 Exécution de mise en forme de caractères constants.
tomParaFormat 14 Exécution de la mise en forme de paragraphes constants.
tomTable 15 Table.
tomObject 16 Objet incorporé.
 

La plupart des valeurs Unit sont explicites. Toutefois, les descriptions suivantes sont fournies pour plus de clarté.

tomWord

La constante tomWord est une fin de paragraphe ou une étendue d’alphanumériques ou de ponctuation, y compris les espaces qui suivent. Pour obtenir une idée à l’écran de tomWord, watch comment le signe d’insertion se déplace lorsque vous appuyez sur Ctrl+Flèche droite (—>) ou Ctrl+Flèche gauche (<—) dans un document Word.

tomSentence

La constante tomSentence décrit une chaîne de texte qui se termine par un point, un point d’interrogation ou un point d’exclamation et est suivie d’un ou de plusieurs espaces blancs ASCII (9 à 0xd et 0x20) ou du séparateur de paragraphe Unicode (0x2029). L’espace blanc de fin fait partie de la phrase. La dernière phrase d’une histoire n’a pas besoin d’avoir un point, un point d’interrogation ou un point d’exclamation. Le début d’une histoire est considéré comme le début d’une tomSentence, même si la chaîne n’est pas qualifiée de phrase grammaticalement. Les autres phrases doivent suivre une fin de phrase et ne peuvent pas commencer par un point, un point d’interrogation ou un point d’exclamation.

tomParagraph

La constante tomParagraph est une chaîne de texte terminée par une marque de fin de paragraphe (CRLF, CR, VT (pour MAJ+ENTRÉE), LF, FF ou 0x2029). Les moteurs TOM ont toujours une marque de fin de paragraphe non modifiable à la fin d’une histoire. Ainsi, toutes les histoires TOM ont automatiquement au moins un tomWord, un tomSentence et un tomParagraph.

tomLine

La constante tomLine correspond à une ligne de texte sur un affichage, à condition qu’un affichage soit associé à la plage. Si aucun affichage n’est associé à une plage, tomLine est traité comme tomParagraph. Une sélection a automatiquement un affichage et une plage qui est un doublon (voir GetDuplicate). D’autres plages peuvent ne pas avoir d’affichage, selon le moteur tom et le contexte.

Les méthodes qui déplacent une ou les deux extrémités en termes d’unité, telles que Move, MoveEnd et MoveStart, dépendent de l’argument Count signé. À l’exception des commandes de mouvement géométrique ITextSelection , si Count est supérieur à zéro, les extrémités à déplacer sont déplacées vers l’avant (vers la fin de l’histoire), et si Count est inférieur à zéro, les extrémités sont déplacées vers l’arrière (vers le début). La valeur par défaut de Count pour ces méthodes Move est 1. Ces méthodes tentent de déplacer les unités de comptage, mais le mouvement n’est jamais au-delà de la fin de l’histoire.

Les méthodes qui déplacent une extrémité ou les deux en faisant correspondre des chaînes de caractères ou des modèles de chaîne, tels que MoveWhile, MoveEndWhile et MoveStartWhile, peuvent atteindre un nombre maximal de caractères donné par l’argument Count signé. Si Count est supérieur à zéro, les extrémités à déplacer sont déplacées vers l’avant, et si Count est inférieur à zéro, les extrémités sont déplacées vers l’arrière. Deux valeurs count spéciales, tomForward et tomBackward, sont définies. Ces valeurs sont garanties pour atteindre la fin et le début de l’histoire, respectivement. La valeur par défaut de Count est tomForward.

Dans les méthodes Move* qui transforment une plage non dégénérée en une plage dégénérée, comme Move, MoveWhile et MoveUntil, cpFirst est modifié si Count est négatif et cpLim est modifié si Count est positif. Après ce mouvement, l’autre extrémité de la plage est également déplacée vers le nouvel emplacement. Consultez les méthodes individuelles pour obtenir des informations plus spécifiques sur le nombre . Pour les plages non générées, les méthodes MoveStart, MoveEnd, MoveStartWhile, MoveEndWhile, MoveStartUntil et MoveEndUntil déplacent la position de départ (Début) ou la position de fin (Fin).

Pour sélectionner une unité qui correspond à une plage contiguë, telle qu’un tomWord, tomSentence et tomParagraph, utilisez la méthode MoveEnd . Pour sélectionner une unité qui correspond à une plage non contiguë, telle que tomObject, utilisez la méthode EndOf , car l’objet suivant peut se produire après un texte intermédiaire substantiel, le cas échéant. Pour sélectionner une unité tomCell, la plage doit se trouver à l’intérieur d’une table.

Des exemples et des explications supplémentaires des arguments Count et Unit suivent. Notez que les moteurs TOM peuvent ne pas prendre en charge toutes les unités du tableau ci-dessus. Par exemple, les contrôles d’édition enrichis n’offrent pas les concepts des sections, mais retournent plutôt E_NOTIMPL lorsqu’ils sont donnés tomSection. Toutefois, si un moteur TOM prend en charge une unité, il a la valeur d’index indiquée dans la table.

En général, les applications n’implémentent pas l’interface ITextRange . Les solutions de texte Microsoft, telles que les contrôles d’édition enrichis, implémentent ITextRange dans le cadre de leur implémentation TOM.

Les applications peuvent récupérer un pointeur ITextRange en appelant la méthode Range .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête tom.h

Voir aussi

Conceptuel

IDispatch

Modèle objet texte

Utilisation du modèle objet texte