DirListBoxについて

解決


DLB  2006-02-03 19:33:39  No: 130036

VB6 DirListBoxについての質問です。
DirListBoxに表示された全ての項目数と各項目の名前を取得するには、どうしたらいいんでしょうか? Dir1.ListCount, Dir1.List(i)ではダメでした。
宜しくお願いします。


特攻隊長まるるう  2006-02-03 19:52:16  No: 130037

>Dir1.ListCount, Dir1.List(i)ではダメでした。
得られた情報を \ で区切れば取得できるので、
ダメでは無いでしょう?


ぶぶ  2006-02-03 19:58:29  No: 130038

どうダメなんでしょう?
私とれましたけど、、、どういう内容がほしくてどうコーディングしたのか。
取れた結果はどうなのか
特攻隊長まるるう さんが書いておられますが、
例  "c:\a\b\c"の形でとれますので、自分で区切る必要はあると思います。


特攻隊長まるるう  2006-02-03 20:20:51  No: 130039

ああ、一番下のフォルダまで展開しちゃってるときに
.ListCount = 0 で返ってきちゃうねぇ。この時のみ
.Path で処理すれば良さそう。


DLB  2006-02-03 21:53:02  No: 130040

回答ありがとうございます。
各項目の名前を取得する方法は解かりました。

DirListBoxに表示された全ての項目数を取得するのは、どうするんでしょうか?
Dir1.ListCountは、選択ディレクトリ下のサブディレクトリの数を返す様で、標準ListBoxの.ListCountとは違うみたいです。


特攻隊長まるるう  2006-02-03 22:09:31  No: 130041

>DirListBoxに表示された全ての項目数を取得するのは、どうするんでしょうか?
↓の処理の時に自分で数えるの。各項目を自分で取得しなきゃいけないんだから、当然でしょ?(^^)
>各項目の名前を取得する方法は解かりました。


DLB  2006-02-04 00:20:15  No: 130042

以下の様になりました。皆様、ありがとうございました。

Private Sub Command1_Click()
    Dim strName() As String
    Dim i As Integer
    Dim intCount As Integer
    Dim strDir As String
    Dim intCurIndex As Integer

    With Dir1
        strName = Split(.Path, "\")
        strName(0) = strName(0) & "\"
        If Len(strName(UBound(strName))) = 0 Then
            ReDim Preserve strName(UBound(strName) - 1)
        End If
    
        For i = 0 To .ListCount - 1
            ReDim Preserve strName(UBound(strName) + 1)
            strName(UBound(strName)) = Mid$(.List(i), Len(.Path) + 2)
        Next i
        intCount = UBound(strName) + 1
    
        For i = 0 To intCount - 1
            strDir = .List(.ListCount + i - intCount)
            If .Path = strDir Then intCurIndex = i
            Debug.Print strName(i), strDir
        Next i
    End With
End Sub


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加