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

اضافة اسماء الملفات المفتوحة في البرنامج

مغلق
بدأه أبو السيد عدنان في 1 أغسطس 2007 · 12 رد · 1,283 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

قبل فترة كنت استغرب كيف يمكن للبرامج التجارية أن تحفظ اسماء الملفات المفتوحة من قبل كما في البرامج التجارية مثل الورد و الريال بلاير و غيرها

و استطعت بعد عدة محاولات أن أصنع مشروع صغير يشرح الطريقة و ذلك بالإعتماد على المصفوفات و بعض الحيل

و لكن المشروع ناقص حيث أني لم أستطع اضافة الأمر الذي يفتح الملفات المضافة في القائمة أرجوا مساعدتي في إكمال المشروع

و لكم خالص تحياتي

AbumraddnanLab.rar

i1044214_21.JPG

#2

السلام عليكم

لإضافة أمر فتح الصورة يجب أولاً ان نقوم بتعريف عنصر من النوع ToolStripMenuItem و يكون مع الاحداث التي تختص به

لان بهذه الطريقة سنعرف إن تم الضغط على الصورة المدرجة من عدمها, إليك الطريقة أولاً نقوم بتعريف العنصر ToolStripMenuItem بهذا الشكل.

   Private WithEvents strmenu As ToolStripMenuItem = Nothing

نقوم الان بتغير بعض النصوص البرمجية عند إضافة القيم من المصفوفة FileList بهذا الشكل.

For I = 0 To FilesCount
				If FileList(I) <> "" Then
					'Instantiate New object.
					strmenu = New ToolStripMenuItem
					'Assign it's name.
					strmenu.Name = I.ToString
					'Assign it's value (Text)
					strmenu.Text = FileList(I).ToString
					'Add click event handler to current item. Items_Click routine.
					AddHandler strmenu.Click, AddressOf Items_Click
					'Add it to ToolstripItemCollection Object.
					Form1.SD.DropDownItems.Add(strmenu)
				End If
			Next I

و أخيراً نضع الحدث الذي يقوم بفتح الصورة بواسطة عارض الصور الافتراضي لنظام التشغيل ويندز وهو Windows Picture and Fax Viewer

 Private Sub Items_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
		Shell("rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen " & _
			   "" & sender.text & "")
	End Sub

بالتوفيق إن شاء الله.

ImageViewer.rar

في المثال يتضح المقال

#3

شكراً أخي الشهاب الخارق على ردك و على جهودك الطيبة ...

و لكنني قبل وقت وجيز كنت أجرب الإجراءات التابعة للقائمة ، و اكتشفت أن الاجراء DropDownItemClicked من الممكن استخدامه لهذا الغرض بدل إضافة اجراء و تعريفه و الكود التالي يبين ذلك :

Private Sub SD_DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles SD.DropDownItemClicked

		P.BackgroundImage = Drawing.Image.FromFile(e.ClickedItem.Text)

   End Sub

القوائم التي سوف تضاف إلى القائمة SD تكون تابعة لها و يتم استدعائها و كتابة أوامر الضغط عليها بواسطة الاجراء DropDownItemClicked التابع للقائمة الحاضنة الا و هي قائمة SD

على كل المثال قمت بتعديله و هو في المرفقات

أرجو أن أرى رأيكم في الكود ، مع خالص تحياتي ...

ImageViewer.rar

i1044214_21.JPG

#4

نعم هذا أفضل بكثير من مما ذكرنا.

أولاً وان كانت كل الطرق تؤدي للغرض ذاته, إلا ان ما ذكرته انت هو الافضل, لعدم ملئ الذاكرة بالعناصر و المتغيرات.

وذلك أنهُ من الطبيعي أن يكون من أنشئ المشروع , هو أقرب الناس و اكثرهم فرصة ً لإيجاد الحلول المناسبة.

ملاحظة: من الافضل ان تكون المصفوفة FileList تلقائية التزايد لا تعتمد على العدد المُدخل من قبل المستخدم

أي يجب أن تكون مرنة تتمدد و تتقلص و يُجُهز عليها عند الانتهاء منها Remove it from memory

و بالله التوفيق.

في المثال يتضح المقال

#5

فكره رائعه .....

استفدت منها .

اشكرك عليها

------------------وما توفيقي إلا بالله--------------------

إذا كنت بالله مستعصما---------فماذا يضيرك كيد العبيد

#6

لكن هناك ملاحظة مهمة برنامجك او كودك جد طويل بالمقارنة مع ما يعمل

يعني كل الكلاس الذي كتبته يمكن اختصاره في بضعة أسطر و سيكون اكثر احترافية و باستعمال نفس الطريقة التي تستعملها البرامج الاحترافية مثل RealPlayer و WMP

