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

دروس في البرمجه بلغة C#2005, تعلم خطوة بخطوة , مع الإجابة عن أي سؤال

مغلقرائج
بدأه حماة النهضة في 19 أبريل 2007 · 208 رد · 80,594 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#176

hi i need help to made asimple and small commpression file using huffman code sure by explanie it step step and need to know how to deals with pointers

#177
Deep_Sea كتب:

بعرف اني غلبتكوا ولكن جعله الله في ميزان حسناتكم

ما اقصده ان يظهر الملف في هذا الشكل

Image.gif

اذا بدنا نعمل نسخ تقريبا مثل القراءة لكن بدنا لما نختار الملف نقرأه وبعد قراءته ينتقل الى

Text box

وتظهر ايقونته هناك

ولكن اريد ان اعرف ايضا هل من الممكن فتح ملف بوربوينت في السي شارب اذا نعم كيف

وجزاكم الله كل الخير

أخي , يبدو أنك أرفقت صورة في ردك ولكن لا تظهر عندي

الحقيقة إلا الآن لم أفهم قصدك هل يمكن أن تزودني بمثال عملي حتى أفهم ؟

وأما عن ملفات البور بوينت فلا يمكن فتحها بالسي شارب

أعذرنا أخي وننتظر منك توضيح أكثر

..

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#178
y85.fox كتب:

السلام عليكم

وانا عندي مشاكل !

مش بس تنسيق ;)

أولا:

شكرك لكم

وبارك الله فيكم

ثانيا :

المشاكل الله لايكثرها..

المشكله في هذا الميثود

void sm(int x,string msg)

الاستداعاء حقه

sm(14,"C#");

كيف نحنا نبعث من الاستدعاء

رقم ونص

في حيث انو

Message Box

تتعامل مع

String

فقط

وانا كتبت

Void sm(int x,string d)

ما يقبل ؟؟؟؟؟؟

2ca46b1.gif

والمشكله الثانيه

هي في

هذا


{
int x;
int y;
int z;
x=Convert.ToInt32(t1.Text);
y=Convert.ToInt32(t2.Text);
}
catch
{
MessageBox.Show("???? ?? ????? ????? ???");
}
z=x+y;
MessageBox.Show(Convert.ToString(z));
try

والخطا المكتوب هو

Error 1 The name 'z' does not exist in the current context D:\for API\WindowsApplication2\WindowsApplication2\Form1.cs 34 13 WindowsApplication2

طبعا ثلاثة اخطاء

لمتحولات

z ,x ,y

طبعا جربت كثير

لكن لم يعمل إلا بعد تعطيل جمله

try

2ca46b1.gif

وايضا استفسار صغير عن

System.Environment.Exit(0);

كيف يمكنني الاستفاده منها

وهل عملها مثل

حمله

breck

او تستخدم لايقاف تسغيل البرنامج

وانا اسف على كثر اسالتى

وجزاكم الله كل خير

-waf

أهلا بك أخي العزيز :)

الخطأ الأول هو أنك كتبت كلمة Void بحرف كبير والمفروض أن تكتب void بحرف صغير في البداية

أما الخطأ الثاني فسببه أنك عرفت متغيرات xyz في قطلع من الكود و إستخدمتهم في قطاع آخر

القطاع هو ما يوجد بين حاصرتين {} ويجب أن تعرف المتغيرات المتغيرات المستخدمه في القطاع في نفس القطاع أو في القطاع الأعلى منه

مثلاً للتعريف في نفس القطلع :


int x;
x=7;
}
{

وللتعريف في القطاع الأعلى :


{
x=7;
}
int x;

أما في كودك فقد عرفت المتغيرات في قطاع أسفل وليس أعلى هكذا :


int x;
}
x=7;
{

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


int y;
int z;
try
{
x=Convert.ToInt32(t1.Text);
y=Convert.ToInt32(t2.Text);
}
catch
{
MessageBox.Show("???? ?? ????? ????? ???");
}
z=x+y;
MessageBox.Show(Convert.ToString(z));
int x;

نقلنا تعريف المتغيرات إلى قطاع أعلى

أما الإستفسار الثالث بخصوص تعليمة :

System.Environment.Exit(0);

فهي تستخدم فقط للخروج من البرنامج

بالتوفيق :)

..

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#179
f-a-l-c-o-n كتب:

مشكور أخوي على المجهود الرائع

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

هذا هو البرنامج

هنـــــــــا

أرجوا منك الإطلاع عليه جزاك الله خير

الرابط لا يعمل بشكل صحيح أرجوا منك رفعة مرة أخرى

أشكرك على وقتك الثمين وتحياتي لك

تطبيقك رائع أخي العزيز

أما عن ملف XML فقم بفتحه وعدل الكود فيه حتى يصبح هكذا :


<albumes>
</albumes>
<?xml version="1.0" encoding="utf-8"?>

بالتوفيق :)

..

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#180
khaled_tiger كتب:
السلام عليكم ورحمة الله وبركاته

الف شكر اخي حماة النهضه علي الرد

بس المشكله اني عامل زي ماهو مكتوب بس مش عارف العيب منين بالظبط

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

هرفع جزء في المشاركه دي وجزء في المشاركه التاليه بسبب تحديد مساحة المرفقات

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

أخي , هل تطبق الدروس كما في الشرح ؟ أرى أن شفرتك مختلفه قليلاً

المهم الخطأ بسيط , في إجراء LoadFile ستجد الجمله التالية مكتوبه مرتين :

openFileDialog1.FileName

أكتب بدلاً منهما :

path

بالتوفيق أخي خالد :)

..

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#181
اقتباس
hi i need help to made asimple and small commpression file using huffman code sure by explanie it step step and need to know how to deals with pointers

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#182

الدرس السابع عشر

تغيير الواجهات الرسومية

في هذا الدرس سنستخدم برنامج خاص بإنشاء واجهات رسومية للتطبيق

قم بتحميل البرنامج من هنا :

برنامج صنع الواجهات

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

كتحديد خلفية النوافذ و ألوان الخطوط وغيرها

image17-1.JPG

يعتمد هذا البرنامج على تسجيل القيم المدخلة له في ملف Xml

على أن برنامج مشغل الميديا سيقرأ القيم من هذا الملف

والبرنامج يقوم بإنشاء مجلد جديد بإسم الستايل

ويضع داخله ملف XML الذي يحتوي على الألوان وأسماء الصور و يضع داخلة أيضاً الصور المختارة للستايل

