文字列がすべて表示されていてもテキストチップが表示される場合がある
対象製品
SPREAD for Windows Forms 7.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
【サンプルコード】
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 6(v7.0.2019.2008)で修正済み。
Service Pack 6(v7.0.2019.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
Service Pack 6(v7.0.2019.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