ما لاحظته عند تجربة البرنامج انه عند اغلاقه و فتحه مرة اخرى تختفي لائحة الملفات المفتوحة ذلك انك تستعمل متغير يدمر عند الاغلاق اذا الحل سيكون بكتابة هذه الملفات في مكان لا يدمر ، اذا أين ؟ المكان الأمثل و الذي تستعمله البرامج التي ذكرتها سابقا و برامج اخرى هو ال Resgistry بو بطريقة بسيطة لن نحتاج معها كل ذلك الكود الذي كتبته في الكلاس و قد أضفت هذه الأسطر :

 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
		   O.Filter = "*.JPG|*.JPG"
		   O.FileName = ""
		   O.ShowDialog()
		   If O.FileName = "" Then Exit Sub
		   P.BackgroundImage = Drawing.Image.FromFile(O.FileName)
		   ''''''''''''''''''''
		  <u><b>If Exist(O.FileName) = False Then
			   SD.DropDownItems.Add(O.FileName)
			   SaveSetting("MyApplication", "RecentFiles", O.FileName, O.FileName)
		   End If
	   End Sub

	   Public Sub LoadrecentFiles()
		   Dim AllFiles As String(,)
		   AllFiles = GetAllSettings("MyApplication", "RecentFiles")
		   For i As Integer = 0 To AllFiles.GetUpperBound(0)
			   SD.DropDownItems.Add(AllFiles(i, 0))
		   Next
	   End Sub
	   Public Function Exist(ByVal File As String) As Boolean
		   For x As Integer = 0 To SD.DropDownItems.Count - 1
			   If SD.DropDownItems.Item(x).Text = File Then
				   Return True
			   End If
		   Next
		   Return False
	   End Function</b></u>

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

AbumraddnanLab.rar

تم تعديل هذه المشاركة بواسطة Ayoub JAMAL EL IDRISSI في 2 أغسطس 2007 في 14:40

#7

هل المثال الذي وضعته يا اخ ايوب يعمل ؟؟ بشكل صحيح ؟؟

اعتقد به اخطاء

------------------وما توفيقي إلا بالله--------------------

إذا كنت بالله مستعصما---------فماذا يضيرك كيد العبيد

#8
اقتباس
هل المثال الذي وضعته يا اخ ايوب يعمل ؟؟ بشكل صحيح ؟؟

اعتقد به اخطاء

تعتقد به أخطاء ؟؟؟

المرجو توضيح الخلل لأنه يشتغل جيدا عندي

تم تعديل هذه المشاركة بواسطة Ayoub JAMAL EL IDRISSI في 2 أغسطس 2007 في 20:13

#9

السلام عليكم و رحمة الله و بركاته

أشكركم جميعا على تفاعلكم مع هذا الموضوع المهم ...

بالنسبة لحفظ عناصر القائمة رسينت تلقائيا فقد قمت ببعض التعديلات التي تتيح للبرنامج حفظ عناصر القائمة و استرجاعها و التعديل موجود في المرفقات .

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

على كل حال الأخ أيوب مشكور على فكرتك بالنسبة لفكرة تخزين القيم بالريجيستري ، صحيح أن المثال من الناحية النظرية صحيح من حيث الأكواد و لكن لا يعمل ما أدري لماذا يمكن لأنه استخدم في تعديل مشروعي فيجول بيسك دوت نت ذو اصدار آخر -أنا أستخدم فيجول بيسك دوت نت 2005- و على كل حال كل الطرق تؤدي إلى نفس الغرض .

إعذروني على تعقيدات كتابة الأكواد هذا طبعي ما يتغير .

أتمنى للجميع التوفيق و النجاح

مع خالص تحياتي ...

RecentFiles.rar

i1044214_21.JPG

#10
اقتباس
-أنا أستخدم فيجول بيسك دوت نت 2005-

أنا ايضا

اقتباس
حيث أننا نرى حتى في البرامج التجارية هناك عدد محدد من اسماء الملفات يتم اضافتها الى القائمة و بالطبع يمكن زيادة هذا العدد في البرامج التجارية ...

يمكن عمل ذلك بالتأكيد حتى في هذه الطرقة و لا نحتاج لا لحيل و لا لأي شئ

اقتباس
إعذروني على تعقيدات كتابة الأكواد هذا طبعي ما يتغير .

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

#11

السلام عليكم و رحمة الله و بركاته

أخ أبو عبدالملك مثال الأخ أيوب يعمل بشكل غير صحيح عند تشغيله لأول مرة ، و قد قمت بتعديل برنامج الأخ أيوب و عمل بشكل صحيح

راجع الرابط التالي

/index.php?showtopic=134607

مع خالص تحياتي ...

i1044214_21.JPG

#12
اقتباس
تعتقد به أخطاء ؟؟؟

المرجو توضيح الخلل لأنه يشتغل جيدا عندي

اخ ايوب

نفس المشكله عند الاخ ابو السيد وهو حلها (بتجاوز الاخطاء )

أنا أستغرب من أنه يعمل عندك .....تأكد من البرنامج لديك ربما تكون عدلت الكود بينما أرفقت نسخه سابقه ......:)

على كل حال مجهود قيم .....أثابك الله عليه فقد حفظته لدي في الامثله المعتمده :)

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 3 أغسطس 2007 في 11:40 — السبب: وضع سؤال لاعلاقة له بالموضوع

------------------وما توفيقي إلا بالله--------------------

إذا كنت بالله مستعصما---------فماذا يضيرك كيد العبيد

#13

نشكر جميع الذين تفاعلوا معنا في هذا الموضوع المهم ...

أخ أبو عبدالملك ممكن توضح لي ما تريده بالتفصيل و انا عند الاستطاعة حاضر سوف اساعدك إن شاء الله ...

:D مع خاص تحياتي ...

i1044214_21.JPG

هذا الموضوع مغلق.

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

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

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

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

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