image17-2.JPG

بعد إنشاء الستايل نقوم بنسخ المجلد كاملاً إلى مجلد جديد سنقوم بإنشاءه في مسار البرنامج بإسم Styles

حيث سيحتوي هذا المجلد على جميع الستايلات الناتجة من برنامج صنع الواجهات :

image17-3.JPG

للتعامل مع الواجهات المتعددة , نحتاج إلى قائمة منسدلة جديدة تحتوي على جميع الستايلات

إعداد النوافذة لتقبل الستايلات

سنحتاج لتغيير أسماء معظم الكائنات وذلك لكي يسهل علينا التعامل معها بواسطة أسمائها :

إفتح تصميم النافذة الرئيسية وإختر زر التشغيل وغير إسمه من الخاصية Name إلى btnPlay

وغير إسم زر الإيقاف إلى btnStop

زر التسجيل - btnRecord

زر إيقاف التسجيل - btnStopRecord

زر التقديم - btnForward

زر التأخير - btnBackWard

زر ملئ الشاشة - btnFullScreen

زر الإيقاف المؤقت - btnPause

زر فتح الملفات - btnOpen

زر التحكم بالألومات - btnAlbumes

شريط التنقل عبر الملف - barMove

شريط التحكم بالصوت - barVol

صندوق طريقة التشغيل - boxMthd

ملاحظة عند إختيار صندوق طريقة التشغيل تأكد أنك إختر الصندوق وليس أحد مكوناته حتى تظر المربعات حول الصندوق

image17-5.JPG

ومن نافذة الألبومات قم بتغيير إسماء الكائنات أيضاً :

زر ألبوم جديد - btnNew

زر حفظ الألبوم - btnSave

زر حذف الألبوم - btnDelete

زر إضافة ملفات - btnAdd

زر حذف ملف - btnRemove

زر نقل الملف للأعلى - btnUp

زر نقل الملف للأسفل - btnDown

زر موافق - btnOk

زر إلغاء الأمر - btnCancel

تأكد عند نسخ الأسماء أنك نسخت الكلمة فقط دون فراغات في البداية أو النهاية

تغيير الأسماء سيساعدنا كثيرا في التعامل مع الكائنات بواسطة أسمائها

مثلاً للتعامل مع كائن زر التشغيل من الكود نستدعيه بإسمه btnPlay و للتعامل مع زر الإيقاف btnStop وهكذا ..

الآن إفتح تصميم النافذة الرئيسية و أختر كائن التشغيل التتابعي و غير الخاصية BackColor إلى Trasparent :

image7-7.jpg

طبق نفس الخطوة السابقة لكل من كائن التشغيل العشوائي , لافتة طول الملف والوقت الحالي للتشغيل, صندوق طريقة التشغيل , جميع أزرار التحكم - تشغيل , إيقاف , تقديم ....

إختر زر التشغيل وغير خاصية size إلى 40;40 وكذلك لجميع أزرار التحكم

وغير خاصية BackgroundImageLayout إلى Streatch لجميع أزرار التحكم

ثم أحذف القيمة الموجودة أمام خاصية Image وخاصية BackgroundImage لجميع أزرار التتحكم :

image17-4.JPG

ليصبح شكل النافذة هكذا :

image17-6.JPG

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

أما إذا أردت أن تبقى أزرار نافذة الألبومات عادية فلا تغير شيئ من خصائصها

إختر كائن حاضن الفيديو وغير خاصية BackgroundImageLayuot إلى Streatch

الآن إفتح المجلد Debug الموجود داخل المجلد bin داخل مجلد المشروع

وأضف مجلد جديد بهذا الإسم :

Styles

هذا هو المجلد الذي سيحتفظ بجميع مجلدات الواجهات المختلفة

image17-3.JPG

إفتح تصميم النافذة الرئيسية وإضف كائن القائمة المنسدلة :

image11-3.jpg

غير خاصية Name فيه إلى sc وخاصية Text إلى "إختر الستايل"

تحميل أسماء الستايلات

نحتاج إلى طريقة لتحميل أسماء الستايلات إلى قائمة إختيار الستايل sc

وكما قلنا سابقاً فإن كل ستايل هو عبارة عن مجلد داخل مجلد Styles

وبالتالي فإن الستايلات المتوفرة هي جميع المجلدات داخل مجلد Style

وهنا سنستخدم دالة لإيجاد المجلدات الفرعية دلخل مجلد رئيسي

الدالة هي : System.IO.Directory.GetDirectories

وهذه الدالة تستقبل مدخل واحد من نوع نص يمثل مسار المجلد الذي نريد إستخراج مجلداته الفرعية

ولأنها دالة وليست إجراء فإنها ترجع بقيمة

هذه القيمة من نوع مصفوفة نصوص تمثل مسارات المجلدات الفرعية مثلاً :

