iTextRange 接口 (tom.h)
ITextRange 对象是功能强大的编辑和数据绑定工具,允许程序选择文章中的文本,然后检查或更改该文本。
继承
ITextRange 接口继承自 IDispatch 接口。 ITextRange 还具有以下类型的成员:
方法
ITextRange 接口具有这些方法。
ITextRange::CanEdit 确定是否可以编辑指定的区域。 |
ITextRange::CanPaste 确定是否可以使用指定格式将数据对象粘贴到当前区域中。 |
ITextRange::ChangeCase 根据 Type 参数更改此范围内的字母大小写。 |
ITextRange::Collapse 将指定的文本范围折叠为范围开头或结尾处的退化点。 |
ITextRange::Copy 将文本复制到数据对象。 |
ITextRange::Cut 根据 pVar 参数,将纯文本或格式文本剪切到数据对象或剪贴板。 |
ITextRange::D elete 模拟 DELETE 和 BACKSPACE 键,且不按下 CTRL 键。 |
ITextRange::EndOf 将此范围的末尾移动到该区域中最后一个重叠单位的末尾。 |
ITextRange::Expand 展开此范围,使其包含的任何分部单位都完全包含。 |
ITextRange::FindText 最多搜索 bstr 提供的文本的“计数字符”。 起始位置和方向也由 Count 指定,匹配条件由标志指定。 |
ITextRange::FindTextEnd 从范围的 End cp 开始,最多搜索字符串 bstr 的字符数。 |
ITextRange::FindTextStart 从范围的 Start cp (cpFirst) 开始搜索字符串 bstr 的字符数。 |
ITextRange::GetChar 获取范围起始位置处的字符。 |
ITextRange::GetDuplicate 获取此范围对象的副本。 |
ITextRange::GetEmbeddedObject 检索指向指定范围开头的嵌入对象的指针,即 cpFirst 处。 范围必须是插入点,或者必须仅选择嵌入对象。 |
ITextRange::GetEnd 获取范围的结束字符位置。 |
ITextRange::GetFont 获取具有指定范围的字符属性的 ITextFont 对象。 |
ITextRange::GetFormattedText 获取具有指定区域格式化文本的 ITextRange 对象。 |
ITextRange::GetIndex 检索指定范围 Start 字符位置处 Unit 参数的文字索引。 |
ITextRange::GetPara 获取具有指定范围的段落属性的 ITextPara 对象。 |
ITextRange::GetPoint 检索文本范围内开始或结束字符位置以及行内位置的屏幕坐标。 |
ITextRange::GetStart 获取范围的起始字符位置。 |
ITextRange::GetStoryLength 获取区域文章中的字符计数。 |
ITextRange::GetStoryType 获取范围文章的类型。 |
ITextRange::GetText 获取此区域中的纯文本。 Text 属性是 ITextRange 接口的默认属性。 |
ITextRange::InRange 确定此区域是位于指定区域内还是与指定区域位于同一文本中。 |
ITextRange::InStory 确定此范围的故事是否与指定范围的故事相同。 |
ITextRange::Isequal 确定此区域是否具有与指定范围相同的字符位置和文章。 |
ITextRange::Move 将插入点向前或向后移动指定数量的单位。 如果范围是非退化的,则范围将折叠到任一端的插入点,具体取决于 Count,然后移动。 |
ITextRange::MoveEnd 移动范围的结束位置。 |
ITextRange::MoveEndUntil 将范围的末尾移动到 Cset 指定的字符集中找到的第一个字符的字符位置,前提是该字符位于范围末尾的 Count 字符内。 |
ITextRange::MoveEndWhile 移动范围末尾或仅超过 Cset 指定的字符集中找到的所有连续字符,以较小者为准。 |
ITextRange::MoveStart 将范围的起始位置按指定方向移动指定单位数。 |
ITextRange::MoveStartUntil 移动该区域的起始位置,移动 Cset 指定的字符集中找到的第一个字符的位置,前提是该字符位于起始位置的 Count 字符内。 |
ITextRange::MoveStartWhile 移动范围“计数字符”或刚超过 Cset 指定的字符集中找到的所有连续字符的起始位置,以较小者为准。 |
ITextRange::MoveUntil 最多搜索 Cset 指定的字符集中的第一个字符的“计数”字符数。 如果找到字符,范围将折叠到该点。 搜索的开始和方向也由 Count 指定。 |
ITextRange::MoveWhile 从范围的指定末尾开始,并在字符属于 Cset 指定的集且字符数小于或等于 Count 时进行搜索。 |
ITextRange::P aste 粘贴指定数据对象中的文本。 |
ITextRange::ScrollIntoView 将指定区域滚动到视图中。 |
ITextRange::Select 将活动所选内容的开始和结束位置以及故事值设置为此范围的开始和结束位置。 |
ITextRange::SetChar 在范围的起始位置设置字符。 |
ITextRange::SetEnd 设置范围的结束位置。 |
ITextRange::SetFont 将此范围的字符属性设置为指定 ITextFont 对象的字符属性。 |
ITextRange::SetFormattedText 将此区域文本的格式化文本设置为指定区域的格式化文本。 |
ITextRange::SetIndex 将此范围更改为文章的指定单位。 |
ITextRange::SetPara 将此范围的段落属性设置为指定的 ITextPara 对象的段落属性。 |
ITextRange::SetPoint 根据扩展) 根据类型对齐 (x、y) 对齐的点,根据 (的指定点更改范围。 |
ITextRange::SetRange 将范围终结点调整为指定的值。 |
ITextRange::SetStart 设置此范围的开头的字符位置。 |
ITextRange::SetText 设置此范围中的文本。 |
ITextRange::StartOf 将范围结束移动到范围中第一个重叠单位的开头。 |
注解
多个文本范围可以处于活动状态,并协作处理同一个故事,并随着故事的发展而发展。 例如,如果一个文本范围删除另一个文本范围之前的指定文本,则后者将跟踪更改。 从这个意义上说,文本范围类似于 Microsoft Word书签,书签也跟踪编辑更改。 但是,书签不能编辑文本,而文本范围可以编辑。 此外,范围允许在不更改所选内容或剪贴板的情况下操作文本,这两者对最终用户都有价值。 ITextSelection 接口继承自 ITextRange,并添加一些面向 UI 的方法和属性,如 ITextSelection 部分中所述。
可以使用基于字符位置的方法查看文本范围。 具体而言,文本范围的特点是:
- 第一个字符位置 cpFirst,它指向紧邻第一个字符之前的插入点, (相对于范围中故事开头) 。
- 限制位置 cpLim,它指向紧跟在范围中最后一个字符之后的插入点。
在下图中,字符位置由分隔字母的行表示。 行下方提供了相应的字符位置值。 范围从 cpFirst = 5 开始,以 cpLim = 7 结尾包含双字母单词 is。 如果此图描绘了故事中的完整文本,则故事长度为 30。
范围的 长度 由 cpLim - cpFirst 提供,或等效的由 End - Start 提供。 长度为零的区域称为 退化 或 空 范围,其 cp* 值相等,即 cpFirst = cpLim。 退化范围的一个示例是当前插入点。 非 null 选择是非退化范围的一个示例。假设上图中阴影单元格指示的范围从 5 到 7,被告知删除其文本 (请参阅 删除) ,从而将自身转换为插入点。 范围从 25 到 29 将自动跟踪其内容,即单词文本。 下图显示结果。
在此图中,文本范围现已 自动 调整为 cpFirst = 23 且 cpLim = 27。 范围所有者无需担心在编辑时更新范围字符位置值。移动方法的名称指示要移动的终点,但请注意,如果任何方法尝试将一个范围移到另一个范围末尾,则两端都移动到目标位置。 因此,插入点位于目标位置。 概念是 cpFirst 和 cpLim 始终必须服从基本条件
0 <= cpFirst<= cpLim<= 故事中的 # 个字符
或等效于范围 r,0< = r。Start <= r。End <= r.StoryLength,这是你期望从这些数量的名称。
另一个重要功能是,所有故事都包含一个不可删除的最终 CR (0xD) 字符在末尾。 因此,即使是空故事也有一个字符,即最终的 CR。 范围可以选择此字符,但不能成为超出它的插入点。 若要查看其工作原理,请尝试在Word文档中选择最终 CR,然后按向右键将其折叠。 目录树将在最终 CR 之前折叠,但无法删除 CR。 文本对象模型 (TOM) 的工作方式相同。 因此,如果 r.Start <= r。“结束”,然后 是 r。End <= (r。StoryLength – 1) 。 有关删除 CR 的讨论,请参阅 删除。
某些方法依赖于 Unit 参数,该参数可以采用下表中列出的预定义值。
计价单位 | 值 | 含义 |
---|---|---|
tomCharacter | 1 | 字符。 |
tomWord | 2 | Word。 |
tomSentence | 3 | 句子。 |
tomParagraph | 4 | 段。 |
tomLine | 5 | 显示) 的行 (。 |
tomStory | 6 | 故事。 |
tomScreen | 7 | 对于 PAGE UP/PAGE Down) ,屏幕 (。 |
tomSection | 8 | 部分。 |
tomColumn | 9 | 表列。 |
tomRow | 10 | 表行。 |
tomWindow | 11 | 窗口的左上方或右下角。 |
tomCell | 12 | 表格单元格。 |
tomCharFormat | 13 | 运行常量字符格式。 |
tomParaFormat | 14 | 运行常量段落格式。 |
tomTable | 15 | 表。 |
tomObject | 16 | 嵌入对象。 |
大多数 单位 值都是不言自明的。 但是,为了进一步清楚起见,提供了以下说明。
tomWord
tomWord 常量是段落的结尾或字母数字或标点符号范围,包括后面的任何空白。 若要获得 tomWord 的屏幕感觉,watch在Word文档中按 CTRL+向右键 ((>) 或 CTRL+向左键 (<)) 时,插入符号的移动方式。tomSentence
tomSentence 常量描述以句点、问号或感叹号结尾的文本字符串,后跟一个或多个 ASCII 空格字符 (9 到0xd和0x20) ,或 Unicode 段落分隔符 (0x2029) 。 尾随空格是句子的一部分。 故事中的最后一句话不需要有句点、问号或感叹号。 故事的开头限定为 tomSentence 的开头,即使该字符串在语法上不限定为句子。 其他句子必须紧跟句子结尾,不能以句点、问号或感叹号开头。tomParagraph
tomParagraph 常量是由 SHIFT+ENTER) 、LF、FF 或 0x2029) 的段落尾标记 (CRLF、CR、VT (终止的文本字符串。 TOM 引擎在文章末尾始终有一个不可删除的段落结尾标记。 因此,所有 TOM 情景自动至少有一个 tomWord、一个 tomSentence 和一个 tomParagraph。tomLine
tomLine 常量对应于显示器上的一行文本,前提是显示器与该区域相关联。 如果没有与区域关联的显示,tomLine 将被视为 tomParagraph。 所选内容自动具有显示和重复区域 (请参阅 getDuplicate) 。 其他范围可能没有显示,具体取决于 TOM 引擎和上下文。移动一个或两个以 Unit 结尾的方法(如 Move、 MoveEnd 和 MoveStart)取决于有符号 的 Count 参数。 除 ITextSelection 几何移动命令外,如果 Count 大于零,则要移动的终点 (向故事) 末尾向前移动,如果 Count 小于零,则端点向后移动 (向开头) 。 这些 Move 方法的 Count 默认值为 1。 这些方法尝试移动 计数单位,但移动永远不会超出故事的末尾。
通过匹配的字符串或字符串模式(如 MoveWhile、 MoveEndWhile 和 MoveStartWhile)移动一端或两端的方法可以移动至带符号 Count 参数给出的最大字符数。 如果 Count 大于零,则要移动的端点向前移动,如果 Count 小于零,则向后移动端点。 定义了两个特殊 Count 值,即 tomForward 和 tomBackward。 保证这些值分别达到故事的结尾和开头。 Count 的默认值为 tomForward。
在将非退化范围转换为退化范围(如 Move、MoveWhile 和 MoveUntil)的 Move* 方法中,如果 Count 为负,则更改 cpFirst,如果 Count 为正值,则更改 cpLim。 在此移动之后,范围的另一端也会移动到新位置。 有关更具体的 计数 信息,请参阅各个方法。 对于非生成范围, MoveStart、 MoveEnd、 MoveStartWhile、 MoveEndWhile、 MoveStartUntil 和 MoveEndUntil 方法 (起始位置) 或结束位置 (结束) 。
若要选择与连续区域相对应的单位(如 tomWord、tomSentence 和 tomParagraph),请使用 MoveEnd 方法。 若要选择对应于非连续范围(如 tomObject)的单位,请使用 EndOf 方法,因为下一个对象可能发生在大量中间文本之后(如果有的话)。 若要选择 tomCell 单元,范围必须位于表中。
下面是 Count 和 Unit 参数的示例和进一步说明。 请注意,TOM 引擎可能不支持上表中的所有单元。 例如,丰富的编辑控件不提供节的概念,而是在给定 tomSection 时返回E_NOTIMPL。 但是,如果 TOM 引擎确实支持单位,则它具有表中给定的索引值。
应用程序通常不实现 ITextRange 接口。 Microsoft 文本解决方案(如富编辑控件)在 TOM 实现过程中实现 ITextRange 。
应用程序可以通过调用 Range 方法检索 ITextRange 指针。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | tom.h |
请参阅
概念性