アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6.0で階層フレキシブル グリッド コントロールを
3個をそれぞれ明細部・縦計部・横計部として使用して、
スクロールを連動させて表示したいと思っています。
ただ、グリッドコントロールのそれぞれにスクロールバー
を表示させるのはあまり見栄えがよくないので、
垂直スクロールバーで、明細と横計の上下スクロール、
水平スクロールバーで、明細と縦計の左右スクロールを
制御しようと思い、
とりあえず、グリッドコントロールの
ScrollBarsプロパティーをflexScrollNoneに設定してTopRowプロパティーとLeftColプロパティーの値を
適当に設定してみたのですが、左上のセルは(1,1)
が表示されたままでした。

なんとか、うまくスクロールさせる方法はないでしょうか?

A 回答 (2件)

スクロールバーを表示していないと、スクロールできないみたいです。

(多分)
(ヘルプにはキーボードでの入力時の事しか書いてありませんでした。)

そこで、下記のようにしてみたらどうでしょう?

Private Sub HScroll1_Change()
  With MSHFlexGrid1(0)
    .Visible = False
    .ScrollBars = flexScrollBarHorizontal
    .LeftCol = HScroll1.Value
    .ScrollBars = flexScrollBarNone
    .Visible = True
  End With
End Sub

一部分だけですが・・・
(1)グリッドを非表示にする。(画面のちらつきが起こらないように)
(2)スクロールバーを表示する。
(3)左上のセルを変更する。
(4)スクロールバーを非表示に戻す。
(5)グリッドを表示する。

説明がなくても分かるとは思いますが念のため。
もっと、簡単な方法(設定)があったらすみません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えて頂いた方法でやることにします。
なんとか、しのげそうです。

お礼日時:2003/11/05 18:32

問題なく動きますが..



Private Sub MSHFlexGrid2_Scroll()
MSHFlexGrid1.LeftCol = MSHFlexGrid2.LeftCol
End Sub

この回答への補足

すいません、うまく伝わっていないようですね。

MSHFlexGridのScrollイベントじゃなくて、
VScrollとHScrollのChageイベントでMSHFlexGridを
スクロールさせたいんですよ。

時間があったので、こんな感じっていうのを
作ってみました。
--------------------------------------------------
Private Sub Form_Load()
Dim wR As Long
Dim wC As Long

With MSHFlexGrid1(0)
.ScrollBars = flexScrollBarNone
.FixedCols = 1
.FixedRows = 1
.Cols = 11
.Rows = 11
End With

With MSHFlexGrid1(1)
.ScrollBars = flexScrollBarNone
.FixedCols = 0
.FixedRows = 1
.Cols = 1
.Rows = 11
End With

With MSHFlexGrid1(2)
.ScrollBars = flexScrollBarNone
.FixedCols = 1
.FixedRows = 0
.Cols = 11
.Rows = 1
End With

For wR = 1 To 10
MSHFlexGrid1(1).TextMatrix(wR, 0) = _
"(" & Str(wR) & "," & Str(1) & ")"
For wC = 1 To 10
MSHFlexGrid1(0).TextMatrix(wR, wC) = _
"(" & Str(wR) & "," & Str(wC) & ")"
Next wC
Next wR

For wC = 1 To 10
MSHFlexGrid1(2).TextMatrix(0, wC) = _
"(" & Str(1) & "," & Str(wC) & ")"
Next wC

With VScroll1
.Min = 1
.Max = MSHFlexGrid1(0).Rows - 1
.SmallChange = 1
.LargeChange = 2
End With

With HScroll1
.Min = 1
.Max = MSHFlexGrid1(0).Cols - 1
.SmallChange = 1
.LargeChange = 2
End With

End Sub

Private Sub HScroll1_Change()
MSHFlexGrid1(0).LeftCol = HScroll1.Value
MSHFlexGrid1(2).LeftCol = HScroll1.Value
End Sub

Private Sub VScroll1_Change()
MSHFlexGrid1(0).TopRow = VScroll1.Value
MSHFlexGrid1(1).TopRow = VScroll1.Value
End Sub
--------------------------------------------------
コントロールの配置は、
MSHFlexGrid1はコントロール配列で、
MSHFlexGrid1(0)の右にMSHFlexGrid1(1)を、
さらに、MSHFlexGrid1(1)の右にVScroll1を隙間なく
配置します。
そして、MSHFlexGrid1(0)の下にMSHFlexGrid1(2)を、
MSHFlexGrid1(2)の右にHScroll1を隙間なく
配置します。

たぶん、ずれると思いますが雰囲気だけでも・・
+-----------------------+---------+△
|                       |         |H|
|                       |         |S|
|                       | MSHFlex |c|
|    MSHFlexGrid1(0)    |  Grid1  |r|
|                       |   (1)   |o|
|                       |         |l|
|                       |         |l|
|                       |         |1|
|                       |         | |
+-----------------------+---------+▽
|                       |
|    MSHFlexGrid1(2)    |
|                       |
+-----------------------+
<       VScroll1        >
 ----------------------- 

よろしければ、どこを直せばよいかアドバイスお願いします。

補足日時:2003/11/04 22:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!