العودة   منتدى رياض الجنة - Riad Al-Ganah > الرياض التقنية > روضة الكورسات والدورات التقنية والعلمية > روضة دورات تقنية الـ .NET بلغاتها المختلفة > دورة .NET 2008 من منتدى فيجوال بيسك للعرب

دورة .NET 2008 من منتدى فيجوال بيسك للعرب مقدم الدورة : أحمد جمال ، نوع الدورة : كتابية مصحوبة بصور ، حالة الدورة : انتهت ، عدد الدروس : 80 درس . مستوى الدورة : من البداية للاحتراف .

إضافة رد

 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 02-16-2010, 03:11 AM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس الرابع : واجهة Orcas الأساسية .net 2008

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

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

بنية اللغة .net والتعرف على الطرق والخصائص والفئات ... ال Structs وال Enums وكل ما يتعلق ببنية البرمجة .


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

بسم الله نبدأ ...

كيف اكتب الكود ؟

الإجابة التقليدية على السؤال السابق هي من خلال Visual Studio 2008 ، إلا أن هذه الاجابة ليست مكتملة تماماً ، فالإجابة الصحيحة هي انه ومن خلال وجود فقط .net framewrok 3.5 development kit على أي جهاز فإنك ستكون قادراً على تطوير تطبيقات .net 2008 ، سنتعرف في هذا الدرس على عجالة على بعض هذه الطرق قبل ان ننتقل للحديث حول الطريقة الاساسية التي سنتعامل معها من خلال Visual Studio 2008 ...

مبدئياً يمكنك تحميلها من هذا الرابط

*** استخدام Visual Studio 2008 Command Prompt :



لو افترضنا اننا سنقوم ببرمجة C# ، يمكنك من خلاله كتابة الأمر csc -? الإطلاع على الأوامر المطلوبة ، ستكون هذه الأوامر كافية لتستطيع البدء بترجمة كود C# ، لكن ستتضطر لعمل كل شيء يدوياً ، ستحتاج لتحديد ال out والاسمبلي والملفات .... الخ ، في المقابل ستستفيد من ميزة كونك تقوم بعمل كل شيء يدويا وهو ما يتيح لك فرصة ذهبية للتحكم في كل ما يتعلق بالبرنامج من الألف إلى الياء .

يمكنك معرفة المزيد ابتداء من هذا الرابط من مايكروسوفت :
[IMG]http://msdn2.microsoft.com/en-us/library/78f4aasd(VS.80).aspx[/url]

استخدام ال TextPad :

تطبيق قابل لاعادة التهيئة ، بمعنى انه قابل للعمل على اي شيء وقابل للتخصيص ليعمل كأي شيء ، نسخة مطورة من ال Notepad قابله للتطوير والتعديل ، يمكنك استخدامها كاداة تحرير لاي لغة برمجةاو صفحات ويب او HTML او حتى اسمبلي ... يمكنك استخدامها لتريب اوراقك ... لأي شيء ما دمت تستطيع تعديل الخصائص المطلوبة .

http://www.textpad.com/img/screensho...pad-and-c.aspx

كما تستطيع ان تجد ملفات كل لغات البرمجة او الوصف لتركيبها على ال Textpad هنا :
http://www.textpad.com/add-ons/cliplibs.html

بامكانك التعديل في لغة البرمجة نفسها إن اردت عن تغيير ال RE ، لو قمت بوضع قوانين للغة البرمجة خاصتك فباستطاعتك تنفيذها على ال Textpad ايضاً .

استخدام Notepad++ :

تطبيق مماثل ، إلا انه مجاني بالكامل ، يتيح لك بعض الخصائص التي ربما لا تتوفر لل Textpad مثل خاصية ال auto complete ، اضف لذلك انه مفتوح المصدر بمعنى انه متاح بالسورس كود .


http://static.flickr.com/76/21944647...t/uk/about.php

البرنامج نفسه تجده هنا مع مراحل تطويره حيث انه Open Source .
http://sourceforge.net/projects/notepad-plus/


