[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/12/18(Sun) 20:42
投稿者名:hasimoto
Eメール:
URL :
タイトル:
MSFlexGridで設定した画像について
Win98seVB6
MSFlexGridでRowHeightプロパティーを255に設定してセルに16×16ピクセルの画像(
ビットマップ)をロードしています。そこである行を非表示にする時に、
Form1.MSFlexGrid1.RowHeight(3) = 1などと処理していますが、すると直ぐ上の行のセルに
非表示設定したセルの画像の頭半分が食い込んだ状態になり、その後スクロールしたり
しても、その状態のままです。テキストではそのような事は起こりません。
解決方法はありますでしょうか?宜しくお願いします。

投稿時間:2005/12/18(Sun) 21:54
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSFlexGridで設定した画像について
そのようには表示されませんが?
表示されるコードを投稿して見て下さい。

Private Sub Form_Load()
    With MSFlexGrid1
        .RowHeight(-1) = 255
        .Row = 1
        .Col = 1
    Set .CellPicture = LoadPicture("c:\test.bmp")
        .Row = 2
        .Col = 2
    Set .CellPicture = LoadPicture("c:\test.bmp")
        .Row = 3
        .Col = 3
    Set .CellPicture = LoadPicture("c:\test.bmp")
        .RowHeight(2) = 1   '6 以下なら見えない
    End With
End Sub

投稿時間:2005/12/19(Mon) 21:26
投稿者名:hasimoto
Eメール:
URL :
タイトル:
Re^2: MSFlexGridで設定した画像について
> そのようには表示されませんが?
> 表示されるコードを投稿して見て下さい。
>
> Private Sub Form_Load()
>     With MSFlexGrid1
>         .RowHeight(-1) = 255
>         .Row = 1
>         .Col = 1
>     Set .CellPicture = LoadPicture("c:\test.bmp")
>         .Row = 2
>         .Col = 2
>     Set .CellPicture = LoadPicture("c:\test.bmp")
>         .Row = 3
>         .Col = 3
>     Set .CellPicture = LoadPicture("c:\test.bmp")
>         .RowHeight(2) = 1   '6 以下なら見えない
>     End With
> End Sub
花ちゃんさん有難う御座います。花ちゃんさんのコードで試したところ、確かに
そのような現象は起きませんでした。これから少し調査したいと思います。
原因がわかったら報告させて下さい。

投稿時間:2005/12/19(Mon) 22:11
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: MSFlexGridで設定した画像について
セルをマージしていませんか?

投稿時間:2005/12/19(Mon) 23:49
投稿者名:hasimoto
Eメール:
URL :
タイトル:
Re^4: MSFlexGridで設定した画像について
> セルをマージしていませんか?

マージ機能は使用したことは有りませんが、プロパティウィンドウで0になっていることを確認
しました。

ところで、フォームをロードした時にセルに画像を設定した時は上手くいくのですが、実は
CSVファイルから読み込めるようにもしていますが、それがまずいんじゃないでしょうか?

以下コード(少し簡略化していますが同様の現象が起きます。)
Form1.MSFlexGrid1.Rows = 1

With Form1.MSFlexGrid1
'   .Visible = False

intFileNo = FreeFile
Open App.Path & "\Data\10.dat" For Input As #intFileNo

lngCountI = 1
Do Until EOF(intFileNo)

Input #intFileNo, a, b, c, d, e
Form1.MSFlexGrid1.AddItem ""
.Row = lngCountI
    .Col = 1: .CellPictureAlignment = flexAlignCenterCenter
            Set .CellPicture = LoadPicture(App.Path & "\test.bmp")
    .RowHeight(lngCountI) = e
lngCountI = lngCountI + 1
Loop
Close #intFileNo

' .Visible = True
End With

eにはセルの高さが格納されています。それでこのようにすると、eが0にしている
時はやはり途中で画像が食い込みます。またeを全て225(255ではなく225の間違いでした)
の時は、とりあえず全て表示されますが、非表示にするとやはり画像が半分残った
形で上のセルに食い込みます。csvファイルから読み込んで画像を設定するとこのような
現象が起きます。スクロールや、ウィンドウの切替え等で、表示が戻ればいいのですが
完全に不自然な形で残っているみたいです。読み込み方に問題は無いような気がするのですが
、一体どうしたらいいんだろう。
お気づきの点がありましたら宜しくお願いします。

投稿時間:2005/12/20(Tue) 10:50
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: MSFlexGridで設定した画像について
自分が作成したコードを色々試して解らない物を他人に見てもらうなら
一部のコードではなく、ペーストして試したら現象が確認できるもので
ないと誰も試そうと思わないのでは。(私が投稿したコードのように)
それにこのコードを使って貴方の環境で現象が再現できるのですか? 
同じコードを使っているのですか?
このコードではファイルから画像を読み込んで表示しているように見えませんが?
取り合えず、その現象が再現できるだけのシンプルなコードを作って見て下さい。
そうする事によって原因が究明できるかと思います。
それで解らなければそのコードを投稿して下さい。

投稿時間:2005/12/20(Tue) 11:24
投稿者名:hasimoto
Eメール:
URL :
タイトル:
Re^6: MSFlexGridで設定した画像について
不手際があり申し訳有りませんでした。
環境win98se,VB6
自分のコードは複雑なので同じ現象が生じるシンプルなコードを作成しました。
コピーペーストで実行できます。
-------------------------------------------------
Private Sub Command1_Click()

    Dim e      As String
    Dim lngCountI      As Long
    Dim intFileNo As Integer    'ファイルNo

Form1.MSFlexGrid1.Rows = 1

With Form1.MSFlexGrid1

intFileNo = FreeFile
Open App.Path & "\test.dat" For Input As #intFileNo

lngCountI = 1
Do Until EOF(intFileNo)

Input #intFileNo, e
Form1.MSFlexGrid1.AddItem ""
.Row = lngCountI
    .Col = 1: .CellPictureAlignment = flexAlignCenterCenter
            Set .CellPicture = LoadPicture(App.Path & "\test.bmp")
    .RowHeight(lngCountI) = e
lngCountI = lngCountI + 1
Loop
Close #intFileNo

End With

End Sub
-------------------------------------------------
Private Sub Form_Click()

    With MSFlexGrid1
        .RowHeight(2) = 1   '6 以下なら見えない
    End With

End Sub
-------------------------------------------------
そしてカレントフォルダにtest.datを作成して中身を以下のようにします。
"225"
"225"
"225"
"225"
"225"
"0"
"225"
"225"
"225"
"225"
"0"
"0"
"0"
-------------------------------------------------
すると画像を読み込んだ時0の位置で、そしてフォームをクリックした時にも
同様の現象が起きます。

投稿時間:2005/12/20(Tue) 12:41
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: MSFlexGridでの画像設定
.CellPictureAlignment = 0 or 3 or 6 の設定でご使用下さい。

投稿時間:2005/12/20(Tue) 22:11
投稿者名:hasimoto
Eメール:
URL :
タイトル:
有難う御座いました。
> .CellPictureAlignment = 0 or 3 or 6 の設定でご使用下さい。
そういうことなんですか。
色々有難う御座いました。