QA@IT

VB.NET2008でSpread4.0の横スクロールを制御したい。

3785 PV

開発環境

OS: Windows XP
言語:VB.NET 2008
FW: .Net Framework3.5
サードパーティ:FarPoint Spread for Windows Forms 4.0

やりたいこと

画面内にSpreadが配置され、4列まではスクロールせずに見える画面があったとする。
時間の経過とともに列が順次増えるような作りの場合、最終列を表示エリアに
移すため、右スクロールを制御したい。

今までに行ったこと

画面内のボタンを押下した際、以下の処理を行うようにした。

Me.spsSheet.SetActiveCell(1, Me.spsSheet.Columns.Count)
Me.spsSheet.ActiveColumnIndex = Me.spsSheet.Columns.Count
Me.ActiveControl = sprSample

ボタン押下で上記処理を行った際は思った動きになったが、
タイマーで処理した際は最終列に移動できない。

ご存知の方、ご教授ください。

回答

旧FarPoint社から直接購入したバージョンなんでしょうかね。
とりあえずComponentOne(元FarPoint)のSpread For WinForms 7.0(Trial)で試しました。

spsSheetがシートを指すメンバ変数でsprSampleがFpSpreadコントロールだと仮定します。
(このあたり型がわかるようなコードなりコメントにしておいてほしかったです)

処理を以下のように変えてみてはどうでしょう

Me.spsSheet.SetActiveCell(1, Me.spsSheet.Columns.Count)
Me.spsSheet.ActiveColumnIndex = Me.spsSheet.Columns.Count
' Me.ActiveControl = sprSample
sprSample.ShowColumn(0, spsSheet.Columns.Count - 1, FarPoint.Win.Spread.HorizontalPosition.Center)

バージョンが異なるためメソッドがなかったり引数の形が異なる可能性はありますが、列までスクロールする場合はこのメソッドを利用します。
シートではなくスプレッドのメソッドであることに気を付けてください。

ちなみに元々のコードは7.0においてはボタンでも動作しませんでした(フォーカスは当たるがスクロールはしない)。

編集 履歴 (1)
ウォッチ

この質問への回答やコメントをメールでお知らせします。