SharpDevelop :

موجه لخدمة ال C# ، يتميز بوجود واجهة للتصميم ايضاً :
[url]http://static.icsharpcode.net/OpenSource/SD/TeaserSharpDevelop2OnVista.png[/IMG]

أولا - تنقيح الأخطاء Debugging Your Application

عند تطوير تطبيق ما يواجه المبرمج مشاكل وأخطاء تظهر أثناء التنفيذ أو الترجمة وتنقسم هذه الأخطاء إلى عدة أنواع: خطأ بالصيغة وهذا يسهل اكتشافه حيث لن يقوم الـ Compiler بترجمة المشروع وتنفيذه إن وجد خطأ من هذا النوع وقد تعترض عليه بيئة التطوير أثناء كتابتك لشفرة البرنامج - خط أحمر تحت العبارة - وأخطاء وقت التنفيذ وهذه أخطاء طارئة تحدث أثناء تنفيذ البرنامج ويجب مراقبتها في الشيفرة وهنا نستخدم عبارة Try ... Catch لحصر تلك الأخطاء وتجاوزها مثل عندما يحاول البرنامج فتح ملف قد يكون غير متوفر للفتح لأسباب متعددة مرتبطة ببيئة التشغيل وستجد شرحا عن هذا الأمر في موضوعي الاستثناءات Exceptions اصطياد الأخطاء ومعالجتها ونوع آخر وهي أخطاء منطقية في الكود حيث تلاحظ أن صيغة الأوامر صحيحة ولكن البرنامج لايقوم بالعمل كما يجب ففي هذه الحالة طرق تجاوز النوعين السابقين من المشاكل لن تفيدك وستضطر لاستخدام أدوت التنقيح Debugging tools لحصر وتصحيح تلك المشاكل وفيما يلي بعض النقاط التي تساعدك على استخدام هذه الأدوات لتجاوز المشاكل من النوع الأخير راجيا أن تغطي هذه العجالة قسما مما يستحقه هذا الموضوع من البحث