string[] subfld;
   subfld=System.IO.Directory.GetDirectories(@"c:\");

السطر الأول تعريف مصفوفة نصوص , والسطر الثاني إسناد ناتج الدالة للمصفوفة subfld

والتي تحمل عناصر من نوع نصوص كل عنصر يمثل مجلد موجود داخل القرص المحلي c

التعامل مع المصفوفات شرحناه مسبقاً في الدرس الثامن

الكود السابق ينتج المجلدات في القرص c ولكن لا نريد الحصول على المجلدات في القرص c بل نريد المجلدات في مجلد Style

ونعلم أن هذا المجلد موجود في مسار ملف البرنامج , ومن الخطأ أن نكتب التعليمة هكذا :

string[] subfld;
   subfld=System.IO.Directory.GetDirectories (@"c:\cs\project\bin\debug\styles");

لانه لو تغير مجلد البرنامج فلن تعمل التعليمة السابقة لأن مكان المجلد Style تغير

لذلك سنستخدم متغير جديدApplication.StartupPath يرجع قيمة من نوع نص تمثل مسار البرنامج , وعند الحصول على مسار البرنامج نضيف إليه إسم مجلد Style

وبالتالي نحصل على مسار مجلد الستايلات مهما تغير مكان البرنامج :

string[] subfld;
   subfld=System.IO.Directory.GetDirectories (Application.StartupPath + @"\Styles");

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

نحتاج الآن إلى دوارة for لتمر على جميع عناصر المصفوفة subfld وتضيف كل عنصر إلى قائمة إختيار الستايل

لكن هناك مشكلة المصفوفة subfld تحتوي على نصوص تمثل المسار الكامل لمجلد الستايل مثل :

c:\cs\project\bin\debug\styles\style1

ونحن نريد فقط إسم الستايل فقط في قائمة إختيار الستايلات :

style1

لحل هذه المشكلة سنستخدم خاصية التبديل في النص , وهي دالة تقوم بالبحث عن كلمة محددة وتبديلها بكلمة أخرى

التعليمة هي Replace وتوجد في أي متغير من نوع نص مثلاً :

string wrd;
   wrd="this is a test";
   wrd.Replace("test","good test");

السطر الأخير إستدعاء لتعليمة الإستبدال حيث تبحث عن كلمة test في المتغير wrd وتحولها إلى good test

وتصبح الجملة داخل متغير wrd :

this is a good test

سنستخدم هذه الخاصية لمسح مسار مجلد الستايلات في المصوفة subfld والإبقاء فقط على إسم مجلد الستايل

مثلاً لو كانت قيمة العنصر الأول من المصفوفة هي :

c:\cs\project\bin\debug\styles\style1

سنحصل على إسم المجلد فقط بهذه التعليمة :

subfld[0].Replace ("c:\cs\project\bin\debug\styles\","");

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

نلاحظ أن الجزء المحذوف من المسار هو نفسه المسار الناتج من تعليمة :

Application.StartupPath + @"\Styles"

لذلك ولكي تنجح التعليمة مهما تغير مسار البرنامج فسنغيرها كما فعلنا سابقاً :

subfld[0].Replace(Application.StartupPath + @"\Styles\","");

التعليمة السابقة سنكررها لكل عنصر من عناصر المصفوفة subfld بإستخدام دوارة for :

			for (int i = 0; i < subfld.Length; i++)
			   {
				   sc.Items.Add (subfld.Replace(Application.StartupPath + @"\Styles\", ""));
			   }

الدوارة السابقة تكرر العملية من الصفر حتى عدد عناصر المصفوفة subfld.Length كما عرفنا في الدرس الثالث

بقي أن نجمع كود إجراء قراءة الستايلات .

إجراء قراءة الستايلات

إذهب إلى كود التطبيق وإنسخ هذا الكود وتأكد أن يكون خارج أي إجراء آخر :

		void ReadAllStyles()
		   {
			   try
			   {
				   string[] subfld;
				   subfld = System.IO.Directory.GetDirectories (Application.StartupPath + @"\Styles");
				   for (int i = 0; i < subfld.Length; i++)
				   {
					   sc.Items.Add(subfld.Replace (Application.StartupPath + @"\Styles\", ""));
				   }
			   }
			   catch
			   {
				   MessageBox.Show("حدث خطأ أثناء محاولة قراءة الستايلات");
			   }
		   }

االسطر الأول تعريف مصفوفة من نوع نصوص , لاحظ القوسين بعد كلمة string للدلالة على أنها مصفوفة متغيرات وليست متغير واحد

السطر الثاني لتعبئة المصفوفة subfld بجميع المجلدات الفرعية لمجلد الستايلات

والسطر داخل دوارة for لإضافة إسم مجلد الستايل إلى قائمة إختيار الستايلات sc بعد أن نحذف منه المسار الغير ضروري

بقي أن نجد المكان المناسب لإستدعاء الإجراء السابق , وأفضل مكان هو عند تحميل النافذة الرئيسية

إذهب إلى تصمصم النافذة الرئيسية و أنقر مزدوجاً على أي مكان فارغ فيها ستنتقل إلى إجراء حدث تحميل النافذة :

		void MainFormLoad(object sender, System.EventArgs e)
		   {
				 doc.Load(Application.StartupPath + "//albumes.xml");
			   XmlNode albumesnd = doc["albumes"];
			   XmlNode alnd = albumesnd.FirstChild;
			   while (alnd != null)
			   {
				   ac.Items.Add(alnd.Name);
				   alnd = alnd.NextSibling;
			   }
		   }

أضف إستدعاء الإجراء ReadAllStyles قبل أخر حاصرة ليصبح الإجراء هكذا :

		void MainFormLoad(object sender, System.EventArgs e)
		   {
				 doc.Load(Application.StartupPath + "//albumes.xml");
			   XmlNode albumesnd = doc["albumes"];
			   XmlNode alnd = albumesnd.FirstChild;
			   while (alnd != null)
			   {
				   ac.Items.Add(alnd.Name);
				   alnd = alnd.NextSibling;
			   }
			   ReadAllStyles();
		   }

إجراء خزن الستايل المختار

عند إختيار أحد عناصر قائمة إختيار الستايلات المفروض أن يقوم البرنامج بتحميل ألوان وصور الستايل المختار

ويجب أن يتذكر البرنامج الستايل المحدد حتى لو أغلقنا البرنامج و أعدنا تشغيل الكمبيوتر

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

لذلك يجب أن نكون ملف نصي في مجلد Styles نكتب بداخله المجلد المختار

وعند تشغيل البرنامج مرة أخرى نقرأ الملف المختار من هذا الملف , لنسمي هذا الملف : CurrentStyle.txt

ولكتابة ملفات نصية سنستخدم إجراء جديد System.IO.File.WriteAllText يستقبل هذا الإجراء مدخلين من نوع نص الأول يمثل مسار الملف المراد كتابتة

والمدخل الثاني يمثل النص المراد كتابته في الملف , مثلاً :

System.IO.File.WriteAllText(@"c:\newtxt.txt","السلام عليكم");

الكود السابق يقوم بإنشاء ملف بإسم new.txt في القرص المحلي c ويكتب داخلة جملة "السلام عليكم"

بنفس الطريقة سنقوم بإنشاء ملف نصي بإسم CurrentStyle.txt لخزن الستايل المختار

لكن المسار هنا سيكون مجلد الستايلات Styles , ونستدعي إجراء خزن الستايل المختار عند إختيار عنصر من عناصر قائمة إختيار الستايلات

إفتح تصميم النافذة الرئيسية وأنقر مزدوجاً على قائمة إختيار الستايلات وفي الكود أكتب تعليمة خزن الملف المختار :

System.IO.File.WriteAllText (Application.StartupPath + @"\Styles\CurrentStyle.txt", sc.Text);

التعليمة السابقة ستقوم بإنشاء ملف نصي بإسم CurrentStyle.txt في مجلد الستايلات وتكتب داخله النص الموجود في قائمة إختيار الستايلات sc

إجراء تحميل الستايل المختار

كما قلنا فإن لكل ستايل ملف XML بإسم Style.XML موجود داخل مجلد الستايل , وعند إختيار ستايل من القائمة sc

المفروض أن يقوم البرنامج بقراءة ملف XML الموجود داخل مجلد الستايل وتحميل قيم الألوان والصور من داخله

أولاً يجب أن نقرأ قيمة الستايل المختار المخزنة في الملف النصي CurrentStyle.txt حتى نعرف أي ستايل يجب تحميله

وللقراءة من الملف النصي سنستخدم إجراء جديد يستقبل مدخل واحد يمثل مسار الملف المراد قراءته وينتج قيمة من نوع نص تمثل محتويات الملف :

System.IO.File.ReadAllText (@"c:\newtxt.txt");

الإجراء السابق ينتج قيمة من نوع نص تمثل محتويات الملف newtxt.txt الموجود في القرص المحلي c

وبنفس الطريقه سنقوم بقراءة الستايل المخزن في الملف CurrentStyle.txt :

			string currentstyle;
			   currentstyle= System.IO.File.ReadAllText (Application.StartupPath + @"\Styles\CurrentStyle.txt");

عرفنا متغير من نوع نص currentstyle وأسندنا له ما داخل الملف CurrentStyle.txt وهو إسم الستايل المختار

بمعرفة إسم الستايل المختار يمكن معرفة مكان ملف XML الذي يجب تحميله :

Application.StartupPath + @"\Styles\" + currentstyle + @"\Style.XML"

هذا هو مسار ملف XML للستايل المختار حيث أخذنا مسار البرنامج وإضفنا له مجلد Styles ثم إسم الستايل المختار currentstyle ثم إسم ملف XML

لقراءة القيم من الملف نحتاج لتعريف كائن من نوع XMLDocument كما فعلنا في الدرس الحادي عشر ولنسمه StyleDoc:

			XmlDocument StyleDoc = new XmlDocument();

ولتحميل قيم الملف المطلوب يجب إستدعاء إجراء Load بواسطة مسار الملف

			StyleDoc.Load (Application.StartupPath + @"\Styles\" + currentstyle + @"\Style.XML");

برنامج صنع الواجهات يكتب الألوان والصور في ملف XML بدلالة كلمات مفتاحية كل كلمة يخرن فيها قيمة

وتسمى الكلمات المفتاحية بالمفاتيح لأنها تعمل كدليل على القيمة , مثلاً المفتاح MainBackColor

هو دليل قيمة تمثل لون خلفية النافذة الرئيسية , ولا يمكن قراءة القمية من ملف XML إلا بمعرفة مفتاح القيمة وهو MainBackColor

وهذه هي جميع مفاتيح القيم ودلالاتها :

لون خلفية النافذة الرئيسية - MainBackColor

لون خلفية قائمة التشغيل - PlayListBackColor

لون الخط في قائمة التشغيل - PlayListFontColor

لون خلفية قائمة إختيار الألبوم في النا فذة الرئيسية - MainSelectAlbumeBackColor

لون الخط في قائمة إختيار الألبوم في النا فذة الرئيسية - MainSelectAlbumeFontColor

لون خلفية قائمة إختيار الستايل - MainSelectStyleBackColor

لون الخط في قائمة إختيار الستايل - MainSelectStyleFontColor

لون الخط في لافتة طول الملف والوقت الحالي للتشغيل - TimeFontColor

لون الخط في صندوق طريقة التشغيل - MethodFontColor

لون خلفية شريط التنقل - MoveBarColor

لون خلفية شريط التحكم بالصوت - SoundBarColor

لون الخط في مربع كتم الصوت - MuteFontColor

خلفية النافذة الرئيسية - MainBackGroundImage

خلفية زر الإيقاف - StopImage

خلفية زر التشغيل - PlayImage

خلفية زر التسجيل - RecordImage

خلفية زر التقديم - ForwardImage

خلفية زر التأخير - BackwardImage

خلفية زر إيقاف التسجيل - StopRecordingImage

خلفية زر فتح الملفات - OpenImage

خلفية زر الإيقاف المؤقت - PauseImage

خلفية زر ملئ الشاشة - FullScreenImage

خلفية حاضن الفيديو - VedioImage

لون خلفية نافذة الألبومات - AlbumesBackColor

لون الخط في قائمة الملفات في نافذة الألبومات - FilesFontColor

لون خلفية قائمة إختيار الألبوم في نافذة الألبومات - AlbumesSelectAlbumeBackColor

لون الخط في قائمة إختيار الألبوم في نافذة الأبومات - AlbumesSelectAlbumeFontColor

خلفية نافذة الألبومات - AlbumesBackGroundImage

خلفية زر الإضافة في نافذة الألبومات - AddImage

خلفية زر حذف الملفات - DeleteImage

خلفية زر نقل الملف إلى أعلى - UpImage

خلفية زر نقل الملف إلى أسفل - DownImage

خلفية زر ألبوم جديد - NewAlbumeImage

خلفية زر حفظ الألبوم - SaveAlbumeImage

خلفية زر حذف الألبوم - DeleteAlbumeImage

خلفية زر موافق - OkImage

خلفية زر إلغاء الأمر - CancelImage

خلفية قائمة الملفات - FilesImage

وهذه القيم كلها مخزنة في عقدة رئيسية إسمها Style وبالتالي لقراءة هذه القيم يجب تعريف متغير من نوع عقدة XMLNode لخزن العقدة الرئيسية :

			XmlNode StyleNode = StyleDoc["Style"];

الأن يمكن إستدعاء أي قيمة من خلال العقدة StyleNode فمثلاً لإستدعاء قيمة لون خلفية النافذة الرئيسية MainBackColor

StyleNode["MainBackColor"].InnerText

التعليمة السابقة ستنتج نص يمثل قيمة لون خلفية النافذة الرئيسية ولتغيير لون خلفية النافذة الرئيسية :

this.BackColor = StyleNode["MainBackColor"].InnerText;

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

لكن في التعليمة السابقة فإن القيمة من ملف XML هي من نوع نص يمثل رقم اللون وبالتالي يجب تغيير هذا النص إلى لون كيف ؟

لدينا دالة لتغيير رقم اللون إلى كائن لون :

Color.FromArgb(25698);

الدالة السابقة تحول الرقم 25698 إلى لون , وبنفس الطريقة سنغير القيمة الناتجة من ملف XML إلى لون :

this.BackColor = Color.FromArgb (StyleNode["MainBackColor"].InnerText);

التعليمة السابقة أيضاً خاطئة لأن الدالة Color.FromArgb يجب أن تستقبل مدخل من نوع رقم , بينما القيمة الناتجة من ملف XML تمثل نص

وبالتالي يجب أيضاً تحويلها إلى رقم بواسطة كائن التحويل Convert.ToInt32 وتصبح التعليمة الصحيحة :

this.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["MainBackColor"].InnerText));

وهكذا لجميع قيم الألوان , فمثلا لتغيير خلفية قائمة التشغيل pl :

نرجع لجدول الكلمات المفتاحية ومدلولاتها ونبحث عن مفتاح خلفية قائمة التشغيل , سنجده PlayListBackColor

pl.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["PlayListBackColor"].InnerText));

وهكذا يجب كتابة تعلميات تحويل لجميع الكلمات المفتاحية حسب التسميات في التطبيق لديك

ولتغيير خلفيات الأزرار أو الكائنات سنستخدم الخاصية Image.FromFile والتي تنتج متغير من نوع صورة وتستقبل مدخل واحد يمثل مسار ملف الصورة

مثلاً لتغيير خلفية حاضن الفيديو نتعامل معه بإسمه وهو p1 :

p1.BackgroundImage=Image.FromFile (@"c:\back.jpg");

التعليمة السابقة تقوم بتغيير خلفية كائن الحاضن إلى الصورة back.jpg الموجودة في القرص المحلي c

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

حيث أن ملف XML يحتوي فقط على إسم الصورة ولا يحتوي على مسارها كاملاً , ونعلم أن مسارها هو نفس مسار مجلد الستايل

وبالتالي يجب إنشاء متغير من نوع نص لخزن مسار الستايل الحالي الذي يحتوي على الصور :

		   string stylepath;
				   stylepath = Application.StartupPath + @"\Styles\" + currentstyle + @"\";

أضفنا إلى مسار مجلد البرنامج مجلد الستايلات ثم أضفنا إسم الملف المختار currentstyle وبالتالي فإن المتغير الجديد stylepath سيحتوي على المسار الكامل للصور في الستايل المختار

بقي أن نجد إسم الصورة من ملف XML

نبحث عن الكلمة المفتاحية لقيمة خلفية كائن الفيديو وهي VedioImage

p1.BackgroundImage = Image.FromFile (stylepath + StyleNode["VediotImage"].InnerText);

ولكن أحياناً لا يحتوي ملف XML على قيمة إذا أدرنا أن تكون الخلفية فارغة وبالتالي الكود السابق سينتج خطأ لانه لا يوجد قمية عند المفتاح VedioImage

لذلك يجب وضع التعليمة السابقة ضمن جملة Try Catch :

		   try
			  { 
				  p1.BackgroundImage = Image.FromFile (stylepath + StyleNode["VediotImage"].InnerText);
			  }
			  catch
			  {
			  }

ولإختصار المساحة يمكن كتابة الكود في سطر واحد :

		   try
			  { 
				  p1.BackgroundImage = Image.FromFile (stylepath + StyleNode["VediotImage"].InnerText);
			  }
			  catch
			  {
			  }

وهكذا لجميع خلفيات الأزرار و الكائنات الأخرى , مثلاً زر التشغيل الذي إسمه btnPlay

نبحث عن مفتاح خلفية زر التشغيل في جدول المفاتيح سنجده PlayImage :

		   try { btnPlay.BackgroundImage = Image.FromFile (stylepath + StyleNode["PlayImage"].InnerText);}catch{}

و زر الإيقاف الذي إسمه btnStop سنجد أن مفتاح خلفية زر الإيقاف هو StopImage :

		   try { btnStop.BackgroundImage = Image.FromFile (stylepath + StyleNode["StopImage"].InnerText);}catch{}

وهكذا لجميع الكلمات المفتاحية في الجدول السابق , وبتجميع الكود في إجراء واحد يستخدم لتحميل قيم الستايل المختار ولنسمي هذا الإجراء LoadStyle :

إفتح كود النافذة الرئيسية وأنسخ هذا الإجراء وتأكد أنه خارج أي إجراء آخر

		void LoadStyle()
		   {
			   try
			   {
				   string currentstyle;
				   currentstyle = System.IO.File.ReadAllText (Application.StartupPath + @"\Styles\CurrentStyle.txt");
				   sc.Text = currentstyle;

				   XmlDocument StyleDoc = new XmlDocument();
				   StyleDoc.Load(Application.StartupPath + @"\Styles\" + currentstyle + @"\Style.XML");
				   XmlNode StyleNode = StyleDoc["Style"];


				   this.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["MainBackColor"].InnerText));
				   pl.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["PlayListBackColor"].InnerText));
				   pl.ForeColor = Color.FromArgb (Convert.ToInt32(StyleNode["PlayListFontColor"].InnerText));
				   ac.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["MainSelectAlbumeBackColor"].InnerText));
				   ac.ForeColor = Color.FromArgb (Convert.ToInt32(StyleNode["MainSelectAlbumeFontColor"].InnerText));
				   sc.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["MainSelectStyleBackColor"].InnerText));
				   sc.ForeColor = Color.FromArgb (Convert.ToInt32(StyleNode["MainSelectStyleFontColor"].InnerText));
				   len.ForeColor = Color.FromArgb (Convert.ToInt32(StyleNode["TimeFontColor"].InnerText));
				   boxMthd.ForeColor= Color.FromArgb (Convert.ToInt32(StyleNode["MethodFontColor"].InnerText));
				   serbtn.ForeColor= Color.FromArgb (Convert.ToInt32(StyleNode["MethodFontColor"].InnerText));
				   rndbtn.ForeColor= Color.FromArgb (Convert.ToInt32(StyleNode["MethodFontColor"].InnerText));			  
				   barMove.BackColor= Color.FromArgb (Convert.ToInt32(StyleNode["MoveBarColor"].InnerText));
				   barVol.BackColor=Color.FromArgb (Convert.ToInt32(StyleNode["SoundBarColor"].InnerText));
				   mute.ForeColor=Color.FromArgb (Convert.ToInt32(StyleNode["MuteFontColor"].InnerText));


				   string stylepath;
				   stylepath = Application.StartupPath + @"\Styles\" + currentstyle + @"\";

				   try { this.BackgroundImage = Image.FromFile (stylepath + StyleNode["MainBackGroundImage"].InnerText); }catch { }
				   try { btnStop.BackgroundImage = Image.FromFile (stylepath + StyleNode["StopImage"].InnerText); }catch { }
				   try { btnPlay.BackgroundImage = Image.FromFile (stylepath + StyleNode["PlayImage"].InnerText); }catch { }
				   try { btnRecord.BackgroundImage = Image.FromFile (stylepath + StyleNode["RecordImage"].InnerText); }catch { }
				   try { btnForward.BackgroundImage = Image.FromFile (stylepath + StyleNode["ForwardImage"].InnerText); }catch { }
				   try { btnStopRecord.BackgroundImage = Image.FromFile (stylepath + StyleNode["StopRecordingImage"].InnerText); }catch { }
				   try { btnBackWard.BackgroundImage = Image.FromFile (stylepath + StyleNode["BackwardImage"].InnerText); }catch { }
				   try { btnOpen.BackgroundImage = Image.FromFile (stylepath + StyleNode["OpenImage"].InnerText); }catch { }
				   try { btnPause.BackgroundImage = Image.FromFile (stylepath + StyleNode["PauseImage"].InnerText); }catch { }
				   try { btnFullScreen.BackgroundImage = Image.FromFile (stylepath + StyleNode["FullScreenImage"].InnerText); }catch { }
				   try { p1.BackgroundImage = Image.FromFile (stylepath + StyleNode["VedioImage"].InnerText); } catch { }
			   }
			   catch
			   {
				   MessageBox.Show("حدث خطأ أثناء تحميل الستايل");
			   }
		   }

