الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

السلام عليكم .. كيف أريد أن أحدد وأضيف أكثر من ملف في ال Listview

بدأه جواد في 26 مايو 2008 · 11 رد · 1,616 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم .. كيف أريد أن أحدد وأضيف أكثر من ملف في الـ ListView

انا عندي مشروع وفيه زر اختيار ملفات

وعندما اضغط على على زر أختيار اقدر احدد بس ملف واحد

بس انا بدي اخليه يحدد اكثر من ملف وبعد ما أضغط Ok من نافذة أختيار الملفات اريده ان يضيف لي الملفات للـ ListView

الله يوفق اللي يرد علي

أنتظر ردكم

#2

مين يعرف الحل

انتظر الحل من بعد إذنكم

#4

لو سمحتو ماهي الأكواد اللازمة لإضافتها لزر البرنامج

لكي أستطيع من خلاله تحديد أكثر من ملف

#5

انا جربت الكود اللي وضعه الأخ DreamNet بس ما زبط معي

لو سمحتوا أريد لما أضغط على زر أختيار ملفات أن احدد أكثر من ملف

1211835443_1.png

هنا بعد ما ضغط على زر أختيار ملفات سوف يفتح الديالوج بس المشكلة انو يحدد ملف واحد فقط

وانا اريد احدد اكثر من ملف واضيفه للـ ListView

1211835465_2.png

أنتظر الحل

#6

السلام عليكم...

لكي يتمكن المستخدم من اختيار عدة ملفات يجب إضافة الثابت cdlOFNAllowMultiselect إلى الخاصية Flags التابعة للمكون CommonDialog، كما هو مبين في الكود.

النقطة التي يجب ملاحظتها هنا هي أنه عند اختيار ملف واحد فإن الخاصية FileName تحتوي على المسار (Path) و اسم الملف (File name)، أما عند اختيار عدة ملفات فإن الخاصية FileName تحتوي أولاً على المسار (Path) متبوعاً بالحرف NULL (أو Chr(0))، ثم أسماء الملفات مفصولة أيضاً بالحرف NULL، و لذلك ففي هذه الحالة نحتاج إلى تفكيك نص الخاصية FileName للحصول على المسار و أسماء الملفات، كما هو مبين في الكود أيضاً.

Private Sub Form_Load()
	' ضبط الخاصية Flags:
	CommonDialog1.Flags = cdlOFNFileMustExist Or cdlOFNHideReadOnly _
						  Or cdlOFNAllowMultiselect Or cdlOFNExplorer
End Sub

