SPREAD上でズームを行うと、ハイパーリンク型セルにあるリンクがクリックできなくなる
対象製品
SPREAD for Windows Forms 8.0J
状況
修正済み
詳細
SPREAD上でズームを行うと、ハイパーリンク型セルにあるリンクがクリックできなくなる現象が発生します。
【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.A1セルのXYZ付近にマウスカーソルを移動します
--マウスカーソルが変化せず、クリックしてもハイパーリンク機能が動作しません
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' ハイパーリンク型セルの設定
Dim link As New FarPoint.Win.Spread.CellType.HyperLinkCellType()
link.Text = "ABC or XYZ."
link.Links = New String() {"ABC", "XYZ"}
link.LinkAreas = New LinkArea() {New LinkArea(0, 3), New LinkArea(7, 3)}
FpSpread1.ActiveSheet.Cells(0, 0).CellType = link
FpSpread1.ActiveSheet.Columns(0).Width = 100
' 拡大表示
FpSpread1.ZoomFactor = 1.6
End Sub
【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.A1セルのXYZ付近にマウスカーソルを移動します
--マウスカーソルが変化せず、クリックしてもハイパーリンク機能が動作しません
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' ハイパーリンク型セルの設定
Dim link As New FarPoint.Win.Spread.CellType.HyperLinkCellType()
link.Text = "ABC or XYZ."
link.Links = New String() {"ABC", "XYZ"}
link.LinkAreas = New LinkArea() {New LinkArea(0, 3), New LinkArea(7, 3)}
FpSpread1.ActiveSheet.Cells(0, 0).CellType = link
FpSpread1.ActiveSheet.Columns(0).Width = 100
' 拡大表示
FpSpread1.ZoomFactor = 1.6
End Sub
回避方法
Service Pack 3(v8.0.3505.2008)で修正済み。
Service Pack 3(v8.0.3505.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
以下のサンプルコードのように、ハイパーリンク型セルを継承した独自のセル型を使用します。
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' ハイパーリンク型セルの設定
'Dim link As New FarPoint.Win.Spread.CellType.HyperLinkCellType()
Dim link As New MyHyperLinkCellType()
link.Text = "ABC or XYZ."
link.Links = New String() {"ABC", "XYZ"}
link.LinkAreas = New LinkArea() {New LinkArea(0, 3), New LinkArea(7, 3)}
FpSpread1.ActiveSheet.Cells(0, 0).CellType = link
FpSpread1.ActiveSheet.Columns(0).Width = 100
' 拡大表示
FpSpread1.ZoomFactor = 1.6
End Sub
Public Class MyHyperLinkCellType
Inherits FarPoint.Win.Spread.CellType.HyperLinkCellType
Public Overrides Function IsReservedLocation(g As Graphics, x As Integer, y As Integer, rc As Rectangle, appearance As FarPoint.Win.Spread.Appearance, value As Object,
zoomFactor As Single) As Object
If zoomFactor <> 1 Then
Dim f As New Font(appearance.Font.FontFamily, zoomFactor * appearance.Font.Size)
appearance.Font = f
End If
Return MyBase.IsReservedLocation(g, x, y, rc, appearance, value,
zoomFactor)
End Function
End Class
Service Pack 3(v8.0.3505.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
以下のサンプルコードのように、ハイパーリンク型セルを継承した独自のセル型を使用します。
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' ハイパーリンク型セルの設定
'Dim link As New FarPoint.Win.Spread.CellType.HyperLinkCellType()
Dim link As New MyHyperLinkCellType()
link.Text = "ABC or XYZ."
link.Links = New String() {"ABC", "XYZ"}
link.LinkAreas = New LinkArea() {New LinkArea(0, 3), New LinkArea(7, 3)}
FpSpread1.ActiveSheet.Cells(0, 0).CellType = link
FpSpread1.ActiveSheet.Columns(0).Width = 100
' 拡大表示
FpSpread1.ZoomFactor = 1.6
End Sub
Public Class MyHyperLinkCellType
Inherits FarPoint.Win.Spread.CellType.HyperLinkCellType
Public Overrides Function IsReservedLocation(g As Graphics, x As Integer, y As Integer, rc As Rectangle, appearance As FarPoint.Win.Spread.Appearance, value As Object,
zoomFactor As Single) As Object
If zoomFactor <> 1 Then
Dim f As New Font(appearance.Font.FontFamily, zoomFactor * appearance.Font.Size)
appearance.Font = f
End If
Return MyBase.IsReservedLocation(g, x, y, rc, appearance, value,
zoomFactor)
End Function
End Class