PDA

View Full Version : گفتگو: بهترین روش برای ایجاد تری ویو فایل سیستم



sina_saravi1
جمعه 16 بهمن 1388, 23:51 عصر
سلام

میخواستم بدونم بهترین راه برای ساخت تری ویو فایل ها چیه؟

به عکس پیوست شده توجه کنید
(این عکس مربوط به ویندوز سونه)
43669

Alirezanet
شنبه 17 بهمن 1388, 00:21 صبح
خوب کلا 1 راه داره که تک تک بخونیدشون و توی treeview اضافه کنین ...
اگه نخوای از کامپوننت استفاده کنی !

sina_saravi1
شنبه 17 بهمن 1388, 00:30 صبح
یعنی API نداره؟

sina_saravi1
شنبه 17 بهمن 1388, 00:31 صبح
یا که خود ویندوز این کامپوننت رو عمومی تو ویندوزهاش قرار نداده؟

Alirezanet
شنبه 17 بهمن 1388, 01:08 صبح
نه فکر نمیکنم ... ولی در مورد API من تا به حال ازش استفاده نکردم چون .net کامله شاید داشته باشه ..
من توی برنامه ای که درحال نوشتنش هستم همین کارو کردم ...
و از : System.IO استفاده کردم که خیلی راحت بود ... فقط نتونستم با اون اسم ولوم درایو هارو پیدا کنم ... (کسی اون رو هم راهشو بلده بگه ما هم بدونیم:چشمک:)

sina_saravi1
شنبه 17 بهمن 1388, 06:01 صبح
نه فکر نمیکنم ... ولی در مورد API من تا به حال ازش استفاده نکردم چون .net کامله شاید داشته باشه ..
من توی برنامه ای که درحال نوشتنش هستم همین کارو کردم ...
و از : System.IO استفاده کردم که خیلی راحت بود ... فقط نتونستم با اون اسم ولوم درایو هارو پیدا کنم ... (کسی اون رو هم راهشو بلده بگه ما هم بدونیم:چشمک:)

برای لود شدن این بری ویو خیلی وقت میبره؟
یا که حجم زیادی رو روی پردازنده قرار میده؟

اگه میشه یه نمونه از این کارتون رو در اختیارمون قرار بدین

با تشکر
چشم من هم به دنبال این میگردم که چجوری ولوم درایو ها رو به دست بیارم

بازم تشکر

Netsky
شنبه 17 بهمن 1388, 07:24 صبح
فقط نتونستم با اون اسم ولوم درایو هارو پیدا کنم ... (کسی اون رو هم راهشو بلده بگه ما هم بدونیم:چشمک:)
سلام عرض میکنم خدمت شما دوست عزیز .
بوسیله کد زیر میتونید خیلی راحت این کار رو انجام بدید .



Public Function Get_Drives()
Dim Drives As DriveInfo
'-----------------------
Dim CMBBOX As New ComboBox
CMBBOX.Size = New Size(100, 0)
CMBBOX.DropDownStyle = ComboBoxStyle.DropDownList
Me.Controls.Add(CMBBOX)
'------------------
For Each Drives In System.IO.DriveInfo.GetDrives()
If Drives.IsReady = True Then
CMBBOX.Items.Add(Drives.VolumeLabel())
End If

Next
End Function

اگه بازم مشکلی بود من در خدمتم ........ :لبخندساده:

Alirezanet
شنبه 17 بهمن 1388, 08:39 صبح
نه خیلی زیاد ... اینو ببین شاید کمک کنه اگه کمکتون کرد بگین کامل براتون کد بزارم ... چون یه ذره اونجوری پیچیده میشه ....
این توی یه باتن بزار مثلا ...:

trv1.Nodes.Add(txtname.Text)
loaderD(cmb.Text, trv1.Nodes(0))

خوب خط اول یه ریشه حالا با هر نوشته ای که میخوای توی درختت درست میکنه ...
خط دوم هم اون ریشرو به شکل یک TreeNode و یه آدرس(cmb) برای تابع پایین میفرسته ..

