اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

برنامج دوال الفيجوال بيسيك مع الشرح


الردود الموصى بها

ما هي الدوال : الدوال هي أسماء محجوزة ومعرفة من قبل الفيجوال بيسك لتقوم بعمل معين مثل المصفوفات والقيم المطلقة وغيرها ..
أو بمعني ابسط واعم هي عبارة عن برنامج صغير مكتوب مسبقا و محفوظ داخل لغة الفيجول بيسك يمكن استدعاءه من خلال برنامجك والاستفادة منه ، إضافة إلى ذلك يمكنك أنت أن تكتب دالة وتستدعيها أكثر من مرة داخل برنامجك .
والدوال في الفيجول بيسك تنقسم إلى:
1. الدوال الرياضية . Mathematics Functions
2. دوال سلاسل البيانات . String Functions
3. دوال الوقت و التاريخ Date and Time Functions
4. دوال التحقق من أنواع البيانات Data Type Inspection Functions
5. دوال المدخلات و المخرجات Program Output and User Input Functions
6. دوال مالية Financial Functions
7. دوال التحويلات Conversion Function
8. دوال التعامل مع الفهارس
9. دوال التعامل مع الملفات
10. دوال المصفوفات
11. و دوال متنوعة أخري
12. دوال معرفة من قبل المبرمج. User Defined Functions ( UDF )
ونلاحظ أن نوع الدوال من رقم (1) حتى رقم (7) أنها دوال داخلية ضمن اللغة، أي تأتي مُعرفة في لغة الفيجول بيسك و مبرمجة مسبقاً لكي تستخدمها مباشرة.ً أما النوع الأخير فيتم تعريفه بواسطة المبرمج، أي بواسطتك أنت.

1. الدوال الرياضية . Mathematics Functions
الدالة Abs : ترجع القيمة المطلقة لآي عدد وترجعه من نفس نوع البيانات المعطى للدالة والمقصود بالقيمة المطلقة هي قيمة العدد بدون إشارة فالقيمة المطلقة ل (-13) مثلا هي (13) وهكذا, فمثلا لو كتبنا الكود التالي

كود:
MyNumber=Abs(-45.6) Text1.Text=MyNumber
فإن نتيجة تنفيذ الدالة هي MyNumber=45.6
ولاحظ أن القيمة المدخلة للدالة لابد أن تكون عدد أو تعبير عددي فإذا كانت القيمة المدخلة للدالة Null ستكون النتيجة Null وإذا كانت القيمة المدخلة للدالة متغير فارغ أو لم يتم تعيين قيمة له ستكون النتيجة (0).

الدالة Sqr : تستخدم هذه الدالة في تحديد الجذر التربيعي لرقم معين وتأخذ الصورة العامة التالية .

كود:
MyNumber=Sqr(10) Text1.Text=MyNumber
فإن نتيجة تنفيذ الدالة هي MyNumber=3.1622776

الدالة Log : تستخدم هذه الدالة في تحديد قيمة اللوغاريتم العشري لرقم وتأخذ الصورة العامة التالية :

كود:
MyNumber=Log (20)Text1.Text=MyNumber
فإن نتيجة تنفيذ الدالة هي MyNumber=2.9957327

الدالة Exp : تستخدم هذه الدالة في تحديد القيمة (e) وهي قاعدة اللوغاريتم الطبيعي مرفوعة بقوة الرقم الذي تتضمنه حيث (e) تساوي تقريبا 2.7182818 وتأخذ الصورة العامة التالية :

كود:
MyNumber=Exp (رقم)
الدالة Rnd : : وتستخدم هذا الدالة في توليد أرقام عشوائية تقع ما بين الصفر و واحد بحد أقصي 15 رقما عشريا وتأخذ الصورة العامة التالية :

كود:
MyNumber=Rnd (عدد)
فمثلا الدالة Rnd(10) قد تعطي رقما مثل 0.7055475 وعند تشغيل الدالة مرة أخري ينتج رقما آخر مثل 0.533424 وهكذا .

التصريح Randomize : يعمل هذا التصريح مع الدالة Rnd ونستفيد منه عدم التكرارية و الحصول علي عشوائية افضل وذلك لأنه يعتمد علي ساعة النظام لديك . ويأخذ الصورة التالية .

