ITextRange 介面 (tom.h)
ITextRange 對像是功能強大的編輯和數據系結工具,可讓程式選取本文中的文字,然後檢查或變更該文字。
繼承
ITextRange 介面繼承自 IDispatch 介面。 ITextRange 也有下列類型的成員:
方法
ITextRange 介面具有這些方法。
ITextRange::CanEdit 判斷是否可以編輯指定的範圍。 |
ITextRange::CanPaste 判斷是否可以使用指定的格式將數據物件貼到目前的範圍。 |
ITextRange::ChangeCase 根據 Type 參數變更此範圍中的字母大小寫。 |
ITextRange::Collapse 將指定的文字範圍折疊成範圍開頭或結尾的變質點。 |
ITextRange::Copy 將文字複製到資料物件。 |
ITextRange::Cut 根據 pVar 參數,將純文字或 RTF 剪下至數據物件或剪貼簿。 |
ITextRange::D elete 模擬 DELETE 和 BACKSPACE 鍵,且不含 CTRL 鍵。 |
ITextRange::EndOf 將此範圍的結尾移至範圍中最後一個重疊單位的結尾。 |
ITextRange::Expand 展開此範圍,使其包含的任何部分單位完全包含。 |
ITextRange::FindText 最多搜尋 bstr 所指定文字的計數位元。 起始位置和方向也會由 Count 指定,而比對準則則由 Flags 指定。 |
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 擷取 Unit 參數在指定範圍開始字元位置的本文索引。 |
ITextRange::GetPara 取得具有指定範圍的段落屬性的 ITextPara 物件。 |
ITextRange::GetPoint 擷取文字範圍中開始或結束字元位置的螢幕座標,以及行內的位置。 |
ITextRange::GetStart 取得範圍的開始字元位置。 |
ITextRange::GetStoryLength 取得範圍本文中的字元計數。 |
ITextRange::GetStoryType 取得範圍本文的類型。 |
ITextRange::GetText 取得這個範圍中的純文本。 Text 屬性是 ITextRange 介面的預設屬性。 |
ITextRange::InRange 判斷此範圍是否位於或與指定範圍相同的文字中。 |
ITextRange::InStory 判斷此範圍的本文是否與指定範圍的本文相同。 |
ITextRange::IsEqual 判斷此範圍是否具有與指定範圍相同的字元位置和本文。 |
ITextRange::Move 向前或向後移動插入點指定的單位數。 如果範圍是非產生的,範圍會折疊至任一端的插入點,視計數而定,然後移動。 |
ITextRange::MoveEnd 移動範圍的結束位置。 |
ITextRange::MoveEndUntil 將範圍的結尾移至位於 Cset 所指定字元集中之第一個字元的字元位置,前提是該字元位於範圍結尾的 Count 字元內。 |
ITextRange::MoveEndWhile 移動範圍結尾:Count 字元,或只超過 Cset 所指定字元集中找到的所有連續字元,無論哪一個都少。 |
ITextRange::MoveStart 將指定單位數目的範圍開始位置移至指定的方向。 |
ITextRange::MoveStartUntil 移動範圍開頭位置,前提是字元位於開始位置的 Count 字元內,就會移動 Cset 所指定字元集中找到的第一個字元位置。 |
ITextRange::MoveStartWhile 移動範圍開始位置:Count 字元,或只超過 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 根據根據 Type 對齊的 x、y (x、y) ,根據擴充) ,根據指定點或向上變更範圍 (。 |
ITextRange::SetRange 將範圍端點調整為指定的值。 |
ITextRange::SetStart 設定此範圍開頭的字元位置。 |
ITextRange::SetText 設定此範圍中的文字。 |
ITextRange::StartOf 將範圍結尾移至範圍中第一個重疊單位的開頭。 |
備註
多個文字範圍可以作用中,並合作處理相同的本文,並與本文一起演進。 例如,如果一個文字範圍在另一個文字範圍之前刪除指定的文字,後者會追蹤變更。 在此情況下,文字範圍類似於 Microsoft Word 書籤,也會追蹤編輯變更。 不過,書籤無法編輯文字,但文字範圍可以。 此外,範圍可讓您操作文字,而不需變更選取範圍或剪貼簿,這兩者對終端使用者而言都很重要。 ITextSelection 介面繼承自 ITextRange,並新增一些 UI 導向的方法和屬性,如 ITextSelection 一節中所述。
您可以根據字元位置使用方法查看文字範圍。 具體而言,文字範圍的特性如下:
- 第 一 個字元位置 cpFirst,指向緊接在第一個字元前面的插入點, (相對於範圍中本文開頭) 。
- 限制位置 cpLim,其指向緊接在範圍中最後一個字元後面的插入點。
在下圖中,字元位置會以分隔字母的行表示。 對應的字元位置值會在行下方提供。 從 cpFirst = 5 開始的範圍,結尾為 cpLim = 7 包含兩個字母字。 如果此圖描述本文中的完整文字,則本文長度為 30。
範圍的 長度 是由 cpLim - cpFirst 或對等的 End - Start 所指定。 長度為零的範圍稱為 變質 或 空 範圍,且具有相等 的 cp* 值,也就是 cpFirst = cpLim。 變質範圍的範例是目前的插入點。 非 Null 選取範圍是非泛型範圍的範例。假設上圖中陰影儲存格所指出的範圍從 5 到 7,會告知刪除其文字 (請參閱 刪除) ,進而將本身轉換成插入點。 範圍從 25 到 29 會自動追蹤其內容,也就是文字。 下圖顯示結果。
在此圖中,文字的範圍現在 已自動 調整為 cpFirst = 23 和 cpLim = 27。 範圍的擁有者不需要擔心在編輯時更新範圍字元位置值。移動方法的名稱會指出要移動哪一個端,但請注意,如果有任何方法嘗試移動一個範圍結束超過另一個範圍,則兩端都會移至目標位置。 因此,插入點位於目標位置。 概念是 cpFirst 和 cpLim 一律必須遵守基本條件
0 <= cpFirst<= cpLim<= # story 中的字元
或相當於範圍 r,0< = r。Start <= r。End <= r。StoryLength,這是您預期來自這些數量的名稱。
另一個重要功能是所有劇本在結尾包含無法刪除的最終CR (0xD) 字元。 因此,即使是空的劇本也有單一字元,也就是最後的CR。 範圍可以選取此字元,但無法成為超出它的插入點。 若要查看運作方式,請嘗試在 Word 檔中選取最後的CR,然後按向右鍵將其折疊。 目錄樹狀結構會在最終 CR 之前折疊,但無法刪除 CR。 文字物件模型 (TOM) 函式的方式相同。 因此,如果 r。Start <= r。End,then r.End <= (r。StoryLength – 1) 。 如需刪除 CR 的討論,請參閱 刪除。
某些方法相依於 Unit 自變數,可採用下表所列的預先定義值。
單位 | 值 | 意義 |
---|---|---|
tomCharacter | 1 | 字元。 |
tomWord | 2 | Word。 |
tomSentence | 3 | 句子。 |
tomParagraph | 4 | 段。 |
tomLine | 5 | 顯示) 上的線條 (。 |
tomStory | 6 | 故事。 |
tomScreen | 7 | 頁面向上/頁面向下) 的螢幕 (。 |
tomSection | 8 | 部分。 |
tomColumn | 9 | 數據表數據行。 |
tomRow | 10 | 數據表數據列。 |
tomWindow | 11 | 視窗的左上方或右下角。 |
tomCell | 12 | 表格格格。 |
tomCharFormat | 13 | 執行常數位元格式設定。 |
tomParaFormat | 14 | 執行常數段落格式設定。 |
tomTable | 15 | 資料表。 |
tomObject | 16 | 內嵌物件。 |
大部分 的 Unit 值都是自我說明。 不過,會提供下列描述,以進一步釐清。
tomWord
tomWord 常數是段落結尾或英數位元或標點符號的結尾,包括下列任何空白。 若要取得 tomWord 的螢幕體驗,watch 當您按下 CTRL+向右鍵 ( 時,插入號如何移動—) 或 CTRL+向左鍵 (<—> ) Word 檔中。tomSentence
tomSentence 常數描述以句點、問號或驚嘆號結尾的文字字串,後面接著一或多個 ASCII 空格符, (9 到0xd和0x20) ,或 Unicode 段落分隔符 (0x2029) 。 結尾空格符是句子的一部分。 本文中的最後一個句子不需要有句點、問號或驚嘆號。 本文開頭會限定為 tomSentence 的開頭,即使字串不符合文法的句子。 其他句子必須遵循句子結尾,且不能以句號、問號或驚嘆號開頭。tomParagraph
tomParagraph 常數是由結尾標記 (CRLF、CR、VT (終止的文字字串,適用於 SHIFT+ENTER) 、LF、FF 或0x2029) 。 TOM 引擎在本文結尾一律會有無法刪除的段落結尾標記。 因此,所有 TOM 劇本都會自動至少有一個 tomWord、一個 tomSentence 和一個 tomParagraph。tomLine
tomLine 常數會對應到顯示器上的一行文字,前提是顯示與範圍相關聯。 如果沒有顯示與某個範圍相關聯,tomLine 會被視為 tomParagraph。 選取範圍會自動顯示和重複 (的範圍,請參閱 GetDuplicate) 。 其他範圍可能沒有顯示器,視 TOM 引擎和內容而定。在 Unit 方面移動一或兩端的方法,例如 Move、 MoveEnd 和 MoveStart,取決於已簽署的 Count 自變數。 除了 ITextSelection 幾何行動命令之外,如果 Count 大於零,則要移動的結尾會向前移動 (到本文結尾) ,如果 Count 小於零,則結尾會向後移動 (向前) 。 這些Move方法的 Count 預設值為 1。 這些方法會嘗試移動 Count Units,但移動永遠不會超出本文的結尾。
藉由比對字元字串或字串模式移動一或兩端的方法,例如 MoveWhile、 MoveEndWhile和 MoveStartWhile,最多可以移至帶正負號 Count 自變數所指定的最大字元數。 如果 Count 大於零,則要移動的結尾會向前移動,如果 Count 小於零,則會向後移動結尾。 定義 tomForward 和 tomBackward 兩個特殊 Count 值。 這些值保證會分別到達結尾和本文的開頭。 Count 的預設值為 tomForward。
在Move* 方法中,將非產生範圍轉換成變質範圍的方法,例如Move、MoveWhile和MoveUntil,如果 Count為負數,則 cpFirst 會變更,如果 Count 為正數,則會變更 cpLim。 在此移動之後,該範圍的另一端也會移至新位置。 如需更多特定 計數 資訊,請參閱個別方法。 針對非質範圍,MoveStart、MoveEnd、MoveStartWhile、MoveEndWhile、MoveStartUntil 和 MoveEndUntil 方法會移動起始位置 (Start) 或結束位置 (End) 。
若要選取對應至連續範圍的單位,例如 tomWord、tomSentence 和 tomParagraph,請使用 MoveEnd 方法。 若要選取對應至非連續範圍的單位,例如 tomObject,請使用 EndOf 方法,因為下一個物件可能完全會在大量中繼文字之後發生。 若要選取 tomCell 單位,範圍必須位於數據表內。
以下是 Count 和 Unit 自變數的範例和進一步說明。 請注意,TOM 引擎可能不支持上表中的所有單位。 例如,豐富的編輯控件不提供區段的概念,而是在指定 tomSection 時傳回E_NOTIMPL。 不過,如果 TOM 引擎支援單位,它就會有數據表中提供的索引值。
應用程式通常不會實作 ITextRange 介面。 Microsoft 文字解決方案,例如豐富的編輯控件,會實作 ITextRange 作為其 TOM 實作的一部分。
應用程式可以藉由呼叫 Range 方法來擷取 ITextRange 指標。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | tom.h |
另請參閱
概念