الجزء الأول من الإجراء السابق لقراءة الستايل المختار من ملف CurrentStyle.txt

وإنشاء كاءن XMLDocument وتحميل ملف XML للستايل المختار

والجزء الثاني لتحميل ألوان الكائنات كما شرحنا سابقاً

والجزء الثالث لتحميل الصور للكائنات كما شرحنا أيضاً

لاحظ أن خاصية الخلفية للكائنات هي :

BackgroundImage

وخاصية لون الخلفية لأي كائن هي :

BackColor

وخاصية لون الخط لأي كائن هي :

ForeColor

بقي أن نضيف مكان مناسب لإستدعاء هذا الإجراء , وأنسب مكان هو حدث إختيار ستايل من قائمة إختيار الستايلات

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

			System.IO.File.WriteAllText (Application.StartupPath + @"\Styles\CurrentStyle.txt", sc.Text);

أضف بعده سطر إستدعاء إجراء تحميل الستايل ليصبح الكود هكذا :

			System.IO.File.WriteAllText (Application.StartupPath + @"\Styles\CurrentStyle.txt", sc.Text);
			   LoadStyle();

يوجد هناك مكان آخر يجب أن نستدعي فيه هذا الإجراء وهو عند بداية تشغيل البرنامج أي عند حدث تحميل النافذة الرئيسية