- يمكنك وضع نقاط التوقف Break Points لإيقاف تنفيذ البرنامج عند سطر معين ويمكن بعد التوقف متابعة تنفيذ البرنامج باستخدام F11 للمتابعة سطر سطر أو F5 لمتابعة تنفيذ البرنامج
يمكن وضع نقاط التوقف أو إزالتها باختيار البند Toggle Breakpoints من قائمة Debug أو ضغط المفتاح F9 أو النقر على الهامش الرمادي بجانب السطر المراد التوقف عنده وتظهر دائرة حمراء بجانب السطر دلالة على وضع نقطة التوقف عنده
- لتشغيل البرنامج مع التنقيح اختر Start Debugging من قائمة Debug أو اضغط F5 ولتشغليه بدون تنقيح اختر Start Without Debugging أو اضغط Ctrl+F5
- يمكنك ضغط المفتاح F11 لبدء البرنامج مع التنقيح سطر سطر
- اضغط F11 سترى أنك قد انتقلت لأول سطر كود سيتم تنفيذه ولمتابعة تنفيذ البرنامج سطر سطر تابع ضغط F11 سترى في كل مرة أنه قد نفذ سطرا آخر من البرنامج حيث يمكنك استخدام هذه الطريقة للفهم الدقيق لكيفية تنفيذ البرنامج
- يمكنك إيقاف تنفيذ البرنامج وذلك إما بالضغط على زر التوقف من شريط الأدوات أو Shift-F5
- اضغط F5 لتشغيل البرنامج وبهذا يبدأ تشغيل المنقح ويستمر تنفيذ الكود حتى يمر على نقطة توقف Break Point وعندها يتوقف عند السطر المحدد بنقطة التوقف المحددة سابقا وبينما أنت في وضع التوقف يمكنك متابعة بيانات الفئات في البرنامج عبر نافذتي Auots و Locals
- نافذة locals تريك جميع المتغيرات المعرفة ضمن مجال التنفيذ الحالي حيث يمكنك استخدامها لرؤية جميع خصائص تلك المتغيرات وقيمها ونافذة Autos تعمل بطريقة مشابهة ولكنها ترينا متغيرات قد لاتكون معرفة ضمن مجال التنفيذ الحالي
- إذا أوقفت مؤشر الفأرة فوق متغير أو خاصية ما وأنت في وضع التوقف ستلاحظ ظهور نافذة صغيرة تظهر لك تلك الخاصية وقيمتها ويمكنك عند الحاجة تغيير تلك الخاصية بالنقر المزدوج عليها وكتابة قيمة جديدة أو الضغط بالماوس اليميني عليها ثم اختيار Edit Value من القائمة وتغيير تلك القيمة حيث يمكنك بعدها متابعة التنقيح باستخدام F11
- لتغيير السطر التالي الذي سيتم تنفيذ الكود عنده فقط انقر بالماوس اليميني على الخاصية واختر من القائمة Set Next Statement ستلاحظ تغير مكان السهم الأصفر الذي يدل على السطر التالي الذي سيتم تنفيذه
- عندما توقف مؤشر الفأرة في وضع التوقف فوق نوع بيانات مركب مثل Me التي تشير للفئة الحالية مثلا أو متغير يشير إلى فئة أو تركيب ما أو قد يشير إلى Dataset مثلا يمكنك بالضغط على إشارات + لتنقل ورؤية جميع خصائص تلك الفئة أو نوع البيانات المركب أو تغييرها وذلك بنفس الطريقة التي تستخدمها للتنقل بين عناصر TreeView
- إذا أردت تنفيذ البرنامج حتى يصل لسطر معين يمكنك فعل ذلك مباشرة بدون الضغط على F11 للتنفيذ وذلك بالضغط بالماوس اليميني على ذلك السطر واختيار Run to Cursor حيث سيتم تنفيذ البرنامج حتى ذلك السطر
- لمراقبة قيمة متغير بشكل مستمر نستخدم Watch window حيث يمكنك النقر بالماوس اليميني على ذلك المتغير واختيار Add Watch حيث يمكنك رؤية ذلك المتغير ورؤية قيمته أو تغييرها مباشرة من تلك النافذة و بنفس الطريقة يمكنك أيضا إضافة Watch لأحد المعناصر المركبة ورؤية أو تغيير قيمة إحدى خصائصه
- لإزالة متغير من نافذة Watch فقط انقر بالماوس اليميني عليه في تلك النافذة واختر Delete Watch
- كما يمكنك كتابة اسم المتغير مباشرة في نافذة watch لمراقبته
- في حالة وجود كمية بيانات كبيرة أو بنية بيانات معقدة داخل المتغير كبيانات XML مثلا يمكنك ملاحظة أيقونة مكبرة بجانب تلك القيمة حيث يمكنك إما الضغط على المكبرة مباشرة لعرض البيانات أو النقر على السهم الصغير بجانبها لاختيار طريقة عرض تلك البيانات من القائمة حيث يمكنك اختيار Xml Visualizer مثلا في حالة بيانات من نوع XML
- يمكنك استخدام نقاط التعقب Trace Points ليقوم المنقح بتنفيذ عمل معين عند وصوله لهذه النقطة دون إيقاف تنفيذ البرنامج أو مع إيقاف التنفيذ
- لوضع نقطة تعقب Tracepoint انقر بالماوس اليميني على سطر الكود ثم من القائمة الفرعية Breakpoint اختر Insert Tracepoint وهذا يؤدي إلى ظهور مربع حوار When Breakpoint Is Hit الذي يمكنك من تحديد ماذا تريد أن يفعل عندما يصل التنفيذ لذك السطر حيث يوفر لك امكانية طباعة رسالة أو تنفيذ ماكرو بالإضافة إلى خيار لاستمرار التنفيذ أو إيقافه عند ذلك السطر كما يمكنك استخدام تعابير معينة لإظهار قيم خاصة في سطر الرسالة مثل TICK$ لاظهار استخدام المعالج أو TNAME$ لإظهار اسم مسار التنفيذ الحالي Current Thread Name وعند ضبطها ستلاحظ ظهور معين أحمر بجانب السطر دلالة على Trace Point عوضا عن الدائرة الحمراء التي تشير لـ Break Point وستظهر الرسائل المتعلقة بـ Trace Point في نافذة Output

