PDA

View Full Version : بارگذاری لیست فولدرها در listbox



karem2074
سه شنبه 16 فروردین 1390, 07:34 صبح
با سلام
من میخوام فولدرهای موجود در یک درایو و یا موجود در یک فولدر دیگر را در listbox بارگذاری کنم.یعنی بعد از هر بار بازکردن نرم افزار لیست فولدر ها به طور اتوماتیک در listbox بارگذاری شده باشد.ممنون میشم که راهنماییم کنین.

bighash_programmer
سه شنبه 16 فروردین 1390, 07:43 صبح
اصلا نيازي به همچين كاري نيست
جون درwindows خودش همچين component اي وجود داره اگه از دلفي يا Vb استفاده مي كني يك component ميتوني Import كني به نام Drive Combo box يا يك Folder tree
كه خودش اين امكان رو برات فراهم مي كنه تازه مي توني limit اش كني كه فقط يك سري folder تو path مشخص رو نمايش بده

karem2074
سه شنبه 16 فروردین 1390, 08:21 صبح
اصلا نيازي به همچين كاري نيست
جون درwindows خودش همچين component اي وجود داره اگه از دلفي يا Vb استفاده مي كني يك component ميتوني Import كني به نام Drive Combo box يا يك Folder tree
كه خودش اين امكان رو برات فراهم مي كنه تازه مي توني limit اش كني كه فقط يك سري folder تو path مشخص رو نمايش بده

نه دوست عزیز.من نمیخوام از هیچ component استفاده کنم.فقط میخوام یک listbox باشه و با اجرای نرم افزار کل فولدرهای داخل یک درایو و یا یک فولدر دیگر در آن بارگذاری(لود) شود.

ترانسپورتر
سه شنبه 16 فروردین 1390, 16:07 عصر
اگر می خواهید که فقط فولدرهای ریشه را داشته باشید که کاری نداره ، می تونید یه کنترل dir بزاری روی فرم و با یه حلقه اطلاعاتش رو در لیست کپی کنید ،
ولی اگر می خواهید زیر شاخه ها رو هم داشته باشید می تونید از شی fso استفاده کنید

این کد برای مورد اول:
For I = 0 To Dir1.ListCount
List1.AddItem Dir1.List(I)
Next I

ترانسپورتر
سه شنبه 16 فروردین 1390, 16:48 عصر
نمايش کليه فولدرهاي يه درايو در ليست
يک ليست و دکمه و تکست باکس به فرم اضافه کنيد و کدهاي زير را در فرم کپي کيند

Function search(path)

On Error Resume Next

Set fso = CreateObject("scripting.filesystemobject")
Set Folder = fso.GetFolder(path)



DoEvents
Me.Caption = Me.Caption + 1
List1.AddItem path
Set SubFolders = Folder.SubFolders
For Each subfolder In SubFolders
DoEvents
search subfolder.path

Next

End Function

Private Sub Command1_Click()
List1.Clear
path = TEXT1
Call search(path)
End Sub

Private Sub Form_Load()
Me.Caption = 0
TEXT1 = "d:\"
End Sub

karem2074
سه شنبه 16 فروردین 1390, 20:03 عصر
دوستان این که شما گفتین کلا جواب پاسخ من رو کامل نکرد.ببینین دوستان من میخوام مثلا نرم افزار در روت یک درایو قرار دارد.من میخوام فقط یک listbox در فرم وجود داشته باشه و با استفاده از فرمان Form1_load کلا پوشه های موجود در یک درایو رو در لیست اضافه کنه.

ترانسپورتر
سه شنبه 16 فروردین 1390, 21:05 عصر
خب کدی که من نوشتم دقیقا همین کار رو میکنه دیگه!
فقط باید این رو به رویداد لودش اضافه کنید:
call command1_click
وسلام

_behnam_
سه شنبه 16 فروردین 1390, 21:55 عصر
ترانسپورتر (http://barnamenevis.org/member.php?189378-%D8%AA%D8%B1%D8%A7%D9%86%D8%B3%D9%BE%D9%88%D8%B1%D 8%AA%D8%B1)


بله کد شما درسته و همین کارو میکنه اما وقتی دوستمون میخواد این کد رو توی vb کپی کنه کدها ارور میدن
چون نیار دارن که متغیرها تعریف بشن

@
karem2074 (http://barnamenevis.org/member.php?160750-karem2074)

این کد هم همین کارو انجام میده

Option Explicit
Dim Fso
Dim Root
Dim Folder
Dim Files
Dim AWhereto
Private Sub Form_Load()
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Root = Fso.GetFolder("C:\")

' For Each Get Folders
For Each Folder In Root.SubFolders

List1.AddItem Folder

' For Each Get Files
For Each Files In Folder.Files

List1.AddItem Files

If LCase(Files) = LCase(AWhereto) Then Exit Sub

Next

Next
End Sub

karem2074
پنج شنبه 18 فروردین 1390, 08:55 صبح
ترانسپورتر (http://barnamenevis.org/member.php?189378-%D8%AA%D8%B1%D8%A7%D9%86%D8%B3%D9%BE%D9%88%D8%B1%D 8%AA%D8%B1)


بله کد شما درسته و همین کارو میکنه اما وقتی دوستمون میخواد این کد رو توی vb کپی کنه کدها ارور میدن
چون نیار دارن که متغیرها تعریف بشن

@
karem2074 (http://barnamenevis.org/member.php?160750-karem2074)

این کد هم همین کارو انجام میده

Option Explicit
Dim Fso
Dim Root
Dim Folder
Dim Files
Dim AWhereto
Private Sub Form_Load()
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Root = Fso.GetFolder("C:\")

' For Each Get Folders
For Each Folder In Root.SubFolders

List1.AddItem Folder

' For Each Get Files
For Each Files In Folder.Files

List1.AddItem Files

If LCase(Files) = LCase(AWhereto) Then Exit Sub

Next

Next
End Sub


دوست عزیز این برا من مشکل داره.لطفا اگه میشه سورس رو خودتون در یک فرم انجام بدین بعد برام تو انجمن آپلود نمایید.

_behnam_
پنج شنبه 18 فروردین 1390, 13:13 عصر
اینم سورسش

karem2074
جمعه 19 فروردین 1390, 17:18 عصر
اینم سورسش

دوست عزیز ازت تشکر میکنم اما متاسفانه کار نمیکنه و همش پیغام خطا میده.

http://www.up.iranblog.com/images/bcejboednycr6prx6a4k.png

ترانسپورتر
شنبه 20 فروردین 1390, 17:12 عصر
کدی که من نوشتم رو همین حالا تست کردم و هیچ مشکلی هم نداشت ، فقط کافی توی اون تکست باکس آدرس مورد نظرت رو بنویسی و روی دکمه کلیک کنی.همین