Private Sub Command1_Click()
	Dim SelectedFiles As String
	Dim NCPos As Long
	Dim ThePath As String
	Dim TheFile As String
	Dim AItem As ListItem

	On Error GoTo Command1_Click_Error

	CommonDialog1.FileName = ""
	CommonDialog1.ShowOpen
	SelectedFiles = CommonDialog1.FileName
	' نبحث عن الحرف NULL:
	NCPos = InStr(SelectedFiles, vbNullChar)
	If NCPos = 0 Then
		' لا يوجد. إذن المستخدم اختار ملفاً واحداً
		' نبحث عن آخر شرطة مائلة تفصل المسار عن اسم الملف
		NCPos = InStrRev(SelectedFiles, "\", -1, vbTextCompare)
		' المسار هو كل ما قبل الشرطة
		ThePath = Left(SelectedFiles, NCPos - 1)
		' قد يكون المسار هو الدليل الجذري للقرص. إذن نضيف الشرطة من عندنا
		If Right(ThePath, 1) = ":" Then ThePath = ThePath & "\"
		' اسم الملف هو الواقع بعد الشرطة
		TheFile = Mid(SelectedFiles, NCPos + 1)
		' نضيف اسم الملف و المسار إلى القائمة
		Set AItem = ListView1.ListItems.Add(, , TheFile)
		AItem.SubItems(1) = ThePath
	Else
		' يوجد حرف NULL
		' المسار هو أول جزء في النص قبل أول لحرف NULL
		ThePath = Left(SelectedFiles, NCPos - 1)
		' نحذف جزء المسار ليبقى لدينا أسماء الملفات
		SelectedFiles = Mid(SelectedFiles, NCPos + 1)
		' بنفس الفكرة نستخلص اسم كل ملف إلى أن يبقى لا شيء
		Do While SelectedFiles <> ""
			NCPos = InStr(SelectedFiles, vbNullChar)
			If NCPos = 0 Then
				TheFile = SelectedFiles
				SelectedFiles = ""
			Else
				TheFile = Left(SelectedFiles, NCPos - 1)
			End If
			' نضيف اسم الملف و المسار إلى القائمة
			Set AItem = ListView1.ListItems.Add(, , TheFile)
			AItem.SubItems(1) = ThePath
			SelectedFiles = Mid(SelectedFiles, NCPos + 1)
		Loop
	End If

	Exit Sub
Command1_Click_Error:
	If Err.Number <> cdlCancel Then MsgBox Err.Description, vbCritical, "Error"
End Sub

post-28631-1211842878_thumb.jpg

post-28631-1211842897_thumb.jpg

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#7

الله يعطيك العافية أخي najy_zl زبط معي الله يجازك الخير

بس في مشكلة صغيرة

شوف في الصورة لما احدد أكثر من ملف بحددهم وبضيفهم للـ LisyView

بنضافو من دون أي مشاكل بس لما أحدد الكل يعني لما أحدد كل الملفات بطلع لي رسال خطأ

شوف الصور

1211858413_1.png

1211858438_2.png

---------------------------------

بس لما أحدد الكل بالضغط على Con + A

بيظهر لي مسج وما بضيفهم هل في حل للمشكلة هذه

1211858471_3.png

1211858502_4.png

والله يعطيك الف عافية أخي najy_zl أنتظر حلك أخي najy_zl

تم تعديل هذه المشاركة بواسطة جواد في 27 مايو 2008 في 07:45

#9

شكرا لك أخي DreamNet على التوضيح

الله يعطيك العافية

#10

أخي najy_zl ظهر عندي مشكلة أخرى ولكن ليست من الكود الذي وضعته انت

المشكلة هي انني ما أقدر اضيف مجلدات أو مجلد مع الملفات

هل تقدر تفيدني فيها أخي najy_zl

تم تعديل هذه المشاركة بواسطة جواد في 10 يونيو 2008 في 17:33

#11

السلام عليكم...

أصبح الأمر مختلفاً قليلاً لأن الـ Common Dialog لا يسمح باختيار مجلدات، و لذلك فأنت بحاجة لاستدعاء نافذة "اختيار مجلد" الخاصة بـ Windows، و هي تحتاج لاستعمال بعض دوال API. على أية حال أنا شخصياً قمت خلال عملي كمبرمج بتجميع مثل هذه المواضيع (التي أحتاج إليها بين الحين و الآخر) في ملف DLL كتبته بلغة VB نفسها باسم VBAppAss.dll، حتى لا أضطر إلى البحث عنها أو إعادة كتابتها مرات و مرات، و أقوم تلقائياً بتضمين هذا الملف (المكتبة) في أي برنامج أقوم بتصميمه. و قد أرفقت هذا الملف في هذا الرد ليستفيد منه من يشاء.

****** توضيح حول المرفقات ******

تحتوي المرفقات على برنامج setup.exe عند تشغيله يقوم بنسخ الملف VBAppAss.dll إلى المجلد System32 التابع للنظام و يقوم بتسجيله في النظام حتى يكون متوفراً كـ ActiveX component، ثم يقوم اختيارياً بنسخ مجموعة من ملفات المساعدة (ملفات HTML) التي تحتوي على شروح حول الدوال و الإجراءات المتوفرة في المكتبة VBAppAss.dll و كيفية استعمالها.

تنبيه: رغم وجود ملفات المساعدة فإن العديد من الدوال و الإجراءات ما تزال تنقصها الشروحات لأني لم أجد الوقت الكافي لكتابتها، و أرجو أن يتم ذلك في وقت قريب إن شاء الله.

********************************

بعد تركيب المكتبة VBAppAss.dll قم بتشغيل Visual Basic ثم افتح المشروع المطلوب، ثم افتح القائمة Project و اختر الأمر References لتظهر لك نافذة المراجع كما في الصورة:

post-28631-1213224332_thumb.jpg

ابحث في القائمة عن Visual Basic Application Assistant From Daniyah Center و قم بتحديده كما في الصورة، ثم انقر الزر OK.

بعد ذلك و فيما يتعلق بإضافة مجلد استعمل كود كالكود التالي (هذا المثال مطبق على نافذة تحتوي على خانتي لائحة List1 و List2 و زر Command1):

' التصريح على كائن من النوع TFileSystem:
Private MyFileMan As New VBAppAss.TFileSystem

Private Sub Command1_Click()
	Dim Result As String
	' استعمالات TFileSystem:
	' استدعاء نافذة اختيار مجلد التابعة للنظام:
	If MyFileMan.SelectDirectory(Me.hWnd, "الرجاء اختيار المجلد", Result, False)  Then
		' استخلاص اسم المجلد لوحده:
		List1.AddItem MyFileMan.ExtractFileName(Result)
		' استخلاص المسار (المجلد الأب) للمجلد المحدد:
		List2.AddItem MyFileMan.ExtractFilePath(Result)
	End If
End Sub

VBAppAss.rar

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#12

شكراً لك أخي najy_zl على المساعدة

الله يعطيك الف عافية وشكرا لك

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…