ثانيا - لاستثناءات Exceptions اصطياد الأخطاء ومعالجتها

التقاط استثناء معين
لالتقاط استثناء نستعمل بلوك Try ... Catch بشكل عام عندما ينفذ البرنامج عملية معينة قد تولد استثناء فلعمل ذلك نقوم بوشع تلك الشيفرة البرمجية بين عبارتي Try و Ctach و بعد العبارة Catch نستكشف الاستثناءات الحاصلة

كود PHP:
Try
    
B
Catch Ex as OverflowException 
ويتيح الجزء Catch للبرنامج اكتشاف استثناء معين والرد عليه فمثلا يمكننا التقاط استثناء القسمة على صفر Devided By Zero

كود PHP:
Try
    
A Mod B
    TextBox3
.Text C.ToString()
Catch 
Ex as DividedByZeroException
    MsgBox
("Devided By Zero.")
    
TextBox3.Text "Infinity"
End Try 
وبنفس الطريقة يمكننا استكشاف استثناء فيضان Overflow Exception

كود PHP:
Dim ABAs Integer

Try
    
ATextBox1.text
    B 
TextBox2.Text

    C 
B
Catch Ex as OverflowException
    MsgBox
("Overflow.")
    
TextBox3.Text "Infinity"
End Try 
وحتى أيضا يمكننا استخدامه للكشف عن اسم ملف غير صالح

كود PHP:
Dim Fname As New String "D:\Some Folder\FileName.ext"
Dim Sfl as new StreamReader
Try
    
Sfl = New StreamReader(Fname)
    
TextBox1.Text Sfl.ReadToEnd()
    
Sfl.Close
Catch Ex As FileNotFoundException
    MsgBox
("File Not Found")
End Try 
فحص عدة استثناءات
عندما يمكن أن تؤدي العملية التي تقوم بتنفيذها إلى عدة استثناءات مختلفة يمكنك تحديد سلسلة من الجمل Catch لمعالجة تلك الاستثناءات

كود PHP:
Dim FileDB As New OpenFileDialog()

        
FileDB.Filter "All files | *.* | Text files | *.txt"

        
FileDB.FilterIndex 2
        FileDB
.InitialDirectory "C:\Temp"
        
FileDB.AddExtension True
        FileDB
.DefaultExt "txt"

        ' Prevent dialog box from validating file
        FileDB.CheckFileExists = False
        FileDB.CheckPathExists = False

        If (FileDB.ShowDialog() = DialogResult.OK) Then
            Dim SourceFile As StreamReader

            Try
                SourceFile = New StreamReader(FileDB.FileName)

                TextBox1.Text = SourceFile.ReadToEnd()

                SourceFile.Close()
            Catch Except As DirectoryNotFoundException
                MsgBox("Error: " & Except.Message)
            Catch Except As FileNotFoundException
                MsgBox("Error: " & Except.Message)
            Catch Except As Exception
                MsgBox("Error: " & Except.Message)
            End Try
        Else
            MsgBox("User selected Cancel")
        End If 
معالجة الاستثناءات باستعمال بلوك Catch عام
عندما ينفذ كائن عملية نيابة عن البرنامج فقد يولد نطاقا واسعا من الاستثناءات بناء على سير تنفيذ البرنامج وقد لاتهمك ما هي هذه الاستثناءات بقدر ما يهمك أنه قد حصل هناك استثناء ما ولمعالجة الاستثناءات بغض النظر عن نوعها فإننا لا نحدد استثناء معينا بل نستخدم

