View Full Version : سوال: بيش از يك انتخاب
abulfazl
شنبه 13 تیر 1388, 11:51 صبح
سلام.مي خواستم بدونم كه چطور مي شه در CommonDialog در بخش Open بيش از يك فايل انتخاب كرد :متفکر:
با تشكر
hossein033
شنبه 13 تیر 1388, 12:09 عصر
سلام.مي خواستم بدونم كه چطور مي شه در CommonDialog در بخش Open بيش از يك فايل انتخاب كرد :متفکر:
با تشكر
لطفا بیشتر توضیح بدید:گیج:
abulfazl
شنبه 13 تیر 1388, 12:41 عصر
لطفا بیشتر توضیح بدید:گیج:
دوست عزيز من يك برنامه درست كردم كه فايل صوتي و تصويري اجرا مي كند ولي من فقط مي تونم يك فايل رو انتخاب كنم و اجرا بشه بيشتر از يكي نميشه. مثل مديا پلير نميشه هر چي كه توي يك فولدر هست رو انتخاب كرد تا اجرا بشه
butterfly8528
شنبه 13 تیر 1388, 15:56 عصر
نحوه انتخاب چند فایل از CommonDialog
امیدوارم که کار با CommonDialog رو بلد باشید چون یکی از عناصر مهم کار با فایلها است و در اکثر برنامه های ویندوز
هم مشاهده میشوند . پس همونطور که میدونید در حالت عادی CommonDialog در vb توانایی انتخاب فقط یک فایل را
دارد . و باز هم همونطور که میدونید این عنصر یک خاصیت به نام Flags دارد که مقادیری را برای تعیین حالتهای پنجره
CommonDialog می پذیرد.
خوب حالا اگر بخواهیم چند فایل را از CommonDialog انتخاب کنیم اول باید Flags را برابر &H200& قرار بدهیم .
با این کار شما پنجره متفاوتی با پنجره همیشگی در OpenDialog مشاهده میکنید و اگر در این حالت چند فایل را انتخاب
کنید می بینید که FileName به صورت یک رشته به وجود میآید که نام تمام فایلهای انتخاب شده را میتوانیددرآن جستجو
کنید .البته با این روش که بین هر فایل یک فاصله میباشد . حالا با یک الگوریتم ساده میتوانید این نامها را یکی یکی جدا
کنید و در یک آرایه و یا Listbox ذخیره کنید .الگوریتم جدا کردن این نام فایلها را در مثال زیر میتوانید مشاهده کنید ولی
قبل از این مورد برای کسانی که با تابع Mid آشنایی ندارند عرض میکنم که تابع Mid برای بدست آوردن قسمتی از یک
رشته میباشد و به صورت(Mid (string, start, length به کار برده میشود .که string رشته مورد نظر و start یک
عدد که شماره اولین کاراکتر رشته مورد نظر ما در string میباشد و lengthنیز ( که اختیاری میباشد. ) یک عدد که
شماره آخرین کاراکتر رشته مورد نظر ما در string میباشد . اگر این پارامتر ذکر نگردد شماره آخرین کاراکتر string در
نظر گرفته میشود .
خوب حالا برای مثال یک عنصر CommonDialog را به فرم اضافه کنید و یک Command و یک Label و یک Listbox در زیر
Label اظافه کنید و کد زیر را در قسمت کدنویسی فرم کپی کنید و نتیجه را بررسی کنید .
Private Sub Command1_Click()
Dim delimpos As Integer
Dim fname As String
Dim nextname As String
Dim test As Boolean
test = True
CommonDialog1.Flags = &H200&
CommonDialog1.Filter = "*.*|*.*"
CommonDialog1.Action = 1
fname = CommonDialog1.FileName
List1.Clear
Do While Len(fname) > 0
delimpos = InStr(fname, " ")
If delimpos = 0 Then
nextname = fname
fname = " "
Else
nextname = Mid(fname, 1, delimpos - 1)
fname = Mid(fname, delimpos + 1)
End If
List1.AddItem nextname
If test = True Then
Label1.Caption = List1.List(0)
List1.RemoveItem 0
test = False
End If
Loop
End Sub
به قسمت Do While در بالا دقت کنید این قسمت کار جدا کردن و لیست کردن نام فایلها را دارد .
در ضمن تابع InStr نیز کار پیدا کردن مکان یک رشته در رشته دیگر را انجام میدهد .
موفق باشید .
abulfazl
شنبه 13 تیر 1388, 17:34 عصر
نحوه انتخاب چند فایل از CommonDialog
امیدوارم که کار با CommonDialog رو بلد باشید چون یکی از عناصر مهم کار با فایلها است و در اکثر برنامه های ویندوز
هم مشاهده میشوند . پس همونطور که میدونید در حالت عادی CommonDialog در vb توانایی انتخاب فقط یک فایل را
دارد . و باز هم همونطور که میدونید این عنصر یک خاصیت به نام Flags دارد که مقادیری را برای تعیین حالتهای پنجره
CommonDialog می پذیرد.
خوب حالا اگر بخواهیم چند فایل را از CommonDialog انتخاب کنیم اول باید Flags را برابر &H200& قرار بدهیم .
با این کار شما پنجره متفاوتی با پنجره همیشگی در OpenDialog مشاهده میکنید و اگر در این حالت چند فایل را انتخاب
کنید می بینید که FileName به صورت یک رشته به وجود میآید که نام تمام فایلهای انتخاب شده را میتوانیددرآن جستجو
کنید .البته با این روش که بین هر فایل یک فاصله میباشد . حالا با یک الگوریتم ساده میتوانید این نامها را یکی یکی جدا
کنید و در یک آرایه و یا Listbox ذخیره کنید .الگوریتم جدا کردن این نام فایلها را در مثال زیر میتوانید مشاهده کنید ولی
قبل از این مورد برای کسانی که با تابع Mid آشنایی ندارند عرض میکنم که تابع Mid برای بدست آوردن قسمتی از یک
رشته میباشد و به صورت(Mid (string, start, length به کار برده میشود .که string رشته مورد نظر و start یک
عدد که شماره اولین کاراکتر رشته مورد نظر ما در string میباشد و lengthنیز ( که اختیاری میباشد. ) یک عدد که
شماره آخرین کاراکتر رشته مورد نظر ما در string میباشد . اگر این پارامتر ذکر نگردد شماره آخرین کاراکتر string در
نظر گرفته میشود .
خوب حالا برای مثال یک عنصر CommonDialog را به فرم اضافه کنید و یک Command و یک Label و یک Listbox در زیر
Label اظافه کنید و کد زیر را در قسمت کدنویسی فرم کپی کنید و نتیجه را بررسی کنید .
Private Sub Command1_Click()
Dim delimpos As Integer
Dim fname As String
Dim nextname As String
Dim test As Boolean
test = True
CommonDialog1.Flags = &H200&
CommonDialog1.Filter = "*.*|*.*"
CommonDialog1.Action = 1
fname = CommonDialog1.FileName
List1.Clear
Do While Len(fname) > 0
delimpos = InStr(fname, " ")
If delimpos = 0 Then
nextname = fname
fname = " "
Else
nextname = Mid(fname, 1, delimpos - 1)
fname = Mid(fname, delimpos + 1)
End If
List1.AddItem nextname
If test = True Then
Label1.Caption = List1.List(0)
List1.RemoveItem 0
test = False
End If
Loop
End Sub
به قسمت Do While در بالا دقت کنید این قسمت کار جدا کردن و لیست کردن نام فایلها را دارد .
در ضمن تابع InStr نیز کار پیدا کردن مکان یک رشته در رشته دیگر را انجام میدهد .
موفق باشید .
دوست عزيز از كمك شما متشكرم ولي مي شه كه تصوير ما به صورت زير مشاهده بشود منظورم وقتي روي Command1 كليك مي كنيم
alih110
یک شنبه 14 تیر 1388, 10:23 صبح
دوست عزیز این همون سورسی هستش که میخوای !!!!!!!!! :متعجب: :تشویق:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.