テキスト 
テキストオブジェクトを取り扱います。Writer で入力された文字列やその書式などを変更しようとするなら,ここで取り上げるテキストオブジェクトにアクセスします。
テキストオブジェクトの取得 
テキストオブジェクトはさまざまなところから取得することができます。しかし,どこから取得しても同じオブジェクトが取得されていたりします。
Writer ドキュメントでは,ドキュメントオブジェクトからテキストオブジェクトを取得することができます。
Sub text_1
Dim oDoc As Object
Dim oText As Object
oDoc = ThisComponent
oText = oDoc.getText()
End Sub
oText 変数にテキストオブジェクトを取得しました。
色々な場所でのテキストオブジェクト 
上記には同じオブジェクトが取得されていたりする、と書きましたが、テキストフレーム内や表内などでは別のオブジェクトになります。そのなかのテキストを編集するときにはそこから取得してください。
テキストオブジェクトの文字列 
テキストオブジェクトが保持している部分に入力されている文字列は String プロパティーから取得できます。また,同じプロパティーを利用して文字列を設定することが出来ます。
テキストオブジェクトの範囲 
テキストオブジェクトには範囲があります。
oText = oDoc.getText()
として取得したテキストオブジェクトはドキュメント全体を含むテキストオブジェクトです。
テキストオブジェクトの範囲を変更するためにテキストオブジェクトから別のテキストオブジェクトの範囲を取得できるプロパティーがあります。テキストオブジェクトの最初の部分の Start プロパティーおよび最後の部分の End プロパティーです。
テキストカーソル 
テキストカーソルは,テキストオブジェクトと合わせて使用します。このテキストカーソルは,テキストオブジェクト中でテキストの範囲や位置を示すために使用されます。また,カーソル位置または範囲の文字や段落,ページのプロパティを変更するためにも使用します。
Sub textcursor_1
Dim oDoc As Object
Dim oText As Object
Dim oTextCursor As Object
oDoc = ThisComponent
oText = oDoc.getText()
oTextCursor = oText.createTextCursor()
End Sub
このようにテキストカーソルを作成できます。また,テキストカーソルが移動できる範囲を指定して作成することが出来ます。createTextCursorByRange メソッドに範囲を限定したいテキスト範囲オブジェクトを指定します。
oTextCursor = oText.createTextCursorByRange( oText.getEnd() )
このテキストカーソルを,テキストやテキストコンテンツを挿入する際の位置の指定に使用します。
挿入 
文字列やコントロールコード,テキストコンテンツの挿入を取り上げます。
文字列の挿入 
文字列の挿入には insertString メソッドを使用します。
void insertString ( XTextRange xRange, string sString, boolean bAbsorb )
- xRange: テキストカーソルなどの範囲。
- sString: 挿入する文字列。改段落: cr,改行: lf も使用できる。
- bAbsorb: xRange のテキストを置換するかどうか。true のとき置換される。false では xRange の直前に挿入される。
コントロール文字の挿入 
改行や改ページといったコントロール文字を入力するために使用します。
void insertControlCharacter ( XTextRange xRange,
integer nControll, boolean bAbsorb )
- xRange: テキストカーソルなどの範囲。
- nControll: 挿入するコントロール文字。com.sun.star.text.ControlCharacter の定数で指定する。
Constants of com.sun.star.text.ControlCharacter |
PARAGRAPH_BREAK | 改段落 |
LINE_BREAK | 改行 |
HARD_HYPHEN | ハイフネーション抑制用 |
SOFT_HYPHEN | ハイフネーション位置の指定 |
HARD_SPACE | 二つの単語を分割しないように指定 |
APPEND_PARAGRAPH | 新しい段落 |
- bAbsorb: xRange のテキストを置換するかどうか。true のとき置換される。false では xRange の直前に挿入される。
テキストコンテンツの挿入 
テキストコンテンツというのは,通常の文字列ではなく,表やフィールドといったオブジェクトです。
void insertTextContent ( XTextRange xRange,
XTextContent xContent, boolean bAbsorb )
- xRange: テキストカーソルなどの範囲。
- xContent: 挿入するテキストコンテンツ
- bAbsorb: xRange のテキストを置換するかどうか。true のとき置換される。false では xRange の直前に挿入される。
テキストコンテンツの削除 
テキストコンテンツは removeTextContent メソッドで削除できます。
void removeTextContent ( XTextContent xContent )
テキスト範囲の比較 
二つのテキスト範囲の位置関係を調べる方法です。
開始位置の比較 
二つのテキスト範囲の開始位置を比較する。
integer compareRegionStarts ( XTextRange xR1, XTextRange xR2 )
- xR1: 比較するテキスト範囲オブジェクト
- xR2: 比較するテキスト範囲オブジェクト
このメソッドは次のような戻り値を持ちます。
- 1: xR1 の方が先に始まっているとき
- 0: xR1 と xR2 が同じ位置から始まっているとき
- -1: R2 の方が先に始まっているとき
終了位置の比較 
二つのテキスト範囲の終了位置を比較する。
integer compareRegionEnds ( XTextRange xR1, XTextRange xR2 )
- xR1: 比較するテキスト範囲オブジェクト
- xR2: 比較するテキスト範囲オブジェクト
このメソッドは次のような戻り値を持ちます。
- 1: xR1 の方が先に終わっているとき
- 0: xR1 と xR2 が同じ位置から始まっているとき
- -1: R2 の方が先に終わっているとき
テキストコンテンツの挿入 
新たに挿入するテキストコンテンツを別のテキストコンテンツの直前または直後に挿入するメソッドがあります。
新たに前の位置にテキストコンテンツを挿入するメソッド。
void insertTextContentBefore ( XTextContent xNewContent,
XTextContent xSuccessor )
- xNewContent: 新しく挿入するテキストコンテンツ
- xSuccessor: このテキストコンテンツの前に xNewContent が新しく挿入される
新たに後ろの位置にテキストコンテンツを挿入するメソッド。
void insertTextContentAfter ( XTextContent xNewContent,
XTextContent xPredecessor )
- xNewContent: 新しく挿入するテキストコンテンツ
- xPredecessor: このテキストコンテンツの後ろに xNewContent が新しく挿入される
テキストコンテンツの削除 
テキストコンテンツの前後のテキストコンテンツを削除するメソッドがあります。
指定したテキストコンテンツの前のテキストコンテンツを削除するメソッド removetextContentBefore。
void removeTextContentBefore ( XTextContent xSuccessor )
- xSuccessor: 前のテキストコンテンツを削除したいテキストコンテンツ
表の前の空の段落を削除するのに役に立ちます。
指定したテキストコンテンツの後ろのテキストコンテンツを削除するメソッド removeTextContentAfter。
void removeTextContentAfter ( XTextContent xPredecessor )
- xSuccessor: 後ろのテキストコンテンツを削除したいテキストコンテンツ
ヘッダ,フッタまたはテキストフレーム中で表の後ろの空の段落を削除するのに役に立ちます。
挿入時の Absorb 引数 
insertString メソッドなどでテキストを入力するときの引数に、現在のカーソルが選択しているテキストを置き換えるかどうかを指定する Absorb があります。連続して挿入するときには False を指定すると、カーソルを collapseToEnd などで調整せずに済みます。