كود PHP:
Try

    ..... 
Some Code Here

Catch Ex As Exception
    MsgBox
("Error: " Ex.Message)
End Try 
إجراء التظيف بعد حدوث استثناء
عند استعمالك لبلوك Try ... Catch للرد على سلسلة من الاستثناءات ستنفذ عادة عمليات تخص كل استثناء ضمن بلوك Catch المناسب وبناء على الأمور التي يقوم بها برنامجك عليك القيام بعميات معينة بعد حدوث استثناء وذلك بغض النظر عن نوع الاستثناء ولهذا الغرض نستخدم عبارة Finally في نهاية بلوك Try ... Catch تحدد الجمل التي نريد تنفيذها بغض النظر عن نوع الاستثناء مع ملاحظة أن العبارات الموجودة ضمن بلوك Finally سيتم تنفيذها دوما بغض النظر عن حدوث استثناء أو لا

كود PHP:
Dim FileDB As New OpenFileDialog()

        
FileDB.Filter "All files | *.* | Text files | *.txt"

        
FileDB.FilterIndex 2
        FileDB
.InitialDirectory "C:\Temp"
        
FileDB.AddExtension True
        FileDB
.DefaultExt "txt"

        ' Prevent dialog box from validating file
        FileDB.CheckFileExists = False
        FileDB.CheckPathExists = False

        If (FileDB.ShowDialog() = DialogResult.OK) Then
            Dim SourceFile As StreamReader

            Try
                SourceFile = New StreamReader(FileDB.FileName)
            Catch Except As Exception
                MsgBox("Error: " & Except.Message)
            End Try

            If (Not SourceFile Is Nothing) Then
                Try
                    TextBox1.Text = SourceFile.ReadToEnd()
                Catch Except As Exception
                    MsgBox("Error: " & Except.Message)
                Finally
                    MsgBox("In finally statements")
                    SourceFile.Close()
                End Try
            End If
        Else
            MsgBox("User selected Cancel")
        End If 
وفي بعض الحالات قد تكون هناك أوقات لاتريد استكمال تنفيذ البلوك Try ... Catch عندها تستخدم العبارة Exit Try للخروج من البلوك حيث سينفذ بعدها أول سطر كود يلي End Try

كود PHP:
Try

    .... 
Some Code

    
If SomeCondition Then Exit Try

Catch 
Ex as Exception

  
Exit Try 
إطلاق استثناءاتك الخاصة
هناك أوقات تحتاج فيها لتكوين استثناء خاص بك عندها ستحتاج بكل بساطة لإنشاء فئة Class ترث الفئة Exception - راجع دروس الوراثة في المنتدى - فعلى سبيل المثال يمكننا توليد استثناء باسم InvalidEMailException كما يلي

كود PHP:
Public Class InvalidEMailException
    Inherits System
.Exception

    Sub 
New(ByVal Message As String)
        
My****.New(Message)
    
End Sub
End 
Class 
و بالطبع يمكنك انشاء طرق وخصائص في هذه الفئة حسب احتياجاتك كأي فئة أخرى وفي مثالنا المبسط هنا أنشأنا مشيد الفئة فقط وبعد إنشاء فئة الاستثناء الخاصة بنا يمكننا توليد الاستثناء باستخدام العبارة Throw