Private Sub loaderD(ByVal adrs As String, ByVal parentnode As TreeNode)
Try
Dim dir As String() = Directory.GetDirectories(adrs)
If dir.Length <> 0 Then
For Each d As String In dir
Dim dname As String = Path.GetFileNameWithoutExtension(d)
Dim newnode As TreeNode = New TreeNode(dname)
newnode.Tag = d
parentnode.Nodes.Add(newnode)
loaderD(d, newnode)

Next
End If
Catch ex As UnauthorizedAccessException
Catch ex As IOException
MsgBox(ex.Message, MsgBoxStyle.Critical)
trv1.Nodes.Clear()
Exit Sub
End Try
End Sub


این هم واضح هستش ... من امکانات دیگشو حذف کردم تا قابل درک بشه ...
ولی تا اینجا تمام فولدر ها موجود توی آدرسی که فرستادی مثلا (D:\) رو لیست میکنه بدون فایل هاش ... و حتیفولدرهای سیستم رو هم لیست میکنه ...
خواستی فولدر سیتم هارو حذف کنی و فایلهارو هم لود کنی توی Treeview بگو برات کد بزارم ...
موفق باشی...

sina_saravi1
شنبه 17 بهمن 1388, 14:11 عصر
ولی اگه تعداد فولدرهای یه سیستم خیلی زیاد و تو در تو باشه ، سیستم هنگ نمیکنه؟
یا که سرعت لود خیلی پایین نمیاد؟

sina_saravi1
شنبه 17 بهمن 1388, 17:21 عصر
راستی

به دلیل اینکه این تری ویو در تمامی ویندوز ها با گرافیک مختلف وجود داره و حد اقل در اکسپلورر (explorer.exe) از آن استفاده شده ، باید به این شک کرد که تری ویو فایل ها و فولدر های ویندوز به صورت یه کامپوننت ( یا API یا چیز دیگه ) وجود داره

چون بعضی از نرم افزار ها هم بسته به ویندوزی که روشنصب شدن این تری ویو فرق داره
من لنگ این تری ویو هستم
خواهش میکنم از اونایی که میتونن بیشتر کمک کنن ، تا بیشتر کمک کنن

بازم ممنونم از این همه پاسخ

Alirezanet
شنبه 17 بهمن 1388, 22:46 عصر
هنگ که نمیکنه ولی سرعت و باید بگم مثله اکسپلورر هم کار نمیکنه ....
چند ثانیا طول میکشه ... دلیلش هم اینه که اکسپلورر تک تک فایلهارو براتون لیست میکنه .. زمانی توی درخت اکسپلورر مقدار داخلش اضافه میشه که روی اون درخت دبل کلیک بشه ... به این شکل هم میشه کار کرد .... یه نمونه برات گذاشتم ...

davood-ahmadi
شنبه 17 بهمن 1388, 23:47 عصر
در روش مثال زیر سرعت بیشتر است البته از یک DLL استفاده شده است:

sina_saravi1
یک شنبه 18 بهمن 1388, 11:52 صبح
واقعا ممنونم

فعلا که با این مثالها مشکلم حل شد
اگه بازم سوالی پیش اومد مزاحمتون میشم:خجالت:

sina_saravi1
یک شنبه 18 بهمن 1388, 16:07 عصر
هنگ که نمیکنه ولی سرعت و باید بگم مثله اکسپلورر هم کار نمیکنه ....
چند ثانیا طول میکشه ... دلیلش هم اینه که اکسپلورر تک تک فایلهارو براتون لیست میکنه .. زمانی توی درخت اکسپلورر مقدار داخلش اضافه میشه که روی اون درخت دبل کلیک بشه ... به این شکل هم میشه کار کرد .... یه نمونه برات گذاشتم ...


از این مثال خیلی خوشم اومد
ولی هر کاری کردم نتونستم قسمت تری ویو رو برای خودم جدا کنم
کاشکی کمکم کنید

با تشکر