كود:
RandomizeMsgBox Int((10 * Rnd) + 1(
وهنا نعمل علي توليد أرقام عشوائية من واحد إلى عشرة .
أما إذا أردت أن تجعل هذه العشوائية نصوص وليس أرقاما فلك طريقتين لتحايل علي هذا أما أن تضع النصوص في قاعدة بيانات وفي شكل سجلات وتعضي لكل سجل رقم أو تضعه في مصفوفة وتعضي لكل نص رقم أيضا وأنا افضل الطريقة الأولى لسرعتها

الدالة Int : : وتستخدم هذه الدالة لحساب الجزء الصحيح فقط من رقم يشتمل علي أرقام صحيحة وعشرية أو بعبارة أخر لحذف الأرقام العشرية الموجودة بعد العلامة العشرية بدون تقريب وتأخذ الصورة التالية :

كود:
MyNumber=Int (332.54)
فإن نتيجة تنفيذ الدالة هي MyNumber=332

الدالة Atn : : تستخدم هذه الدالة في حساب مقلوب ظل الزاوية "ظتا" للرقم الذي تشتمل علية مقدار بالتقدير الدائري وتأخذ الصورة العامة التالية :

كود:
MyNumber=Atn (رقم)
الدالة Tan : : تستخدم هذه الدالة في تحديد قيمة ظل زاوية معينة وتأخذ الصورة العامة التالية :

كود:
MyNumber=Tan (رقم)
الدالة Cos : : وتستخدم هذه الدالة في تحديد قيمة جيب تمام الزاوية معينة وتأخذ الصورة العامة التالية :

كود:
MyNumber=Cos (رقم)
الدالة Sin : تستخدم هذه الدالة في تحديد قيمة جيب زاوية معينة وتأخذ الصورة العامة التالية :

كود:
MyNumber=Sin (رقم)
الدالة Round : وهي دالة التقريب التي من خلالها يمكنك تحديد عدد الأرقام العشرية وتأخذ الصورة التالية :

كود:
MyNumber= Round(4.52696,2)
حيث 4.52696 الرقم المراد تقريبه أما الرقم 2 فهو عدد التي ستقرب بعد العلامة العشرية وسيكون الناتج 4.53

الدالة Fix : وهي تشبه الدالة Int تماما أي أنها تستخدم لحساب الجزء الصحيح فقط وتأخذ الصورة التالية :


كود:
MyNumber= Fix(4.52696)
فإن نتيجة تنفيذ الدالة هي MyNumber=4

دوال سلاسل البيانات . String Functions
الدالة Array : تحول عدة بيانات مدخلة كنصوص تفصلها فاصلة إلى مصفوفة يكون رقم أول عنصر فيها (Lower Bound) هو (0) فمثلا لو أدخلنا النص التالي إلى الدالة .

كود:
"Frist","Second","Third","Forth" MyNumber= Array("First" , "Second" , "Third" , "Forth" )Print MyNumber(0)Print MyNumber(1)Print MyNumber(2)Print MyNumber(3)
نرى أن النتيجة هي

كود:
FirstSecondThirdForth
أي أن المتغير MyNumber يحمل مصفوفة ممتلئة بالنصوص المدخلة بعد أن تحولت إلى عناصر للمصفوفة
لاحظ أن المتغير MyNumber كان من نوع Variant لأننا لم نعلن عنه ويمكن للمتغير من هذا النوع أن يحمل مصفوفة وكذلك يمكن أن تكون المصفوفة من أي نوع آخر فالمصفوفة المستعملة في المثال هي مصفوفة نصية بينما لو كانت العناصر المدخلة أرقما (لاستعملنا علامات التنصيص مع الأرقام حتى لا تعتبر نصوصا) لكانت مصفوفة من نوع Integer مثلا .

الدالة Asc : ترجع كود الرمز المدخل (ASCII Code) فمثلا الحرف A له الكود 65 فعند إدخال حرف A مثلا ستكون النتيجة 65 وهكذا ( لاحظ أن حرف A يختلف عن حرف a في الكود) .

كود:
MyNumber = Asc("a")
تجد أن المتغير MyNumber أصبح يحمل القيمة 97 . وهكذا .. انتبه فيما لو غيرة الحرف من صغير إلى كبير ستتغير القيمة إلى 65

الدالة UCase : وظيفتها بسيطة جدا فهي ببساطة تحول حالة النص المدخل من حالة الأحرف الصغيرة (Small Letters) إلى حالة الأحرف الكبيرة (Capital Letters)
فالمثال التالي يحول "taftaf1267" إلى "TAFTAF1267”

كود:
Ucase("taftaf1267")
الدالة LCase : تعيد الدالة LCase نسخة من النص string تكون فيه جميع الحروف صغيرة Lowercase المتغيرة myText في المثال التالي ستحتوي على عبارة it works :

كود:
myText = "It Works"myText = LCase(myText)
الدالة chr : تقوم الدالة chr بأخذ قيمة بين 0 و 255 وتعيد الحرف الممثل لهذه القيمة في جدول رموز ASCII، على سبيل المثال العبارة التالية :

كود:
Hi,I'm "Asihy"
ستجد أنك لا تستطيع كتابتها بهذا الشكل :

كود:
myText = "Hi," & vbCrLf & "I'm "Asihy""
لأن البرنامج سيعتقد بأن نهاية السلسة النصية السابقة هي عند علامات الاقتباس التي تقع مباشرة قبل كلمة Asihy وستظهر لك رسالة خطأ، لذلك فإننا نلجأ لاستخدام الدالة chr حيث أن رمز علامة الاقتباس المزدوجة في جدول ASCII هو 34، فتكون الصياغة الصحيحة للعبارة البرمجية السابقة كالتالي :

كود:
myText = "Hi," & vbCrLf & "I'm " & chr(34) & "TafTaf" & chr(34
)

الدالة Len : ستجد فيما بعد حاجة في كثير من الأحيان لمعرفة طول السلسلة النصية ( عدد الأحرف )، ولعمل ذلك استخدم الدالة Len، مرر إليها النص وستعيد لك عدد الحروف.

كود:
myLength = Len("TafTaf")
الدالة InStr : يمكنك بواسطة هذه الدالة معرفة أول مكان يظهر فيه نص ما ضمن نص آخر أكبر منه. الوسيطة الأولى هي وسيطة اختيارية تحدد مكان بدء البحث، أما الوسيطة الثانية string1 فتحدد السلسلة النصية التي سيتم البحث فيها، والوسيطة الثالثة string2 تحدد السلسلة النصية التي سيتم البحث عنها في السلسلة الأولى، أما الوسيطة الأخيرة فهي اختيارية أيضا وتحدد نوع المقارنة التي يجب إجرائها وهي تأخذ أحد الثوابت التالية :
0 - vbBinaryCompare
1 - vbTextCompare
والفرق بينهما هو أن الأولى تراعي حالة الأحرف والثاني لا تراعي حالة الأحرف.
في المثال التالي الدالة i ستحتوي على القيمة 1 :

كود:
i = InStr("TafTaf","T")
وأما المثال التالي فستحتوي i فيه على القيمة 3 :

كود:
i = InStr("aafTaf","T")
حيث أن الدالة في المثال السابق ستبحث عن الحرف T بادئه من الحرف الثاني ولذلك فهي لن تجد الحرف الأول.

الدالة InStrRev : : وهي شبيهه بدالة InStr ( وقد سبق شرحها من قبل ) ولكن تكون عملية البحث عن الحرف عكسية أي تبدأ من نهاية القيمة . وهي حساسة لحالة الأحرف وتأخذ الصورة التالية :

كود:
Print InStrRev("Mostafa", "a”)Print InStr("Mostafa", "a")
بالنسبة للحالة الأولى سيكون الناتج رقم 7 لأنها تبدأ من نهاية القيمة .
أما في الحالة الثانية فسيكون الناتج 5 لأنها تبدأ من بداية القيمة .

الدالة Str : قد تبدو الدالة Str متشابهة مع الدالة chr، إلا أنها تؤدي وظيفة مختلف تماما، فهي تحول الأرقام إلى سلاسل نصية، وهي تفيد مثلا في حال أردت أن تقوم بالتحام بين رقمين فتقوم بتحويل كل منهما إلى سلسلة نصية وتطبق بينهما جمع السلاسل ( & ) الذي يختلف عن جمع الأرقام وبالتالي تحصل على سلسلة جديدة يمكنك أن تحولها إلى رقم من جديد، على سبيل المثال الدالة myNumber تحتوي على القيمة 123456.

كود:
myNumber = Str(123) & Str(456)
ستواجهك مشكلة في الشفرة السابقة حيث يقوم فبجوال بيسيك بإضافة مسافة قبل كل سلسلة نصية تنتج من الدالة السابقة.

الدالة Val : وهي تحول السلاسل النصية إلى قيمة رقمية وهي عكس الدالة Str() التي تحول الأرقام إلى سلاسل نصية وتأخذ الصورة التالية :

كود:
myNumber = Val (Text1.text)
وهنا تعمل الدالة علي تحويل القيمة الموجودة في Text1 إلى قيمة رقمية .

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

الدالة Right : : مطابقة للدالة Left في كل شيء، إلا أنها تأخذ العدد المحدد من الحروف من نهاية السلسلة.

الدالة Mid : : تعيد الدالة Mid عددا من الأحرف قدره length بدءا من حرف معين هو start، في سلسلة نصية string لاحظ أيضا أن الوسيطة length اختيارية وإذا لم تمرر بها أي قيمة فإن الدالة ستعيد الأحرف إلى نهاية السلسلة .
في المثال التالي ستحتوي المتغيرة myText على العبارة I'm Taf :

كود:
myText = Mid("I'm TafTaf", 1, 7)
أما في المثال التالي فستحتوي على الكلمة TafTaf :

كود:
myText = Mid("I'm TafTaf", 5)
التصريح Mid : : يقوم التصريح Mid باستبدال مقطع محدد من النص بنص آخر، وهو يكتب في صورة مشابهة جدا لطريقة كتابة دالة Mid ولكن توضع بعده علامة مساواة وبعدها العبارة الجديدة، في المثال التالي ستحتوي المتغيرة myText على القيمة I'm Asihy :

كود:
name = "Asihy"myText = "I'm name"Mid(myText, 5) = name
حيث سيتم حذف الجزء المحدد بالخاصية Mid ويوضع الجزء الذي بعد علامة المساواة في مكان الجزء المحذوف .

الدالة strReverse : تعيد السلسلة string معكوسة، أي تبدأ من البداية وتنتهي من النهاية، المتغيرة myText في المثال التالي ستحتوي على العبارة emoclew :

كود:
myText = strReverse("welcome")
 الدالة Replace  : وتقوم باستبدال النص string2 بالنص string3 ضمن السلسلة string1، أي أنها تبحث فبالنص string1 عن النص string2 وعندما تجده فإنها تحذفه منه وتضع مكانه string3، ويمكن تحديد نقطة بداية البحث بالوسيطة start، وعدد مرات الاستبدال القصوى بالوسيطة count، ضع القيمة -1 لاستبدال الكل، وطريقة المقارنة بالوسيطة compare كما ذكر سابقا.
المتغيرة myText في المثال التالي ستحتوي على القيمة Hi Everyone :

كود:
myText = Replace("Welcome Everyone,", "Welcome", "Hi", 1, -1)
 الدالة Format :  وتقوم هذه الدالة بتنسيق رقم أو سلسلة حروف أو التاريخ/الوقت الموجود في التعبير تبعا لتعليمات التنسيق الموجودة في الدالة نفسها . وتأخذ الصورة التالية :

كود:
MyDate = Format(Date, "dd-mmm-yyyy")Text1.Text = MyDate
الدالة Trim : تقوم هذه الدالة بحذف الفراغات الموجودة في الجهة اليسري و اليمني من سلسلة وتأخذ الصورة التالية :

كود:
MyText = Trim(" TafTaf ")Text1.Text = MyText
 الدالة Rtrim  : تقوم هذه الد الة بحذف الفراغات الموجودة في الجهة اليمني من سلسلة وتأخذ الصورة التالية :

كود:
MyText = Rtrim("TafTaf ")
الدالة Ltrim : وتقوم هذه الدالة بحذف الفراغات الموجودة في الجهة اليسري و اليمني من سلسلة . وتأخذ الصورة التالية :

كود:
MyText = Ltrim(" TafTaf ")
الدالة Space : وتقوم هذه الدالة سلسلة فراغات محدده بالعدد الموجود بين الأقواس

كود:
MyText ="I'm"+Space (2)+"TafTaf"
الدالة StrComp : تقارن سلسلتين لتحدد هل هما متساويتين ثم تعيد رقما بنتيجة المقارنة وتأخذ الصورة العامة التالية :

كود:
MyText =StrComp("TafTaf","TafTaf")
الدالة Ascw : وهي عكس الدالة Asc فالدالة Ascw ترجع كود الرمز المدخل إلى الترميز Unicode وتأخذ الصورة التالية :

كود:
MsgBox Ascw("ت")
الدالة Chrw : وهي عكس الدالة Chr تعيد الحرف الممثل لهذه القيمة في الترميز Unicode وتأخذ الصورة التالية :

كود:
MsgBox ChrW(1578(
توضيح اكثر للدوال الأربع :

كود:
Private Sub Command1_Click()MsgBox Asc("ت")MsgBox AscW("ت")MsgBox Chr(202(MsgBox ChrW(1578)End Sub
الدالة String : وتعمل هذه الدالة علي تكرار الحرف المار أليها وناجذ الصورة التالية .

كود:
MyString = String(10, "T") MsgBox MyString
هنا عملنا علي تكرار حرف T عشر مرات .

كود:
mystring = String(2, 13)ss = "Welcome To V.B World" & mystring & "Welcome To V.B World"MsgBox ss
وفي هذا المثال عملنا علي تكرار الضر علي مفتاح الإدخال والذي يرمز له برمز (13) في جدول اسكي مرتان .

[ دوال الوقت و التاريخ Date and Time
الدالة Now : تعيد هذه الدالة تاريخ اليوم و الوقت الحالي باستخدام ساعة الحاسب الذي تعمل علية وتكون بالصورة التالية :

كود:
Label1.Caption = Now()
الدالة Time : تعيد هذه الدالة الوقت الحالي حسب ما هو مدون بساعة الحاسب الذي تعمل علية وتكون بالصورة التالية

كود:
Label1.Caption = Time()
________________________________________
الدالة Date :تعيد التاريخ الحالي حسب ما هو مسجل بالحاسب ويكون بالصورة التالية :

كود:
Label1.Caption = Date()
________________________________________
الدالة Day والدالة Month :تعيد الدالة Day() رقما يقع بين 1 ، 31 يمثل ترتيب اليوم المقابل لقيمة تاريخية بينما تعيد الدالة Month() رقما يقع بين 1 ، 12 يمثل ترتيب الشهر المقابل لقيمة تاريخية

كود:
Label1.Caption =Day(Date())Label1.Caption =Month(Date())
________________________________________
الدالة DateSerial : تعيد هذه الدالة التاريخ المسلسل المقابل لليوم والشهر والسنة المدون بين الأقواس وتأخذ الصورة التالية :

كود:
GetDate=DateSerial(2003,4,11)MsgBox GetDate
________________________________________
الدالة TimeSerial : تعيد هذه الدالة الوقت المسلسل المقابل للساعة و الدقيقة و الثانية المدونة بين الأقواس وتأخذ الصورة التالية :

كود:
Get_Time=TimeSerial(12,59,20)MsgBox Get_Time
________________________________________
الدالة DateValue : تعيد هذه الدالة التاريخ المقابل لتعبير معين وتأخذ الصورة التالية :

كود:
RelVal = DateValue(Now – 1(MsgBox RelValSelect Case RelVal Case Is < Int(Now): Verb "كان "= Case Is > Int(Now): Verb = "سيكون" Case Else: Verb = "اليوم هو"End SelectWhatDay = Format(RelVal, "dddd”)MsgBox UserDate & Verb & WhatDay
يبن هذا المثال تحديد يوم من أيام الأسبوع (أمس) بعد تحديد قيمة تاريخ اليوم (بفرض : الاثنين الموافق 2سنة 1997) ثم طرح (1) منة يظهر الناتج في صورة رسالة بان أمس "كان الأحد" .
________________________________________
دوال Hour,Minute,Second,TimeValue:

كود:
Hour(رقم)Minute(رقم)Second(رقم)TimeValue(تعبير)
تعيد هذه الدوال قيم الساعة ، الدقيقة ، الثانية أو الوقت .

كود:
Midnight=TimeValue(“23:59:59”)HourDiff=Hour(Midnig ht)-Hour(Now)MinuteDiff=Minute(Midnight)-Minute(Now)SecondDiff=Scond(Midnight)-Second(Now)+1If Second Diff=60 Then MinuteDiff=MinuteDiff+1 SecondDiff=0End IfIf MinuteDiff=60 Then HourDiff=HourDiff+1 MinuteDiff=0End IfTotalMinDiff=(HourDiff*60)+MinuteDiffTotal SecDiff=(Total MinDiff*60)+SeconDiffMsg=”إجمالي الوقت المتبقي علي منتصف الليل هو”& Format(Total SecDiff,”#,##0”)Msg=Msg&”ثانية ، يمكن ترجمتها إلي”Msg=Msg & HourDiff & “ساعة، ” & MinuteDiffMsg=Msg & “دقيقة، و ” & SecondDiff & “ثانية”Msg BoxMsg
يستخدم هذا المثال الدوال السابقة لتحويل الوقت المتبقي علي منتصف الليل إلى ثواني ثم ترجمة هذا الوقت إلى ساعات ودقائق وثواني في رسالة كهذه "إجمالي الوقت المتبقي علي منتصف الليل هو 79972 ثانية يمكن ترجمتها إلى 22 ساعة 12 دقيقة 25 ثانية "
________________________________________
الدالة Weekday : تعيد هذه الدالة ترتيب اليوم بين أيام الأسبوع من التاريخ المدون بحقل التاريخ أو القيمة التاريخية باعتبار أن يوم الأحد رقم 1 والاثنين 2 ... وهكذا

كود:
Label1.Caption = Weekday(#1/4/97#)
________________________________________
الدالة Year : تعيد هذه الدالة رقما يعبر عن السنة لتاريخ معين .

كود:
Label1.Caption = Year(#1/4/97#)
________________________________________
الدالة DateAdd : تعيد هذه الدالة تاريخ جديد بعد أن تضيف له قيمة جديدة وبصرف عن اسم هذه الدالة فهي تعمل مع كل من التاريخ و الوقت . ويوضح الجدول التالي المقصود بالمعامل "الفاصل الزمني " و القيم التي يمكن تخصيصها له :
الفاصل الزمني -----------التوضيــــــــــــــــــــح
yyyy ----------- سنة
q -----------ربع سنة
m -----------شهر
y -----------يوم في سنة
d -----------يوم
w -----------يوم من الأسبوع ( الأحد 1 ، والاثنين 2 ... وهكذا
ww -----------أسبوع
h -----------ساعة
n -----------دقيقة
s -----------ثانية

كود:
Label1.Caption = DateAdd("yyyy", -10, Date(
وفي هذا المثال تعيد هذه الدالة السنة الحالية 2003 إلى 10 سنوات مضت 1993
________________________________________
الدالة DateDiff : تقوم هذه الدالة بإعادة الفرق بين تاريخين .
Label1.Caption = DateDiff("y", 2000, 2003(
بينما المثال التالي يحدد عدد الأسابيع وعدد الأيام ما بين أول أيام سنة 2003 وتاريخ اليوم

كود:
Label1.Caption = DateDiff("ww", #4/5/2003#, Now())Label2.Caption = DateDiff("y", #4/10/2003#, Now())
________________________________________
الدالة DatePart : تقوم هذه الدالة بإعادة جزء من التاريخ (مثل اليوم أو الشهر أو الأسبوع أو الساعة ) ويتم تعين هذا الجزء بواسطة الفاصل الزمني .
تعيد الدالة في هذا المثال رقم اليوم المحدد في حقل تاريخ الاعتماد (OrderDate )

كود:
Label1.Caption = DatePart("w", OrderDate)

تم تعديل بواسطه قنديل الصياد
  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information