إذهب إلى الكود وأنقر مزدوجا في أي مكان فراغ من النفاذة الرئيسية لتذهب إلى الكود , أضف تعليمة الإستدعاء في نهاية الإجراء ليصبح هكذا :

			doc.Load(Application.StartupPath + "//albumes.xml");
			   XmlNode albumesnd = doc["albumes"];
			   XmlNode alnd = albumesnd.FirstChild;
			   while (alnd != null)
			   {
				   ac.Items.Add(alnd.Name);
				   alnd = alnd.NextSibling;
			   }
			   ReadAllStyles();
			   LoadStyle();

بهذا أكملنا وظائف تغيير الستايل في النافذة الرئيسية , بقي أن نضيف نفس الإجراء لنافذة الألبومات :

إفتح كود نافذة الألبومات وإنسخ الكود التالي وتأكد أنه خارج أي إجراء آخر :

		void LoadStyle()
		   {
			   try
			   {
				   string currentstyle;
				   currentstyle = System.IO.File.ReadAllText(Application.StartupPath + @"\Styles\CurrentStyle.txt");

				   XmlDocument StyleDoc = new XmlDocument();
				   StyleDoc.Load (Application.StartupPath + @"\Styles\" + currentstyle + @"\Style.XML");
				   XmlNode StyleNode = StyleDoc["Style"];


				   this.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["AlbumesBackColor"].InnerText));
				   lv.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["FilesFontColor"].InnerText));
				   ac.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["AlbumesSelectAlbumeBackColor"].InnerText));
				   ac.BackColor = Color.FromArgb (Convert.ToInt32(StyleNode["AlbumesSelectAlbumeFontColor"].InnerText));


				   string stylepath;
				   stylepath = Application.StartupPath + @"\Styles\" + currentstyle + @"\";

				   try { this.BackgroundImage = Image.FromFile (stylepath + StyleNode["AlbumesBackGroundImage"].InnerText); }catch { }
				   try { btnAdd.BackgroundImage = Image.FromFile (stylepath + StyleNode["AddImage"].InnerText); }catch { }
				   try { btnRemove.BackgroundImage = Image.FromFile (stylepath + StyleNode["DeleteImage"].InnerText); }catch { }
				   try { btnUp.BackgroundImage = Image.FromFile (stylepath + StyleNode["UpImage"].InnerText); }catch { }
				   try { btnDown.BackgroundImage = Image.FromFile (stylepath + StyleNode["DownImage"].InnerText); }catch { }
				   try { btnNew.BackgroundImage = Image.FromFile (stylepath + StyleNode["NewAlbumeImage"].InnerText); }catch { }
				   try { btnSave.BackgroundImage = Image.FromFile (stylepath + StyleNode["SaveAlbumeImage"].InnerText); } catch { }
				   try { btnDelete.BackgroundImage = Image.FromFile (stylepath + StyleNode["DeleteAlbumeImage"].InnerText); }catch { }
				   try { btnOk.BackgroundImage = Image.FromFile (stylepath + StyleNode["OkImage"].InnerText); }catch { }
				   try { btnCancel.BackgroundImage = Image.FromFile (stylepath + StyleNode["CancelImage"].InnerText); }catch { }
				   try { lv.BackgroundImage = Image.FromFile (stylepath + StyleNode["FilesImage"].InnerText); }catch { }
			   }
			   catch
			   {
				   MessageBox.Show("حدث خطأ أثناء تحميل الستايل");
			   }
		   }