كود PHP:
Throw New InvalidEMailException("Envalid Email Please Correct"
وفيما يلي مثال آخر

كود PHP:
Public Class MyException
    Inherits System
.Exception

    Sub 
New(ByVal Message As String)
        
My****.New(Message)
    
End Sub
End 
Class

Public Class 
Form1
    Inherits System
.Windows.Forms.Form

    
.....

    Private 
Sub Button1_Click(ByVal sender As ObjectByVal e As System.EventArgsHandles Button1.Click

        
Try
            
MsgBox("About to generate custom exception")
            Throw (New 
MyException("** Custom Message **"))
        Catch 
Ex As MyException
            MsgBox
("Custom Exception thrown " Ex.Message)
        
End Try

    
End Sub

    
......

End Class 

البداية مع Visual Studio 2008 .

ال IDE المعتمد من مايكروسوفت لكتابة ال C# او ال VB.net هو ال Viusal Studio بنوعيه ، حيث نجد النوع Proffessional وهو غيرمجاني ، اما Express والذي يكون موجه للغة معينة فهو مجاني مثل Visual C# 2008 Express ، روابط التحميل موجودة في أول درس من دروس هذه الدورة .

بعد تشغيل البرنامج لأول مرة ، وحسب اللغة المستخدمة ستجد أول ما تجد خيارات انشاء مشروع أو Web Site جديد اضافة للتعديل على الموجودين ، من قائمة New اختر Project مثلاً :



ابسط الأنواع هي Console Application وهي شاشة لكتابة الكود تحتوي مبدئياً على Class واحد باسم Main وال name space هو اسم المشروع الذي اخترته ... فقط . باقي الانواع سنتطرق لها من خلال عملنا ضمن الدورة ، سنستخدم Console لإنه ابسط الأنواع ونستطيع من خلاله فهم كامل بيئة .net 2008 .

على يمين الشاشة تجد ال Solution Explorer ، حيث يمكنك التنقل بين مكونات المشروع المختلفة ، تحت تبويب Refernces تجد المكونات المضافة إلى برنامجك ، تستطيع اضافة مكونات جديدة من خلال الضغط على Refernces بزر الماوس الأيمن واضغط Add .



اسفل هذا التبويب يمكنك التبديل بين اسلوب العرض ، تستطيع اختيار عرض Class بحيث يتم عرض جميع ال Classes الموجودة في مشروعك والطرق والخصائص فيها :



تحت تبويب Properties تجد خصائص المشروع ، لو قمت بالضغط عليه مرتين ستجد خصائص المشروع حيث يمكنك الخصائص الاساسية لمشروعك .

يتيح لك ال .net ايضاً Class Designer حيث يمكن رسم الكلاسات وتحديد العلاقات بينهما بصورة مرئية ومن ثم يتم تطبيقها مباشرة مع الروابط بينهما على المشروع مباشرة .

برنامجك الأول :


سنجرب اول برنامج بسيط لنا ، في ال function المسماه Main ضع الكود التالي :

كود PHP:
Console.Write("Hello World");
Console.ReadKey(); 
او قم بازالة ال ; لو كنت تكتب VB.net . السطر الأول لكتابة جملة ، الثاني لقراءة اي حرف قبل اغلاق البرنامج ...

نكتفي بهذا القدر في درسنا هذا ، يمكنك استخدام الطرق التي ذكرها الاخ محمد سامر لتتبع تنفيذ البرنامج وتلاقي الأخطاء ، في درسنا القادم (الجزء الثاني) سنواصل مع باقي محتويات درس هذا الأسبوع .

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


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الأول : تحميل .net 2008 ومميزات استخدامه khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 5 03-11-2012 03:42 PM
الدرس الخامس والعشرون : الأخطاء واقتناصها .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 1 12-16-2010 11:47 PM
الدرس الرابع ( كفارة من فاه بلفظ منهي عنه ) ابو تسنيم روضة العقيدة 2 09-08-2010 05:59 PM
الدرس الرابع عشر : this دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-19-2010 07:58 PM
الدرس الثاني : تقنيات جديدة مع .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-15-2010 03:37 AM

استضافة الحياة

الساعة الآن 02:11 PM.


Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية
Ads Management Version 3.0.1 by Saeed Al-Atwi

SlamDesignzslamDesignzEdited by Riad Al-Ganah Team - جميع الحقوق محفوظة لشبكة رياض الجنة

Privacy Policy Valid XHTML 1.0 Transitional By SlamDesignz Valid CSS Transitional By SlamDesignz