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

投稿時間:2005/01/17(Mon) 00:48
投稿者名:みかん
Eメール:
URL :
タイトル:
ListView 幅設定が0以外は無視される
環境:WindowsXP VB6.0(SP6)

ListViewの幅設定をしたところ0以外の数値を設定しても値が無視され、
全て0(幅なし)扱いになります。0を設定すると初期幅で表示できます。
以下のようなモジュールを使って設定しているのですが、
他のListViewでは問題なく設定できたのに、設定できないListViewが出てきました。
他のListViewとの違いは、フレーム上に乗っていること位です。

このような現象をご存知の方がいらっしゃればアドバイスをお願いします。

Public Sub gsubLsvColSet( _
    ByRef lvwCtrl As ListView, _
    ByRef strLvwColTitle() As Variant, _
    ByRef intLvwColWidth() As Variant, _
    ByRef intLvwColAlignment() As Variant)

    Dim clmX As ColumnHeader
    Dim nIndex As Integer
    
    lvwCtrl.ListItems.Clear 'リストを削除
    lvwCtrl.View = lvwReport
    
    lvwCtrl.ColumnHeaders.Clear

        For nIndex = 0 To UBound(strLvwColTitle)
             Set clmX = lvwCtrl.ColumnHeaders.Add()
            clmX.Text = strLvwColTitle(nIndex)
            '-1は幅なし(0)とする
            If intLvwColWidth(nIndex) = -1 Then
                clmX.Width = 0
            ElseIf intLvwColWidth(nIndex) > 0 Then
                clmX.Width = intLvwColWidth(nIndex)
            End If
            
            '先頭列(text)は左寄せのみ
            If nIndex > 0 Then
                clmX.Alignment = intLvwColAlignment(nIndex)
            End If
        
        Next nIndex

End Sub

投稿時間:2005/01/17(Mon) 11:14
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ListView 幅設定が0以外は無視される
回答ではありません。
せっかくコードを投稿して下さるなら、MSの技術情報等で書かれているような
[再現手順]のように記入して頂くと何方でも状況が確認する事ができ、早期
解決に繋がるかと思います。(MSの技術情報の再現手順は下記参照)
 hhttp://support.microsoft.com/default.aspx?scid=kb;ja;224181
又、状況を再現できるだけの最低限のコードを作る事によって問題が解決する場合が
あります。

今回のように正常な場合とそうでない場合がある等の場合は特に一部のコードを
見ただけではなかなか判断が出来ないのでは。
少なくても、貴方が色々試したり、確認されても原因が解らないのだから、他の人が
そのコードの一部だけを見て判断できる場合は少ないかと思います。

関数の呼び出しの部分はどのようにされているのか?
ByRef intLvwColWidth() As Variant のByRefで宣言されてVariant型(変数名はInteger型)
を使っているのはなぜなのか?
ブレークポイントを設けて、 clmX.Width の値はどう変化しているのか?等を知りたい
場合は、そのコードからでは判断できませんよね。
それともすでに、F8キーを押して起動して確認されているのでしょうか?

# PS : コードを投稿される場合は、コード投稿モードで(図表モード)で投稿して下さい。
    後からでもパスワードを入力して修正できたと思います。

投稿時間:2005/01/18(Tue) 12:47
投稿者名:みかん
Eメール:
URL :
タイトル:
Re^2: ListView 幅設定が0以外は無視される
> せっかくコードを投稿して下さるなら、MSの技術情報等で書かれているような
> [再現手順]のように記入して頂くと何方でも状況が確認する事ができ、早期
> 解決に繋がるかと思います。(MSの技術情報の再現手順は下記参照)

失礼いたしました。
不十分なコードを投稿しお手数をおかけしました。

> ブレークポイントを設けて、 clmX.Width の値はどう変化しているのか?等を知りたい
> 場合は、そのコードからでは判断できませんよね。
> それともすでに、F8キーを押して起動して確認されているのでしょうか?

widthの値は、ブレークポイントを設けて0より上の値が入っていることを確認しました。
直値設定もしましたが、どちら無視されて0設定が適応されました。

> # PS : コードを投稿される場合は、コード投稿モードで(図表モード)で投稿して下さい。
>     後からでもパスワードを入力して修正できたと思います。

次回から確認いたします。
現象が多少絞り込めましたので、タイトルを変えて改めて質問させて頂きます。

投稿時間:2005/01/18(Tue) 18:19
投稿者名:いな
Eメール:
URL :
タイトル:
こちらで質問を継続されたようです。
> 次回から確認いたします。
> 現象が多少絞り込めましたので、タイトルを変えて改めて質問させて頂きます。

hhttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200501/05010046.txt

投稿時間:2005/01/24(Mon) 15:40
投稿者名:みかん
Eメール:
URL :
タイトル:
Re: ListView 幅設定が0以外は無視される
同じプロジェクト内でFormのScaleModeがTwipとピクセルの
2種類混在していたことが原因でした。
ListViewに同じ幅の数値を設定しても、あるForm上では期待するような幅に表示され、
別のForm上ではとても小さな幅になったようです。

ListViewのあるFormのScaleModeを修正したら希望の幅に設定されました。
お騒がせしました。

また別の掲示板に同一と思われる質問を掲載してしまい失礼しました。