MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > セル型 > 編集可能なセル型 > リッチテキスト型セル |
リッチテキスト型セルを使用すると、セル内のテキストを複数の色およびフォントで表示できます。
リッチテキスト型セルとその各属性を設定するには、RichTextCellType クラスを使用します。
リッチテキスト型セルは、セル内のテキストを書式設定し、RTF ファイル(リッチテキスト形式ファイル)を読み込むための実行時メニューを備えます。このメニューには、切り取り、コピー、貼り付け、削除、すべてを選択などの基本的な編集機能も含まれています。実行時にこのメニューを表示するには、セルが編集モードになっている必要があります。この状態でセルを右クリックすると、セルの内容を処理するためのメニューが表示されます。セル内のテキストの色、フォント、またはスタイルを設定するには、メニューを表示する前にこのテキストを強調表示しておきます。次の図は、このメニューの使用例を示します。
次の表では、コンテキストメニューの各項目について説明します。
メニュー項目 | 説明 |
---|---|
切り取り、コピー、貼り付け | 標準的なクリップボード操作。クリップボードに対し、セル データ(テキストと書式)の切り取り、コピー、および貼り付けを行います。 |
削除 | 選択したセル データ(テキストと書式)を削除します。 |
全て選択 | すべてのセル データ(テキストと書式)を削除します。 |
全てクリア | すべてのセル データ(テキストと書式)をクリアします。 |
ロード | ロードするRTFファイルを選択するための[ファイルを開く]ダイアログを開きます。 |
文字色 | 選択したテキスト、または以降に入力するテキストに適用する色を指定するためのカラーパレットを開きます。 |
フォント | 選択したテキスト、または以降に入力するテキストに適用するフォントフェイスおよびフォントサイズを指定するための、フォント選択ダイアログを開きます。 |
スタイル | 選択したテキスト、または以降に入力するテキストに適用するフォントスタイル(太字、斜体、または下線)を指定するためのメニューを開きます。 |
配置 | テキストの行揃えを設定するためのメニューを開きます。 |
リッチテキスト型セルを最初に編集したとき、またはテキストがロードされたとき、このセルに RTF文字列のデータおよび書式情報が設定されます。これ以降、このセル、列、または行の外観を設定しても(フォント、テキスト色、行揃えなど)、既存テキストは影響を受けません。既存テキストの書式情報はすでに設定されているためです。新たな設定を既存文字列に適用するには、このセル内のデータおよび書式を完全に消去する必要があります。
コードでは、セルを表すCellクラスのValueプロパティに、RTFファイルの内容をRTFコードとして読み込むことができます。また、任意のRTFコードを直接設定することもできます。
セルが編集され、変更された場合、行揃えなどのプロパティの設定が適用されないことがあります。多くの書式設定(フォント、テキスト色、行揃えなど)は、セルの値と関連付けられた、隠れたRTFコードとして設定されています。たとえば、すべての編集処理に先がけてCellクラスのHorizontalAlignmentプロパティが設定された場合、この設定は正しく反映されます。しかし、編集後にこのプロパティを設定すると、予期した結果が得られない場合があります。 RTFでは、隠れた書式設定がRTF文字列内に埋め込まれており、この書式設定は、セルのValueプロパティを使用して解析または表示することができます。
リッチテキスト型セルの自動サイズ調整を有効にしており、複数のフォントを使用している場合、セル幅が数ピクセル分ずれることがあります。
リッチテキスト型セルからテキストを削除すると、セル内には非NULL文字列が設定されます。 ISBLANKおよびCOUNTBLANK数式関数では、こうした非NULL文字列は空白とみなされないため、予期しない結果となる可能性があります。
RichTextCellTypeクラスのWordWrapプロパティがTrueに設定されている状態で、SheetViewクラスのGetPreferredRowHeightメソッドを使用すると、わずかに高さが増加する可能性があります。この現象は、折り返した行の最後の文字が罫線上にある時に発生します。
リッチテキスト型セルは編集コントロールとして、Microsoft .NET Frameworkで提供されるRichTextBoxクラスを使用しています。拡張文字セットに対応するフォント(たとえばMSP明朝)を使用している文字列に対して、これらの文字セットをサポートしないフォント(たとえばTahoma)を設定することはできません。つまりRichTextBoxでは、スクリプトベースの日本語フォントを西洋フォントに変更することができないということです。 |
RichTextCellType クラスのインスタンスを作成して、クラスの各プロパティを設定します。セルに設定する場合はCellクラスの、行に設定する場合はRowクラスの、列に設定する場合はColumnクラスの、あるいはスタイルに設定する場合はStyleInfoクラスのCellTypeプロパティに、定義したRichTextCellTypeクラスのインスタンスを割り当てます。
次のサンプルコードは、セルをリッチテキスト型セルに設定し、セルのValueプロパティにRTFコードを設定します。
C# |
コードのコピー
|
---|---|
FarPoint.Win.Spread.CellType.RichTextCellType rtf = new FarPoint.Win.Spread.CellType.RichTextCellType(); rtf.WordWrap = true; rtf.Multiline = true; fpSpread1.ActiveSheet.Cells[0, 0].CellType = rtf; fpSpread1.ActiveSheet.Columns[0].Width = 300; fpSpread1.ActiveSheet.Rows[0].Height = 150; fpSpread1.ActiveSheet.Cells[0, 0].Value = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033 {\fonttbl{\f0\fscript\fprq2\fcharset0 Comic Sans MS;} {\f1\froman\fprq2\fcharset0 Times New Roman;} {\f2\fswiss\fcharset0 Arial;}}{\colortbl ;\red128 \green0\blue128;\red0\green255\blue255;\red255\green0\ blue0;\red0\green255\blue0;\red0\green0\blue255;} \viewkind4\uc1\pard\cf1\b\f0\fs24 Testing\cf2\b0\fs28 \cf3 \f1\fs40 1... \cf4\i 2... \cf5\ul\i0 3...\cf0\f2\fs20\par}"; |
Visual Basic |
コードのコピー
|
---|---|
Dim rtf As New FarPoint.Win.Spread.CellType.RichTextCellType() rtf.WordWrap = True rtf.Multiline = True FpSpread1.ActiveSheet.Cells(0, 0).CellType = rtf FpSpread1.ActiveSheet.Columns(0).Width = 300 FpSpread1.ActiveSheet.Rows(0).Height = 150 FpSpread1.ActiveSheet.Cells(0, 0).Value = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033" + _ "{\fonttbl{\f0\fscript\fprq2\fcharset0 Comic Sans MS;}" + _ "{\f1\froman\fprq2\fcharset0 Times New Roman;}" + _ "{\f2\fswiss\fcharset0 Arial;}}" + _ "{\colortbl ;\red128\green0\blue128;\red0\green255\blue255;" + _ "\red255\green0\blue0;" + _ "\red0\green255\blue0;\red0\green0\blue255;}" + _ "\viewkind4\uc1\pard\cf1\b\f0\fs24 Testing\cf2\b0\fs28" + _ " \cf3\f1\fs40 1... \cf4\i 2... \cf5\ul\i0 3...\cf0\f2\fs20\par" + _ "}" |
次のサンプルコードはRTFファイルをセルのValueプロパティに読み込みます。
C# |
コードのコピー
|
---|---|
System.IO.TextReader f = System.IO.File.OpenText("your_file.rtf"); string bits; bits = f.ReadToEnd(); f.Close(); fpSpread1.ActiveSheet.Cells[0, 0].CellType = new FarPoint.Win.Spread.CellType.RichTextCellType(); fpSpread1.ActiveSheet.Cells[0, 0].Value = bits; |
Visual Basic |
コードのコピー
|
---|---|
Dim f AS System.IO.TextReader = System.IO.File.OpenText("your_file.rtf") Dim bits As String bits = f.ReadToEnd() f.Close() FpSpread1.ActiveSheet.Cells(0, 0).CellType = New FarPoint.Win.Spread.CellType.RichTextCellType() FpSpread1.ActiveSheet.Cells(0, 0).Value = bits |