هذا الإجراء يشبه كثيراً نفس الإجراء في النافذة الرئيسية إلا أنه هنا للتعامل مع كائنات نافذة الألبومات

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

إذهب إلى تصميم نافذة الألبومات وأنقر مزدوجاً على أي مكان فارغ فيها

وأضف إلى الكود تعليمة إستدعاء الإجراء ليصبح هكذا :

			 FillView();
				FillCombo();
							LoadStyle();

الواجب:

صمم ستايل جديد بواسطة برنامج صنع الستايلات وطبقة في البرنامج

ملاحظة : برنامج مصمم الستايلات ينتج مجلد بنفس إسم الستايل الذي إخترته

قم بنسخ المجلد كامل إلى مجلد Styles في مسار البرنامج , وعند تشغيل البرنامج سيضاف الستايل إلى القائمة المنسدله

أرسل التطبيق .

.نهاية الدرس السابع عشر.

..

تم تعديل هذه المشاركة بواسطة حماة النهضة في 8 سبتمبر 2007 في 08:44

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

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

أخي , هل تطبق الدروس كما في الشرح ؟ أرى أن شفرتك مختلفه قليلاً

المهم الخطأ بسيط , في إجراء LoadFile ستجد الجمله التالية مكتوبه مرتين :

كودopenFileDialog1.FileName

