tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルmsFlexGridについて
記事No13089
投稿日: 2008/10/05(Sun) 18:40
投稿者おじん
毎日読ませていただいて、勉強しております。今、
.ScrolBar=3(flexScrollBarBoth)として
Width=10,col(0)=2,col(1)=4,col(2)=6とし
(説明のため数値の単位は適当です)
また、cols=3,rows=16で、データ量は、row数は32、col数は3です。
ここでMSFlexGridにデータを展開したとき、
rowバーは表示されるがcolバーが表示されません。
col=3は、10-(2+4)=4 でcol3の6-4=2の部分が見えない。
ですが、scrollできません。これ、

Q1:MSFlexGridの仕様なのでしょうか。
Q2:Scrollする方法は。ScrollBarを表示する方法は?

自分は、AllowUserRising=flexRrsizeColumnsと、
FormSizeを変えていますが、知恵がないようで。
ご教授いただけたら幸いです。

[ツリー表示へ]
タイトルRe: msFlexGridについて
記事No13090
投稿日: 2008/10/05(Sun) 20:36
投稿者花ちゃん
どのような状態なのかよく理解できませんので、再現できるコードを投稿
ねがいませんか? サイズ関係はすべてプログラムで設定して下さい。

又、その画面を一般用掲示板の方に投稿して頂いたらどのような状態か理解できると
思いますが。

単なるセルの幅が狭いだけって事はないですよね。
(MSFlexGrid のバックの黒い部分が見えている)

[ツリー表示へ]
タイトルRe:解決しました
記事No13091
投稿日: 2008/10/06(Mon) 05:00
投稿者おじん
> 単なるセルの幅が狭いだけって事はないですよね。
> (MSFlexGrid のバックの黒い部分が見えている)

おっしゃるとおり「幅をひろげればよい」のですがわがままな事情がありました。
以下で再現できます。

Private Sub Form_Load()
With MSFlexGrid1
    .Width = 4455
    .Cols = 3
    .Rows = 2
    .FixedCols = 2           '<----ここに原因があるようです
    .ColWidth(0) = 5 * 150
    .ColWidth(1) = 5 * 150
    .ColWidth(2) = 20 * 150
    .ScrollBars = flexScrollBarBoth
    .AllowUserResizing = flexResizeColumns
    .TextMatrix(0, 2) = "あいうえおかきくけこさしすせそたちつてと"
End With
End Sub

理由はわかりませんが .FixedCols=1 とすると ScrollBar は表示されます。
2のままでやりたい場合の問題は残りますが調べてみます。
ご指導、ありがどうございました。

[ツリー表示へ]
タイトルRe^2:解決しました
記事No13092
投稿日: 2008/10/06(Mon) 07:14
投稿者花ちゃん
現状では左端一杯までスクロールした状態なのでそれ以上はスクロールするものが
ないからバーも表示しないだけですよね、行でも同じ事がいえますよね
スプレッドシートの場合列や行単位でスクロールさせていて、テキストボックスの
ようなものは、表示位置(ドット)を移動させているというイメージですかね。

下記のようにすれば、理由がよく解るかと
With MSFlexGrid1
    .Width = 4455
'    .Height = 400   'コメントを外して試して見て下さい
    .Cols = 4
    .Rows = 2
    .FixedCols = 2
    .ColWidth(0) = 5 * 150
    .ColWidth(1) = 5 * 150
    .ColWidth(2) = 0        'これを追加する
    .ColWidth(3) = 20 * 150
    .ScrollBars = flexScrollBarBoth
    .AllowUserResizing = flexResizeColumns
    .TextMatrix(0, 3) = "あいうえおかきくけこさしすせそたちつてと"
End With


下記の方が解りやすいかな

With MSFlexGrid1
    .Width = 4455
    .Cols = 4
    .Rows = 2
    .FixedCols = 2
    .ColWidth(0) = 5 * 150
    .ColWidth(1) = 5 * 150
    .ColWidth(2) = 20 * 150
    .ColWidth(3) = 0        'これを追加する
    .ScrollBars = flexScrollBarBoth
    .AllowUserResizing = flexResizeColumns
    .TextMatrix(0, 2) = "あいうえおかきくけこさしすせそたちつてと"
End With

[ツリー表示へ]
タイトルRe^3:解決しました
記事No13093
投稿日: 2008/10/06(Mon) 08:50
投稿者おじん
重ねて、ありがとうございます。
動作原理を考えずに、できた、できないで試行錯誤しているから
何時までたっても進歩しないのだと反省しました。

[ツリー表示へ]