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

CTRL キーを押したまま、DELETE キーと BACKSPACE キーを模倣します。
ITextRange::EndOf

この範囲の末尾を、範囲内の最後の重なり合う単位の末尾に移動します。
ITextRange::Expand

この範囲を拡張して、含まれる部分単位が完全に含まれるようにします。
ITextRange::FindText

bstr で指定されたテキストを Count 文字まで検索します。 開始位置と方向も Count で指定され、一致条件は Flags によって指定されます。
ITextRange::FindTextEnd

範囲の End cp から始まる文字列 bstr を Count 文字まで検索します。
ITextRange::FindTextStart

範囲の開始 cp (cpFirst) から始まる文字列 bstr の Count 文字まで検索します。
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

挿入ポイントを、指定した単位数だけ前後に移動します。 範囲が生成されていない場合、範囲は Count に応じていずれかの末尾の挿入ポイントに折りたたまれてから移動されます。
ITextRange::MoveEnd

範囲の終了位置を移動します。
ITextRange::MoveEndUntil

範囲の末尾の Count 文字内に文字が見つかった場合は、Cset で指定された文字セット内にある最初の文字の文字位置に範囲の末尾を移動します。
ITextRange::MoveEndWhile

範囲の末尾を Count 文字、または Cset で指定された文字セットに含まれる連続するすべての文字の少ない方に移動します。
ITextRange::MoveStart

指定した方向の指定した単位数を範囲の開始位置に移動します。
ITextRange::MoveStartUntil

開始位置の Count 文字内に文字が見つかった場合に、Cset で指定された文字セット内にある最初の文字の位置を範囲の開始位置に移動します。
ITextRange::MoveStartWhile

範囲の開始位置を Count 文字、または Cset で指定された一連の文字に含まれる連続するすべての文字の少ない方に移動します。
ITextRange::MoveUntil

Cset で指定された文字セット内の最初の文字を Count 文字まで検索します。 文字が見つかった場合、範囲はそのポイントに折りたたまれます。 検索の開始と方向も 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) を指定した上または上 (Extend に応じて) に基づいて範囲を変更します。
ITextRange::SetRange

指定した値に範囲エンドポイントを調整します。
ITextRange::SetStart

この範囲の先頭の文字位置を設定します。
ITextRange::SetText

この範囲内のテキストを設定します。
ITextRange::StartOf

範囲の最初の重なり合う単位の先頭に範囲の末尾を移動します。

注釈

複数のテキスト範囲をアクティブにして、同じストーリーで協調的に動作し、ストーリーと共に進化させることができます。 たとえば、あるテキスト範囲が別のテキスト範囲の前に指定されたテキストを削除した場合、後者は変更を追跡します。 この意味では、テキスト範囲は Microsoft Word ブックマークに似ていますが、編集の変更も追跡します。 ただし、ブックマークはテキストを編集できませんが、テキスト範囲は編集できます。 また、範囲を使用すると、選択範囲やクリップボードを変更せずにテキストを操作できます。どちらもエンド ユーザーにとって重要です。 ITextSelection インターフェイスは ITextRange を継承し、ITextSelection のセクションで説明されているように、いくつかの UI 指向のメソッドとプロパティを追加します。

文字位置に基づくメソッドを使用して、テキスト範囲を確認できます。 具体的には、テキスト範囲は次の特徴があります。

  • 最初の文字位置 cpFirst。この位置は、範囲内の最初の文字の直前 (ストーリーの先頭を基準とする位置) を指します。
  • 範囲内の最後の文字の直後の挿入ポイントを指す 制限 位置 cpLim
ストーリーの最初の文字は cpFirst = 0 です。 cp 引数の値がストーリー内の文字数より大きい場合は、ストーリー内の文字数が代わりに使用されます。 cp 引数が負の場合は、代わりに 0 が使用されます。 Microsoft Visual Basic for Applicationsに慣れている方は、cpFirst プロパティ StartcpLim プロパティ End を呼び出します (範囲の開始位置も終了です)。

次の図では、文字位置は文字を区切る行で表されます。 対応する文字位置の値は、行の下に指定されます。 cpFirst = 5 から cpLim = 7 で終わる範囲には、2 文字の単語が含まれています。 この図がストーリーの完全なテキストを示している場合、ストーリーの長さは 30 です。

5 つの単語のうち 2 つの網掛けされた 30 文字のテキスト文字列の図 範囲の 長さはcpLim - cpFirst または End - Start で指定します。 長さが 0 の範囲は 、縮退 または の範囲と呼ばれ、 cp* 値が等しい 、つまり cpFirst = cpLim です。 縮退範囲の例として、現在の挿入ポイントがあります。 null 以外の選択範囲は、生成されていない範囲の例です。

前の図の網掛けされたセルによって示される 5 から 7 の範囲が、テキストを削除するように指示されるとします ( 「削除」を参照)。これにより、それ自体が挿入ポイントに変わります。 25 から 29 の範囲では、内容 (つまり単語テキスト) が自動的に追跡されます。 結果を次の図に示します。

