دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(4)_طرق الادخال و الاخراج فى الجافا فى البيئة الرسومية و البيئة غير الرسومية !!
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1 • شاطر
دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(4)_طرق الادخال و الاخراج فى الجافا فى البيئة الرسومية و البيئة غير الرسومية !!
بسم الله الرحمن الرحيم
أخوانى الكرام أهلا وسهلا بكم فى الدرس الرابع من دروس دورة الجافا الرسومية التى يقدمها منتدى مصر التقنى ...فى هذا الدرس إن شاء الله تعالى سنتعلم سويا ونتعرف على طرق أدخال و أخراج البيانات فى لغة الجافا ...وهذا الدرس مهم جدا حيث لا يخلو أي برنامج من طريقة لادخال البيانات و استخراجها وهي الوسيلة الوحيدة التي يستطيع فيها المستخدم إدخال القيم عن طريق لوحة المفاتيح للحاسب , حتى يقوم بمعالجة هذه القيم سواء كان البرنامج (برنامج حسابات – قاعدة بيانات ......) .
والحقيقة أن لغة الجافا تحتوي على أكثر من طريقة لإدخال البيانات و أخراجها منها ما هو مناسب للتطبيقات الرسومية (تطبيقات الويندوز) ومنها ما هو مناسب التطبيقات غير الرسومية _تطبيقات الدوس (Console Application) و سوف يتم شرح تلك الطرق فى البيئتين.
أولا :طريقة إدخال وإخراج البيانات فى التطبيقات الرسومية :
ويتم ذلك عن طريق اوامر الكلاس المسمى JOptionPane حيث يمدنا بنوافذ حوارية مختلفة تساعدنا على إدخال و اخراج البيانات من والى البرنامج من خلال تلك النوافذ...
1_ طريقة إدخال البيانات بأستخدام JOptionPane :
أولا :يجب تحميل الكائن أو الكلاس المسمى JOptionPane من الحزمة المسماة javax.swing وهذه الحزمة تحتوى على كثير من الكائنات الاخرى _ستيم شرحها فى حينها _ويتم ذلك عن طريق الكود التالى :
- الكود:
import javax.swing.JOptionPane;
ثانيا :يجب تعريف المتغيرات التى سيتم تحزين ما يقوم المستخدم بإدخالة عن طريق لوحة المفاتيح ولابد أن تكون من النوع النصى String وذلك لان كل بيانات يتم أدخالها من المستخدم بواسطة هذا الأمر يعتبر String ....
- الكود:
String name;
ثالثا :نقوم بإظهار المربع الحوارى لادخال البيانات من المستخدم ويتم تخزينها فى المتغير String
- الكود:
name=JOptionPane.showInputDialog("من فضلك أدخل أسمك");
رابعا :إنهاء البرنامج وذلك بإستخادم الامر
- الكود:
System.exit( 0 );
و كقاعدة عامة يجب أستخدام هذا الامر لانهاء التطبيق فى التطبيقات الرسومية ....وذلك لان التطبيق فى حالة أستخدام هذا الامر سيكون نشط فى ذاكرة الجهاز .....
اذن الكود العام لادخال البيانات بأستخدام الكلاس JOptionPane سيكون كما فى الشكل التالى :
الآن انتهينا من كيفية ادخال البيانات بتلك الطريقة ، ....لكن ماذا لو كنا نريد من المستخدم إدخال بيانات رقمية و ليست نصية و نريد أستخدمها كأرقام فى عمليات حسابية ......فقد أخبرنا سابقا بأن كل شيء يتم أخذه من المستخدم بواسطة هذا الأمر يعتبر String (سيتم شرحها لاحقاً بالتفصيل) ، بمعنى أن البرنامج سيعتبرها كلمات أو جمل أو نصوص، ولذلك لن يتمكن من التعامل معها في المعادلات الرياضية والحسابية حتى لو أدخل المستخدم فيها أرقام......بمعنى لو أدخل المستخدم رقم سيتم تخزينه في البرنامج بين علامتي التنصيص بهذا الشكل: "99"
ووجوده بين علامتي التنصيص يعني انه لايعتبر من أنواع المتغيرات التي يمكن التعامل معها في المعادلات الرياضية و الحسابية مثل int و double و byte وغيرها.......ولو لم نقم بعملية تحويلها إلى بيانات رقمية ، وحاولنا أن نقوم بعمليات حسابية لها مباشرة ، سيحدث خطأ في البرنامج ، لأنه لن يستطيع التعامل مع الـ String في العمليات الحسابية.
لذلك توجد أوامر لتحويل المدخلات من بيانات نصية إلى أنواع البيانات الرقمية التي نريدها....وذلك على النحو التالى :
وهذا الشكل يوضح الاوامر المستخدمة لتحويل القيم النصية المدخلة بواسطة المستخدم الى قيم رقمية و ذلك لاستخدامها فى العمليات الحسابية .....
مثال : بقم بعرض رسالة للمستخدم لاخذ بيانات نصية ........الحل كما يلى :
ستجد أخى الكريم أن هذا المثال هو نفس المثال السابق بدون أى تغير ....وفى تلك الحالة أى نص أو حرف أو حتى أرقام أدخلها المستخدم فأنها سوف يتم حفظها فى المتغير (no) على أنها بيانات نصية و ليست رقمية ....بمعنى لو أدخل المستخدم الرقم (5) ستعبر البرنامج أن تلك القيمة نصية و لن تستطيع أستخدمها فى العمليات الحسابية وسيحدث خطأ للبرنامج لو أستخدمتها ......
مثال أخر ....قم بعرض رسالة للمستخدم لاخذ بيانات رقمية .....الحل كما يلى :
لاحظ أى الكريم ...التغير الذى حدث فى المثال الثانى عن المثال الاول ...فقط قمنا بإضافة سطرين جديدين ...الاسطر الاول هو الاعلان عن المتغير number على أنه من نوع بيانات رقمية صحيحة int ...أما السطر الاخر هو أننا قمنا بتحويل القيمة النصية المخزنة فى المتغير no الى بيانات رقمية صحيحة من نوع int و تم تخزينها فى المتغير number ..........وهكذا نكون قد حولنا القيمة البيانات النصية من المستخدم الى بيانات رقمية و تستطيع الان أجراء العمليات الحسابية عليها ....
كما يرجى ملاحظة اننا حولنا القيم النصية الى قيم رقمية من نوع int ...أما اذا كان نريد أنواع رقمية أخرى غير ذلك
فاذا كانت البيانات المتوقعة ادخالها من المستخدم من نوع byte اذن كود التحويل سيكون كما يلى :
- الكود:
number = Byte.parseByte("no");
واذا كانت البيانات المتوقعة أدخلها من المستخدم من نوع long اذن كود التحويل سيكون كما يلى :
- الكود:
number= Long.parseLong("no");
واذا كانت البيانات المتوقع أدخالها من نوع Float اذن كود التحويل سيكون كما يلى :
- الكود:
number = Float.parseFloat("no");
وهكذا بالنسبة للبيانات من نوع double أو short ....وبما أن لغة الجافا لحالة الاحرف فهناك خطأ شائع وهو عدم الالتزام بنفس الجمل السابقة من حيث الاحرف الكبيرة و الصغيرة .
2-طريقة أخراج البيانات بأستخدام JOptionPane :
طريقة اخراج البيانات بأستخدام الكلاس المسمى JOptionPane كنا قد تعودنا على أستخدمها فى الدروس السابقة ...وقلنا أننا اذا أردنا أن نخرج بيانات للمستخدم على هيئة نافذة رسالة يكون عن طريق جملة الاخراج التالى :
- الكود:
JOptionPane.showMessageDialog(null, "");
وكانت هذه ابسط رسالة يمكن أظهارها للمستخدم و تحتوى بيانات ...لكن يمكنا اظهارها بصوة أكثر تنسيق باستخدام جملة الاخراج التالية :
showMessageDialog(null, message, title, messageType)
المدخل الاول : الكلمة المحجوزة null وفائدتها وضع صندوق الحوار فى وسط الشاشة .
المدخل الثانى :message نص الرسالة الذى سوف يظهر للمستخدم ويجب وضع علامتى أقتباس على النص المراد أخراجة للمستخدم
المدخل الثالث :title عنوان الرسالة الذى سوف يظهر فى سطر العنوان للرسالة
المدخل الرابع :messageType وهو نوع الرسالة حيث يوجد مجموعة من الرموز التى التى يمكن أظهارها فى صندوق الحوار التى تساعد المستخدم فى معرفة نوع صندوق الحوار و الرسالة التى تظهر فية ....والشكل التالى تلك الرموز :
مثال : قم بعمل برنامج يقوم بحساب عددين يدخلهم المستخدم و إظهار الناتج فى مربع حوارى ............الحل :
مخرجات البرنامج :
شرح الكود المستخدم فى البرنامج :
السطر رقم 7 : قمنا بتعريف متغريين no1 ,no2 من نوع نصى String وذلك لتخزين القيم التى يتم أخذها من المستخدم ...وطبعا قلنا أن تلك القيم يعتبرها البرنامج من النوع النصى حتى و أن كانت أرقام
السطر رقم 8 : قمنا بتعريف متغريين number1,number2 من النوع int وذلك لتخزين القيم المدخلة من المستخدم فيهما بعد تحويلها الى قيم رقمية من نوع int .
السطر رقم 9 : قمنا بالاعلان عن المتغير total وذلك لتخزين ناتج العملية الحسابية فيه ..
السطر العاشر و الحادى عشر : قمنا باظهار مربعين أو رسالتين أدخل للمستخدم عن طريق الامر showInputDialog للكلاس المسمى JOptionPane وذلك لاخذ القيم من المستخدم و تخزينها فى المتغريين no1 ,no2 على التوالى .
السطر الرابع عشر و الخامس عشر : قمنا بتحويل القيم المخزنة فى المتغريين no1 ,no2 الى قيم رقمية من نوع int عن طريق الامر Integer.parseInt ...وتخزين ناتج التحويل فى المتغريين number1,number2 و الذى قمنا بالاعلان عنهم سابقا ...
السطر السابع عشر : جعلنا المتغير total يساوى قيمة المتغير number1 بالاضافة الى قيمة المتغير number2
السطر الثامن عشر : أظهرنا مخرجات البرنامج عن طريق مربع حوارى بأستخدام الامر showMessageDialog للكلاس المسمى JOptionPane ...ويرجى ملاحظة أننا أستخدمنا المدخلات الاربعة سالفة الذكر بين قوسين فى إظهار المربع الحوارى ....فأستخدمنا المدخل (null) لاظهار المربع الحوارى فى منتصف الشاشة ....و مدخل نص الرسالة وفى هذا المثال هو( "الناتج هو" + total ) وهنا تم أستخدام العامل ( + ) وذلك لالحاق القيمة المخزنة فى المتغير total بعد النص "الناتج هو " ......ثم بعد ذلك مدخل عنوان الرسالة وهو فى مثالنا هذا "egy_tech "......أما الرقم 2 الموجود فى الكود هو المدخل الرابع الذى يحدد نوع ايقونة الرسالة وقد تم تغيرها فى مثالنا هذا كما هو ظاهر فى مخرجات البرنامج ,,,
و الى هنا نكون قد أنتهينا من شرح طريقة إدخال و إخراج البيانات فى البيئة الرسومية ....وأن شاء الله فى الجزء الثانى من هذا الدرس سنتعلم سويا طريقة إدخال و إخراج البيانات فى البيئة غير الرسومية ....فالى اللقاء .....
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(4)_طرق الادخال و الاخراج فى الجافا فى البيئة الرسومية و البيئة غير الرسومية !!
بسم الله الرحمن الرحيم
أهلا وسهلا أخوانى الكرام فى الجزء الثانى من هذا الدرس .....حيث تعلمنا فى الجزء الاول طرق الادخال و الاخراج عن طريق البيئة الرسومية أو مربعات الحوار ....أما فى هذا الجزء سوف نتعلم فيه طرق الادخال و الاخراج فى البيئة غير الرسومية ...
ثانيا :طرق الادخال و الاخراج فى البيئة غير الرسومية ,,,
1-طريقة أخراج البيانات فى البيئة غير الرسومية :
الطريقة التى تستخدم لاخراج البيانات فى البيئية غير الرسومية تسمى Standard output ويتم ذلك عن طريق أستخدام الكلاس System ....و ذلك بأستخدام الكود التالى :
- الكود:
System.out.print("Egy_tech!");
ويجب ملاحظة أن حرف S كابيتال فى كلمة System ...والنص المطلوب عرضة Egy_tech فى قوسين وبين علامتى إقتباس ...ونلاحظ أنه عند تنفيذ هذا البرنامج ستظهر العبارة (Egy_tech) على سطر واحد ....أما إذا أردنا أن تكون المخرجات على سطرين مختلفين فيتم إضافة حرفي (ln) على العبارة print ومعناها الانتقال إلى سطر جديد (new line) ويتم ذلك في السطر الثالث كالآتي :
- الكود:
System.out.println("Egy_tech");
الفرق بين الأول والثاني ، هو أن الثاني سيجعل أمر الكتابة الذي بعده يكون في سطر جديد ، ولكن الأول لن يقوم بهذا. مثلاً لو كتبنا هذه الأمرين:
- الكود:
System.out.print("Hello user!");
System.out.print("How are you?");
فكما تلاحظ أخى الكريم أن الجملتيين فى سطر واحد ....أما اذا استخدمنا جملة الاخراج كما يلى :
- الكود:
System.out.println("Hello user!");
System.out.println("How are you?");
ستكون النتيجة كما يلى :
ويجب ملاحظة الفرق هنا ...فقد تم كتابة الجملتين كل جملة فى سطر ....وهذا هو الفرق بين print و println فى إخراج البيانات ....ويمكن تنفيذ نفس شكل المخرجات السابقة بسطر واحد وذلك عن طريق إضافة (n\)وتعني الانتقال إلى سطر جديد ويكون شكل البرنامج كالتالي :
- الكود:
System.out.print("Hello user!\n How are you?");
فتكون المخرجات نفس المخرجات السابقة بهذا الشكل
أما اذا أردنا طباعة عدة أسطر متتالية بأمر طباعة واحد فيتم ذلك بتكرار (n\) كالتالي:
- الكود:
System.out.print ("One\n Two \n Three \n Four") ;
فتكون المخرجات كالتالي
أما اذا أردنا أن تكون المخرجات على مسافات أفقية متساوية فأننا نستخدم (t\) كالتالي:
- الكود:
System.out.print ("One\t Two \t Three \t Four") ;
وتكون المخرجات كالتالي:
وكل هذه الاوامر تسمى متسلسلات الهروب والتى يتم إضافتها لجملة الطباعة للحصول على عدة اشكال للمخرجات ....واليكم الجدول التالى الذى يوضح متسلسلات أخرى :
2-طريقة إدخال البيانات فى البيئة غير الرسومية :
من الطرق التى تستخدم فى إدخال البيانات فى لغة الجافا هي أستخدام الكلاس ( Java.util.Scanner )، وهي قوية جداً حيث أنه يمكنها ليس فقط قراءة أسطر الإدخال التي يقوم المستخدم بكتابتها، بل يمكنها أيضاً قراءة محتوى الملفات...الكلاس Scanner وكما يدل على ذلك اسمها، فيمكن أن نترجمها بالعربي إلى الماسح، وكلنا نعرف أداة الماسح الضوئي التي تقوم بمسح وثيقة معينة وتحويلها لوثيقة رقمية. هذه الكلاس تقوم بنفس العمل ! فهي تقوم بمسح كل ما تمت كتابته من طرف المستخدم ليتم تخزينه في متغير للإشتغال به في البرنامج ....الطريقة هي سهلة الاستخدام وذلك لأن جميع وظائفها معرفة من طرف الجافا مسبقاً يكفي فقط تتبع الخطوات البسيطة المشروحة هنا.
أولاً: يجب إستدعاء الكلاس Scanner ( وهي الكلاس التي تحتوي على وظائف القراءة من سطر الإدخال )من مكتبة الجافا بالأمر التالي :
- الكود:
import java.util.Scanner;
ثانيا :نقوم بتعريف كائن له نفس خصائص الكلاس سكانر ليتم تخزين فيه ما قام المستخدم بكتابته عن طريق لوحة المفاتيح و القاعدة العامة لتعريف هذا الكائن تكون كما فى الشكل التالى :
فمثلا أاذا أردت أن أنشىء الكائن input له نفس خصائص الكلاس سكانر يكون الامر على النحو التالى :
- الكود:
Scanner input = new Scanner(System.in);
ثالثا :نقوم بقراءة ما أدخلة المستخدم على حسب ما نود تخزينة من بيانات ...فمثلا إذا كنا نريد قراءة رقم صحيح من نوع int ...فإننا سنستخدم الكود التالى للقراءة :
- الكود:
input.nextInt();
أما إن كانت نوع البيانات غير ذلك .....وكما نعلم هناك عدة أنواع من الأعداد ( أعداد طبيعية، عشرية ... ) ولكل نوع هناك نوع بيانات معين ( كما رأينا في الدرس السابق : أنواع البيانات والمتغيرات ). هذه الأعداد، كما يتم تخزينها في نوع معين من أنواع البيانات، يتم أيضاً قراءتها بنوع معين من أنواع البيانات... فالأعداد الطبيعية يتم قراءتها بواسطة السطور التالية :
1.nextInt
2.nextByte
3.nextShort
4.nextLong
أماالأعداد العشرية يمكن قراءتها بالسطور التالية :
1.nextFloat
2.nextDouble
أما قراءة الكلمات تكون بهذا الامر nextLine
رابعا :يفضل دائماً أن نقوم بإنهاء هذا النوع من الكلاس عندما ننتهي من استعمالها بالسطر التالي :
- الكود:
input.close();
يجب مراعاة كتابة Scanner بحرف S كبير وكذلك كتابة nextInt ب I كبيرة مع عدم نسيان الفاصلة المنقوطة
في سطر تعريف الكائن وكذلك في سطر القراءة بواسطة nextInt
مثال توضيحيى :أكتب برنامج لجمع رقمين على أن يتم إدخال الرقمين من لوحة المفاتيح ثم طباعة الناتج على الشاشة.
الحل :
الشرح :
1- في السطر الأول تم استدعاء المكتبة التي تحتوي على جملة الإدخال Scanner 2- أما في السطر الرابع فقد تم الإعلان عن ثلاث متغيرات من النوع integer وهي المتغير a لتخزين الرقم الأول والمتغير b لتخزين الرقم الثاني والمتغير sum لتخزين ناتج عملية الجمع.
3- أما السطر الخامس تعريف كائن له نفس خصائص الكلاس سكانر لاستقبال مدخلات من لوحة المفاتيح ولقد تم تسميته Keyboard و يمكن تسميته بأي اسم تريدة ويتم فيه تخزين القيمة المدخلة مؤقتا تمهيدا لنقلها لمتغير أخر سيكون هنا a أو b ولاحظ كلمة (System.in) أصبح بجوارها كلمة in دلالة على عملية الإدخال
5- أما في السطر السابع فيتم فراءة ما تم إدخالة في المخزن Keyboard و وضعها في المخزن a.
6- أما في السطر الثامن فهو يكرر العملية لطلب الرقم الثاني.
7- وفي السطر التاسع يتم إدخال الرقم الثاني كما سبق ولكن يتم تخزينه هذه المرة في المخزن b.
8- أما السطر العاشر فيتم فيه عملية الجمع ووضع الناتج في المخزن sum.
9- وفي السطر الحادي عشر يتم طباعة قيمة الجمع على الشاشة.
أما عيب هذه الكلاس ( Scanner ) أنها لا تحتوي على وظيفة لقراءة حرف واحد!.............. لذلك ولقراءة حرف واحد يجب قراءة السطر بأكمله ثم بعد ذلك قراءة الحرف الأول من الكلمة أو الجملة التي قام المستخدم بادخالها. وذلك يتم كما في المثال التالي :
كما رأينا في هذا المثال فحتى وإن قام المستخدم بكتابة إسمه بأكمله يمكننا تخزنن فقط الحرف الأول من الكلمة، وكما يمكن تخزين موضع الحرف الأول من الكلمة، يمكن أيضاً تخزين الموضيع التاني، الثالث ... وذلك بتعويض رقم 0 في charAt بمثلاً رقم 1.....لنأخد مثلاً إسم Ayoub. أول حرف من هذا الإسم هو a وهو يحمل الرقم 0 في charAt، ثاني حرف يحمل الرقم 1، وهكذا ... يمكنك تجربة ذلك بنفسك
والى هنا نكون قد أنتهينا من هذا الدرس .....والى اللقاء إن شاء الله تعالى فى درس جديد
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(4)_طرق الادخال و الاخراج فى الجافا فى البيئة الرسومية و البيئة غير الرسومية !!
الف شكر يا مبدع
Ma7moud 3ly- .
- تاريخ التسجيل : 26/02/2014
المساهمات : 4
النقاط : 4
التقيم : 0
الدولة :
الجنس :
رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(4)_طرق الادخال و الاخراج فى الجافا فى البيئة الرسومية و البيئة غير الرسومية !!
جميل أخي
مواضيعك قمة
واصل
عندي سؤال هل جميع البرامج التي نكتبها ننهيها ب System.exit(0);
x-wolf- ..
- تاريخ التسجيل : 01/12/2014
المساهمات : 20
النقاط : 20
التقيم : 0
الدولة :
الجنس :
رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(4)_طرق الادخال و الاخراج فى الجافا فى البيئة الرسومية و البيئة غير الرسومية !!
x-wolf كتب:جميل أخي
مواضيعك قمة
واصلعندي سؤال هل جميع البرامج التي نكتبها ننهيها ب System.exit(0);
اهلا بك الاخ الكريم
بالنسبة لسؤالك الاجابة نعم فى حالة كونك تستخدم العناصر الرسومية فى تطبيقك ...لكن اذا استخدمت النوافذ مثلا JFrame ثم استخدمت الاسلوب setDefaultCloseOperation(EXIT_ON_CLOSE); عند انشائة فيمكنك الاستغناء على الامر System.exit و للمزيد من المعلومات يمكنك الاطلاع على المقال التالى :
https://egy-tech.forumegypt.net/t846-topic
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(4)_طرق الادخال و الاخراج فى الجافا فى البيئة الرسومية و البيئة غير الرسومية !!
شكرا لك اختي الكريمة على الاجابة ^_^
x-wolf- ..
- تاريخ التسجيل : 01/12/2014
المساهمات : 20
النقاط : 20
التقيم : 0
الدولة :
الجنس :
رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(4)_طرق الادخال و الاخراج فى الجافا فى البيئة الرسومية و البيئة غير الرسومية !!
للرفع
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 8:56 pm من طرف moslema_r
» شركة مكافحة حشرات في راس الخيمة
أمس في 8:34 pm من طرف moslema_r
» تطبيقIncogniton لإدارة ملفات تعريف متعددة للمتصفح
الأربعاء أبريل 24, 2024 3:51 pm من طرف زاكااا
» افضل شركة مكافحة النمل الابيض بالرياض
الإثنين أبريل 22, 2024 9:41 pm من طرف moslema_r
» Exemplary Сasual Dating - Verified Women
الخميس أبريل 18, 2024 9:18 pm من طرف wdqwd
» رش الدفان بالرياض
الخميس أبريل 18, 2024 7:11 pm من طرف moslema_r
» شركة تنظيف خزانات الشارقة
الخميس أبريل 18, 2024 6:57 pm من طرف moslema_r
» شركة مكافحة الفئران بالرياض
الإثنين أبريل 15, 2024 8:23 pm من طرف moslema_r
» افضل شركة كشف تسربات المياه بالباحة
الخميس أبريل 04, 2024 7:02 am من طرف gmalnagy
» ساعدوني وفهموني help me
الجمعة مارس 29, 2024 8:37 am من طرف linesoft