忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

VB.NET:Spread(GrapeCity)セルのチップウインドウで別に設定された文字列を表示する
SPREADのアクティブシートへ設定した文字列データが、 セル上に収まりきらない場合テキストチップとして表示させることができます。

SPREADコントロールの「TextTipPolicy」プロパティを「Floating」に設定することで、 セル上にマウスを移動した時に、セルに設定されている文字列がテキストチップとして表示されます。

以下のソースでは、TextTipFetchイベントでの処理を行うことで、 セルのTextに設定された文字列とは別のものを表示する処理を行っています。

フォームロード時にSPREADの初期化を行い、 アクティブシートのカラム数を6に設定し、ヘッダ行数を0でクリア設定しています。 また、「TextTipPolicy」プロパティを「Floating」に設定しています。

フォーム表示後、ボタンをクリックすると、 クリックイベント内で宣言された固定的なテストデータをSPREADに設定し表示させます。
データの1行分毎の処理で、「RowCount」プロパティを+1して行を追加します。 行の追加した後で、3個のセルに対して別々の値を設定しています。 2カラム目の「Tag」にテキストチップとして表示する文字列を設定しています。

「TextTipFetch」イベントでは対象となる2カラム目の場合のみ「Tag」から表示文字列を取得し チップテキストに設定しています。尚、カラムフッタ、カラムヘッダ、行ヘッダは処理を省いています。

Public Class Form1
    'フォームロード時にSPREADの初期化
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'SPREADのアクティブシートのカラム数を3に設定
        Me.FpSpread1.ActiveSheet.ColumnCount = 3
        'SPREADの行クリア
        Me.FpSpread1.ActiveSheet.RowCount = 0
        'TextTip表示指定
        Me.FpSpread1.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Floating
    End Sub

    'ボタンクリックでカラム連結処理
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'ボタン不可設定
        sender.Enabled = False
        'ソースが長くなるのでWith宣言
        With Me.FpSpread1.ActiveSheet
            '描画を停止させる
            Me.FpSpread1.SuspendLayout()
            'データの行数分の処理
            For i As Integer = 0 To 9999
                '行数を増やす
                .RowCount += 1
                '各セルへのデータ設定
                '第1カラムはボタン(ButtonCellType)
                Dim buttonCell As New FarPoint.Win.Spread.CellType.ButtonCellType
                buttonCell.Text = i.ToString("0000")     'ボタンのキャプション
                .Cells(i, 0).CellType = buttonCell

                '第2カラムはテキスト(TextCellType)
                Dim textCell As New FarPoint.Win.Spread.CellType.TextCellType
                .Cells(i, 1).CellType = textCell
                .Cells(i, 1).Text = "Test" & i.ToString("0000")
                'Tagにチップテキストの設定
                .Cells(i, 1).Tag = "ZZZZZZZZZZZZZZZZZ" & i.ToString("0000")

                '第3カラムはチェックボックス(CheckBoxCellType)
                Dim chkCell As New FarPoint.Win.Spread.CellType.CheckBoxCellType
                .Cells(i, 2).CellType = chkCell
                .Cells(i, 2).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center
                .Cells(i, 2).Value = CBool(i Mod 2 = 0)   '値はValueに設定
            Next
        End With
        '描画を再開させる
        Me.FpSpread1.ResumeLayout(True)
        'ボタン許可設定
        sender.Enabled = True
    End Sub

    'TextTipFetchイベント
    Private Sub FpSpread1_TextTipFetch(ByVal sender As Object, 
                        ByVal e As FarPoint.Win.Spread.TextTipFetchEventArgs) Handles FpSpread1.TextTipFetch
        'カラムフッタ、カラムヘッダ、行ヘッダは処理しない
        If e.ColumnFooter Or e.ColumnHeader Or e.RowHeader Then
            Exit Sub
        End If
        If Not e.FetchCellNote Then
            '2番目のカラム??
            If e.Column = 1 Then
                'Tagに退避してある文字列
                Dim text As String = e.View.GetSheetView().GetTag(e.Row, e.Column)
                'チップウィンドウとして表示
                e.ShowTip = True
                'ポップアップヒントのテキスト設定
                e.TipText = text
            End If
        End If
    End Sub
End Class

下図は、フォームが表示後「Button1」をクリックしてデータを表示させて、 マウスを5行目の2カラム目に持っていった時の表示です。



=====
2016/02/29:の時の情報











PR

コメント

コメントを書く