أكتب بدلاً منهما :

كودpath

بالتوفيق أخي خالد

جزاك الله خيرا اخي علي الرد وفعلا المشكله اتحلت

وبالنسبه لتطبيق الدروس كما ذكرت فانا افهم الدرس

ثم اطبقه بطريقتي حتي اتاكد اني استوعبت الشرح

والف شكر علي المساعده

Khaled_Tiger

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

يخاطبني السفيه بكل قبح *** فأكره أن أكون له مجيبا

يزيد سفاهة فأزيد حلمــا *** كعود زاده الإحراق طيبا

إذا نطق السفيه فلا تجبه *** فخير من إجابته السكوت

فإن كلَمته فرَجت عنــــه *** وإن خليته كمداً يـمـــوت

#184

السلام عليكم اخي حماة النهضة

بارك الله فيك على ذه الدروس الرائعة

جاري المطالعة

بالتوفيق

#185

أخي حماة الفضيلة

السلام عليكم

قمت بتعديل الملف ولكن نفس المشكلة ظلت

عندما أنقر على " لوحة التحكم بالألبومات " تظهر لي رسالة " حدث خطأ أثناء إسترجاع الألبومات "

وعند إضافة ألبوم جديد والضغط على حفظ تظهر لي رسالة " حدث خطأ أثناء حفظ الألبومات "

ولا يتم الحفظ

ارجوا منك لإطلاع على البرنامج

qahtaan_09_07_1189179681.rar

وعذرا على إرهاقك بالردود ولكن تأكد أننا نود الإستفادة منك بأقصى درجة

وجزاك الله الجنة

تم تعديل هذه المشاركة بواسطة Ben_Laiid في 7 نوفمبر 2007 في 21:22

#186

السلام عليكم

مشكله كبير

من يومين وانا اجرب

ما في حل

كنتت فاكر انه من جهازي لكن نفس المشكله في غير جهاز

والمشكله هي

بعد رفع ملف

Microsoft.DirectX.AudioVideoPlayback

من Referenes

قمت بتعريفه في

class

البرنامج

لكن

ما شتغل

طلع ذا الخطا

عندما اكبس على زر "فتح ملف"

في الصوره

وايضا نفس الخطا

مع ملفات الريل

d45bf729e1.JPG

الصوره الثانيه

0e98d9059a.JPG

مع العلم اني استخدم

Visual studio 2005

C#

وايضااحد الاخوه مرفق الواحب في الدراس الرابع الملف التنفيذي فقط

استبدلته مع الملف الذي عندي اشتغل ميه ميه

وشكرا لكم

تم تعديل هذه المشاركة بواسطة y85.fox في 9 سبتمبر 2007 في 01:16

#187
اقتباس
أخي حماة الفضيلة

السلام عليكم

قمت بتعديل الملف ولكن نفس المشكلة ظلت

عندما أنقر على " لوحة التحكم بالألبومات " تظهر لي رسالة " حدث خطأ أثناء إسترجاع الألبومات "

وعند إضافة ألبوم جديد والضغط على حفظ تظهر لي رسالة " حدث خطأ أثناء حفظ الألبومات "

ولا يتم الحفظ

ارجوا منك لإطلاع على البرنامج

http://www.qahtaan.com/works/up/download.p...-1189179681.rar

وعذرا على إرهاقك بالردود ولكن تأكد أننا نود الإستفادة منك بأقصى درجة

وجزاك الله الجنة

أخي يجب أن تعدل الملف الموجود في مجلد Debug

وليس الملف الموجود في مجلد التطبيق

y85.fox

هذا ليس خطأ , وإنما هو تحذير فقط , ولإزالته إذهب إلى قائمة Debug ثم Exceptions

debugexeption.JPG

ثم من النافذة الناتجة إختر :

Managed Debuggting Assistants

,وإبحث عن Loader Lock وقم بإزالة الإشارة من مربع الخيار أمامها ثم إختر OK

loaderlock.JPG

بالتوفيق للجميع :)

..

تم تعديل هذه المشاركة بواسطة حماة النهضة في 9 سبتمبر 2007 في 11:59

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#188

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

ما شاء الله اخي علي دروسك الرائعه

هذا هو البرنامج لغاية الالبومات وشغال تمام مفيش اي مشاكل

MediaPlayer

بس عندي ملاحظه اخي حماة النهضه

في كود حفظ الالبومات مش هيرضي يحفظ الالبوم الا اذا كانت الاغاني في نفس فولدر البرنامج

فهل هناك طريقه انه يحفظ الالبوم مكان ما اختار الاغاني

Khaled_Tiger

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

يخاطبني السفيه بكل قبح *** فأكره أن أكون له مجيبا

يزيد سفاهة فأزيد حلمــا *** كعود زاده الإحراق طيبا

إذا نطق السفيه فلا تجبه *** فخير من إجابته السكوت

فإن كلَمته فرَجت عنــــه *** وإن خليته كمداً يـمـــوت

#189

هذه عدد من الستايلات الجاهزة يتم إستخدامها بنسخ جميع المجلدات إلى مجلد Styles

1.JPG

4.JPG

3.JPG

2.JPG

5.JPG

6.JPG

7.JPG

8.JPG

9.JPG

10.JPG

تحميل الستايلات

بالتوفيق للجميع :)