28 文字のテキスト文字列の図。4 つの単語のうちの 1 つが網掛けされていますこの図では、テキストの範囲が cpFirst = 23 および cpLim = 27 に自動的に調整されました。 範囲の所有者は、編集中に範囲の文字位置の値を更新することを心配する必要はありません。

move メソッドの名前は、移動する終了を示しますが、いずれかのメソッドが一方の範囲の末尾を他方の範囲の後に移動しようとすると、両端がターゲット位置に移動されることに注意してください。 その結果、挿入ポイントはターゲット位置にあります。 概念は、 cpFirstcpLim は常に基本的な条件に従う必要があるということです

0 <= cpFirst<= cpLim<= # story の文字

または、範囲 r、0 <= r の場合と同等です。Start <= r。End <= r。StoryLength は、これらの数量の名前から期待されるものです。

もう 1 つの重要な機能は、すべてのストーリーに、最後に削除できない最終 CR (0xD) 文字が含まれていることです。 だから、空の物語でさえ、単一のキャラクター、すなわち最後のCRを持っています。 範囲は、この文字を選択できますが、それを超える挿入ポイントにすることはできません。 このしくみを確認するには、Wordドキュメントで最後の CR を選択し、右方向キーを押して折りたたみます。 ディレクトリ ツリーは最終的な CR の前に折りたたまれますが、CR は削除できません。 テキスト オブジェクト モデル (TOM) は同じ方法で機能します。 そのため、 r の場合は 。Start <= r。End 、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 の画面上の操作性を得るには、Wordドキュメントで Ctrl + 右方向キー (->) または Ctrl + ← (<—) を押したときにキャレットがどのように動くかをwatchします。

tomSentence

tomSentence 定数は、ピリオド、疑問符、または感嘆符で終わるテキストの文字列を表し、その後に 1 つ以上の ASCII 空白文字 (9 ~ 0xdおよび0x20)、または Unicode 段落区切り記号 (0x2029) が続きます。 末尾の空白は文の一部です。 ストーリーの最後の文には、ピリオド、疑問符、感嘆符は必要ありません。 ストーリーの開始は、ある文字列が文法的に文として修飾されていない場合でも、tomSentence の開始として修飾されます。 他の文は文末に続く必要があり、ピリオド、疑問符、感嘆符で始めることはできません。

tomParagraph

tomParagraph 定数は、段落末記号 (CRLF、CR、VT (Shift + ENTER の場合)、LF、FF、または 0x2029) で終わるテキストの文字列です。 TOM エンジンは、ストーリーの最後に常に削除できない段落末マークを持っています。 したがって、すべての TOM ストーリーには、少なくとも 1 つの tomWord、1 つの tomSentence、および 1 つの tomParagraph が自動的に含まれています。

tomLine

tomLine 定数は、ディスプレイが範囲に関連付けられている場合、ディスプレイ上の 1 行のテキストに対応します。 表示が範囲に関連付けられていない場合、tomLine は tomParagraph として扱われます。 選択範囲には、表示と、重複する範囲が自動的に含 まれます (「GetDuplicate」を参照)。 TOM エンジンとコンテキストによっては、他の範囲に表示されない場合があります。

一方または両方を Unit の観点から移動するメソッド ( MoveMoveEndMoveStart など) は、符号付き Count 引数に依存します。 ITextSelection 幾何学的な移動コマンドを除き、Count が 0 より大きい場合、移動する終了は前方 (ストーリーの末尾に向かって) 移動され、Count が 0 未満の場合、終了は後方 (開始方向) に移動します。 これらの Moveメソッドの Count の既定値は 1 です。 これらのメソッドは Count Units の移動を試みますが、移動はストーリーの終わりを超えることはありません。

文字列または文字列パターン ( MoveWhileMoveEndWhileMoveStartWhile など) と一致して一方または両方を移動するメソッドは、符号付き Count 引数によって指定された最大文字数まで移動できます。 Count が 0 より大きい場合、移動する末尾は前方に移動し、Count が 0 未満の場合は、末尾が後方に移動します。 tomForward と tomBackward の 2 つの特殊な Count 値が定義されています。 これらの値は、それぞれストーリーの最後と開始に到達することが保証されます。 Count の既定値は tomForward です。

Move* メソッドでは、Move、MoveWhileMoveUntil など、非生成の範囲を縮退するメソッドでは、Count が負の場合は cpFirst が変更され、Count が正の場合は cpLim が変更されます。 この移動の後、範囲のもう一方の端も新しい場所に移動します。 より具体的な Count 情報については、個々のメソッドを参照してください。 非生成範囲の場合、 MoveStartMoveEndMoveStartWhileMoveEndWhileMoveStartUntilMoveEndUntil の各メソッドは、開始位置 (Start) または終了位置 (End) のいずれかを移動します。

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

関連項目

概念

IDispatch

Text オブジェクト モデル

テキスト オブジェクト モデルの使用