ListView について

解決


満月の夜  2008-03-31 15:21:41  No: 100523  IP: 192.*.*.*

題記の件につきまして,ご存じの方ご教授願えれば幸いです.

ListViewを使用してフォルダの
ファイル名,ファイルサイズ,更新日時を表示したいと考えています.
下記のように作成したのですが、エラー(プロパティ値が不正です.実行時エラ380)が出てしまい,対処ができません。
ご存じの方,お教え願えればうれしいです.よろしくお願いします.

【環境】
VB6.0(SP5)

【ソース】
'--------------------------------------------------------------------
'   機    能:ディレクトリーリスト
'--------------------------------------------------------------------
Private Sub Dir1_Change()
Dim p As Variant
Dim Lv As ListItem
Dim buf As String

ChDir Dir1.Path
ListView1.ListItems.Clear
p = Dir("*.*", 2 + 4 + 16)

    Do While p <> ""
        If Not (p = "." Or p = "..") Then
            If (GetAttr(p) And vbDirectory) = vbDirectory Then
                Set Lv = ListView1.ListItems.Add(, , p)
                    Lv.SubItems(1) = "フォルダ"
            Else
                Set Lv = ListView1.ListItems.Add(, , p)
                   '1023 で切り上げ
                   buf = (FileLen(p) + 1023) \ 1024 & "KB"
↓↓↓↓↓ここでエラーが出てしまいます
                   Lv.SubItems(1) = CStr(buf)
↑↑↑↑↑ここでエラーが出てしまいます


'                   Lv.SubItems(1) = (FileLen(p) + 1023) \ 1024 & "KB"
            End If
            Lv.SubItems(2) = FileDateTime(p)
        End If
        p = Dir
    Loop

End Sub

編集 削除
FRW  2008-03-31 18:16:11  No: 100524  IP: 192.*.*.*

サブアイテムが定義されてないからだと思います。

次の3行を付け加えてみて下さい。

Dim clmX As ColumnHeader
    
Set clmX = ListView1.ColumnHeaders.Add(, , "名前", 100 * 15)
Set clmX = ListView1.ColumnHeaders.Add(, , "サイズ", 100 * 15)
Set clmX = ListView1.ColumnHeaders.Add(, , "更新日時", 100 * 15)

これも忘れずに。
ListView1.View = lvwReport ' View プロパティをレポートに設定します。

編集 削除
満月の夜  2008-03-31 18:38:21  No: 100525  IP: 192.*.*.*

FRWさん  ありがとうございます。
ご指摘があり,Form_Loadを見直し所,ミスがあり修正したところ
エラーも出ずに動作いたしました.
本当に恥ずかしいミスです・・・
ミス内容は下記ソースを見て頂くとすぐわかると思いますが,私のForm_Load内処理は,Dir1.Path = App.Pathした後にサブクラスの定義をしてました.
Dir1.Path = App.Pathを実行すると,Dir1_Changeが走ってしまうので,サブクラスの定義前に実行するためエラーが出ていたようです.
ご指摘本当にありがとうございました.

'---------------------------------------------------------------------
'   機    能:画面ロード(イニシャル)
'---------------------------------------------------------------------
Private Sub Form_Load()
Dim DriVeName As Variant
Dim x As ColumnHeader
    '---------------------------------------------
    ' 二重起動を防ぐ
    '---------------------------------------------
    If App.PrevInstance Then
        MsgBox "すでに「" & App.Title & "」は起動されています。", vbExclamation
        End
    End If
                
    '---------------------------------------------
    '初期画面のイニシャル
    '---------------------------------------------
↓↓↓↓↓コメント解除すると,Dir1_Changeイベントが走ってしまう
'    Dir1.Path = App.Path
↑↑↑↑↑コメント解除すると,Dir1_Changeイベントが走ってしまう
    Label1.Caption = App.Path
    ListView1.ListItems.Clear

    Set x = ListView1.ColumnHeaders.Add(, , "ファイル名", ListView1.Width / 3)
    Set x = ListView1.ColumnHeaders.Add(, , "サイズ", ListView1.Width / 5, 1)
    Set x = ListView1.ColumnHeaders.Add(, , "更新日時", ListView1.Width / 4, 1)
    ListView1.View = lvwReport
    Dir1_Change

End Sub

編集 削除