..

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#190
khaled_tiger كتب:
السلام عليكم ورحمة الله وبركاته

ما شاء الله اخي علي دروسك الرائعه

هذا هو البرنامج لغاية الالبومات وشغال تمام مفيش اي مشاكل

MediaPlayer

بس عندي ملاحظه اخي حماة النهضه

في كود حفظ الالبومات مش هيرضي يحفظ الالبوم الا اذا كانت الاغاني في نفس فولدر البرنامج

فهل هناك طريقه انه يحفظ الالبوم مكان ما اختار الاغاني

أخي أظنك لا تقرأ الدروس

وضحنا في الدروس أكثر من مرة أنه يجب تحديد مسار ملف الألبومات بهذا الكود :

doc.Load(Application.StartupPath + "//albumes.xml");

للتحميل , وللحفظ بهذا الكود :

doc.ٍSave(Application.StartupPath + "//albumes.xml");

أما أ نت فتكتبها هكذا :

doc.Load("albumes.xml");

وهكذا :

 doc.Save("albums.xml");

وهذا هو الخطأ , عدل جميع التعليمات في البرنامج وأضف مسار الملف وليس إسمه فقط

بالتوفيق :)

تم تعديل هذه المشاركة بواسطة حماة النهضة في 10 سبتمبر 2007 في 18:14

إعذرونا , سنضطر للغياب فترة كبيرة

الأمر ليس بيدنا ...... فسامحونا

#191

جزاك الله خيرا اخي علي الرد

ولكن اعذرني فا انا في احيان كثيره اقرأ الدرس في عجاله وفي حاجات بتروح مني

ولكن اشكر لك سعة صدرك وجزاك الله خيرا علي ما تقدم لتنفعنا به

تم تعديل هذه المشاركة بواسطة khaled_tiger في 10 سبتمبر 2007 في 20:47

Khaled_Tiger

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

يخاطبني السفيه بكل قبح *** فأكره أن أكون له مجيبا

يزيد سفاهة فأزيد حلمــا *** كعود زاده الإحراق طيبا

إذا نطق السفيه فلا تجبه *** فخير من إجابته السكوت

فإن كلَمته فرَجت عنــــه *** وإن خليته كمداً يـمـــوت

#192

السلام عليكم

مشكله ::::

ملفات الريل لم تعمل

هذه رسالة التحذير:

Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

صوره

8189882fba.JPG

وايضا عندما اعطل الكود

يعمل البرنامج بشكل جيد مع الملفات العاديه صوت وصوره

لكن ليس rm

#193

السلام عليكم

انا قرات الموضوع حديثا ,ان هذا المشروع ممتاز وإن شاء الله الى الامام.

عندي مشكلة عند تنفيذ كود تشغيل الصوت ,مع اني وضعت تراي وكاتش ولكن ما نفع,طبعا المشكلة في الكبستسن (تاعت التشغيل و فتح الملف)

ارجو المساعدة.

#194

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

يا جماعة انا عندى مشكلة فى البرنامج مش عارف جاية منين لما أدوس على زرار

التحكم بالألبومات

تطلع الرسالة اللى المفروض تطلع لما يكون فى error

وبردوا البرنامج ما بيقومش بعملية الsave Albume

وكمان choose Album

بردوا ما بتعملش حاجة

وكمان فى مشكلة ظهرت بعد ما ضفت الStyles

إن الصورة بتاعت مثلا الأفلام ما بقتش تظهر ولا أى حاجة فيها صورة بقات تظهر يبقى فى صوت لكن صورة لا

ومش عارف المشكلة فين

معلش هتعبكوا معاى

ياريت اللى يعرف حل لأى مشكلة فيهم يقولى

وجزاكم الله خيرا

البرنامج فى المرفقاتMyMediaPlayer.rar

#195

عندي سؤال صغير

كيف استعطيع قراءة Metadata الخاصة بالملفات الصوتية مثل MP3???

My_Sign.jpg
#196

السلام عليكم :lol:

أخي y85.fox

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

Microsoft.DirectX.AudioVideoPlayback

ولم تضف معه

Microsoft.DirectX

وشكرا (h)

#198
MohamedAliSalim كتب:
السلام عليكم

وجدت مشكلة عندي أثناء متابعتي للدرس الرابع

اولا لم اجد الــ Main اللي قلت عليها دي

وجدتها بالفعل بس في مكان تاني بعيد عن الفورمة

ملحوظة : انا استخدم Microsoft Visual Studio 2005

المهم

بعد البحث وجدتها بالفعل انظر الصورة

post-73411-1182211355_thumb.jpg

ولكني عندما اقوم بوضع التعريف ده

private Audio ap;

فوقها كما قلت يظهر لي خطأ انظر الصورة

post-73411-1182211496_thumb.jpg

فقلت اضعها في هذا المكان

حيث جربته مع متغير عادي من النوع انتجر وندهته ونفع الحمد لله

post-73411-1182211583_thumb.jpg

ولكن عندما اشغل المشروع واضغط على فتح الملف الصوتي تظهر لي هذه الرسالة

post-73411-1182211663_thumb.jpg

وهذا هو نص الرسالة

post-73411-1182211727_thumb.jpg

واريدك ان تعلم ان الملف اللي مذكور في الخطأ موجود بالفعل مكانه

post-73411-1182211784_thumb.jpg

فما المشكلة هنا ؟؟؟

اريد الحل سريعا ً حتى استطيع ان اتابع معاك دون عطلة او تأخير

وشكرا جدا

نفس المشكله ::(

Success Is A Journey Not A Destination

#199

السلام عليكم .. هذه روابط الدروس والكتاب كامله لحد الان

جزى الله كاتبها كل خير عنا

روابط الدروس :

على شكل كتاب pdf

أو

على شكل صفحات HTML

Success Is A Journey Not A Destination

#200

مرحبااااااااااااااااااااااااااااااااااااااااااااا

أريد مساعدة ارجوك أرجوك ارجوك

انا اعمل معكم في هذا المشروع وسيقبله الأستاذ مني كمشروع تخرج

ولكن

عم يطلعلي أخطاء كثيرة أرجو المساعدة فورا فورا أرررررررررررررررجوكم

عم يطلعلي الخطأ التالي بعد إضافة المكتبة الخاصة بالريل بلير

"the type or namespace name 'AxInterop' coud'nt be found(are you missing usind directive or assembly referance)"

أرجو المساعدة فورا ولكم جزيل الشكر

الامر مستعجل

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

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

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

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

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

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