文字列がすべて表示されていてもテキストチップが表示される場合がある

文書番号 : 39295     文書種別 : 不具合     登録日 : 2016/02/04     最終更新日 : 2016/04/04
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
状況
修正済み
詳細
文字列がすべて表示されている場合にもテキストチップが表示される場合があります。

【サンプルコード】
  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' ポップアップヒントポリシー定義
    FpSpread1.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Floating
    FpSpread1.TextTipDelay = 100

    ' テストデータの設定
    FpSpread1.ActiveSheet.Cells(0, 0).Value = "ABCDEFG"
  End Sub
回避方法
Service Pack 2(v8.0.3503.2008)で修正済み。
Service Pack 2(v8.0.3503.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

TextTipFetchイベントで文字列の長さを判別して明示的に表示と非表示を制御します。

【サンプルコード】
  Private Sub FpSpread1_TextTipFetch(sender As Object, e As FarPoint.Win.Spread.TextTipFetchEventArgs) Handles FpSpread1.TextTipFetch
    ' シートの取得
    Dim sheet As FarPoint.Win.Spread.SheetView = e.View.GetSheetView()

    ' 対象セルのフォントの取得
    Dim f As Font = sheet.Cells(e.Row, e.Column).Font
    If f Is Nothing Then f = sheet.Columns(e.Column).Font
    If f Is Nothing Then f = DirectCast(sender, FarPoint.Win.Spread.FpSpread).Font

    ' 文字列の幅の取得
    Dim width As Integer = TextRenderer.MeasureText(e.TipText, f).Width

    ' 文字列の表示領域の幅の取得
    Dim p1 As Integer = sheet.Cells(e.Row, e.Column).CellPadding.Left
    If p1 = 0 Then p1 = sheet.Columns(e.Column).CellPadding.Left
    Dim p2 As Integer = sheet.Cells(e.Row, e.Column).CellPadding.Right
    If p2 = 0 Then p2 = sheet.Columns(e.Column).CellPadding.Right
    width += p1
    width += p2

    ' セルの幅が文字列の表示領域の幅よりも広い場合
    If sheet.Columns(e.Column).Width > width Then
      ' テキストチップは表示しません
      e.ShowTip = False
    End If
  End Sub