Copyright © GrapeCity inc. All rights reserved.
True DBGrid for WinForms
セルにテキストと画像を同時に表示する
データ表示テクニック > ValueItems を使ってデータを自動的に変換する > セルにテキストと画像を同時に表示する

特定の列でテキスト/画像変換を実行するようにValueItemCollection オブジェクトを設定すると、Value 文字列とDisplayValue bitmap ビットマップの両方を同じセル内に表示できます。それには、C1TrueDBGrid デザイナを使用する で ValueItems ノードの下にある AnnotatePicture プロパティを選択します。また、コードを記述する場合は、次のようにします。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Me.C1TrueDBGrid1.Columns("Country").ValueItems.AnnotatePicture = True

C# コードの書き方

C#
コードのコピー
this.c1TrueDBGrid1.Columns["Country"].ValueItems.AnnotatePicture = true;

セルのテキストに対するビットマップの水平方向の配置は、列の StyleオブジェクトのHorizontalAlignment およびForeGroundPicturePosition の各プロパティによって決定されます。これら2つのプロパティに対応する列挙体オブジェクトは、それぞれ AlignHorzEnum オブジェクトと ForegroundPicturePositionEnum オブジェクトです。次の例では、HorizontalAlignmentAlignHorzEnum.Generalに設定しています。 Country 列は文字列フィールドを表すため、セルテキストは左揃えになります。ただし、ForeGroundPicturePosition プロパティが ForegroundPicturePosition.Near(デフォルト)に設定されているため、ビットマップがセルの左端に配置され、残ったスペース内でセルテキストが左揃えに配置されます。

また、ForeGroundPicturePosition プロパティを ForegroundPicturePositionEnum.Far に変更すると、セルテキストは通常どおり左揃えになり、ビットマップは右揃えになります。

セルテキストをビットマップの下に配置し、両方のアイテムを中央揃えにするには、HorizontalAlignment プロパティをAlignHorzEnum.Center に、ForeGroundPicturePosition プロパティを ForegroundPicturePositionEnum.TopofTextに設定します。

メモ:HorizontalAlignment プロパティと ForeGroundPicturePosition プロパティの有効な組み合わせについては、前景画像を表示するを参照してください。

編集中、エディタでは、セルのテキスト部分にあるスペース全体を使用できます。ValueItemCollection オブジェクトの Presentation プロパティがコンボボックスオプションの1つに設定されている場合は、編集が完了するまで、ビットマップは変更されません。

ここまでの例では、テキストがデータベースに格納されているままの状態で書式設定されずに表示されています。しかし、画像と書式設定されたテキストの両方を表示することもできます。ValueItem オブジェクトが実行できる変換は1回だけなので、ValueItems だけでこれを実現することはできません。ただし、FormatText イベントを使ってテキストを変換し、ValueItemCollection オブジェクトを使用して、変換されたテキスト(基礎データ値ではない)を画像に関連付けることができます。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Me.C1TrueDBGrid1.Columns("Country").NumberFormat = "FormatText Event"

C# コードの書き方

C#
コードのコピー
this.c1TrueDBGrid1.Columns["Country"].NumberFormat = "FormatText Event";

このコード例では、NumberFormat プロパティが FormatText イベントを発生する特別な値に設定されています。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Private Sub C1TrueDBGrid1_FormatText(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FormatTextEventArgs) Handles C1TrueDBGrid1.FormatText
 
    Select Case e.Value
        Case "CAN"
            e.Value = "Canada"
        Case "UK"
            e.Value = "United Kingdom"
        Case "USA"
            e.Value = "United States"
        Case "JPN"
            e.Value = "Japan"
        Case "AUS"
            e.Value = "Australia"
    End Select
End Sub

C# コードの書き方

C#
コードのコピー
private void C1TrueDBGrid1_FormatText( object sender, C1.Win.C1TrueDBGrid.FormatTextEventArgs e)
{
    switch (e.value) 
    {
        case "CAN":
            e.value = "Canada";
                   break;
        case "UK":
            e.value = "United Kingdom";
                   break;
        case "USA":
            e.value = "United States";
                   break;
        case "JPN":
            e.value = "Japan";
                   break;
        case "AUS":
            e.value = "Australia";
                   break;
    }
}

FormatText イベントによって、データベースに格納されている国コードを表示用の実際の国名に変換するために、ValueItemCollection オブジェクトの各 ValueItemValue プロパティを適切に変更する必要があります。

HorizontalAlignment プロパティと ForeGroundPicturePosition プロパティを上の例と同様に設定した場合は、次のように、基礎データが説明テキストと画像の両方で表示されます。

メモ:画像の DisplayValue は、ステータスコードや許容値の数が比較的少ないフィールドを変換するために適しています。 ValueItemCollection オブジェクトが提供する画像表示メカニズムより一般的なメカニズムが必要な場合は、FetchCellStyle イベントと ForeGroundPicturePosition プロパティを組み合わせて使用することによって、セルごとに任意の画像を表示できます。詳細については、前景画像を表示するを参照してください。

関連トピック