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

مساعده في الفيجوال بيسك 3 ضروري

بدأه لولين في 27 يناير 2009 · 3 رد · 551 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

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

عاوزه توضيح

Byval ,Byvref

....................

....................

DateDiff , DateAdd

......................

......................

Validating event , Validated event

....................

...................

shared Date ,shared Methods

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

#2

أولا .. الـ ByVal لإعطاء قيمة أو متغير يحمل قيمة لـ Procedure معين .. ومثال على ذلك :


If IsDate(MYDate) Then
GetDate = Format(MYDate, "YYYY/MM/DD")
Else
GetDate = Format(0, "YYYY/MM/DD")
End If
End Function
Private Function GetDate(ByVal MYDate As Variant) As Date

ويتم إستدعاء الإجراء السابق هكذا :

	MsgBox GetDate(Now)

أو هكذا :

	MsgBox GetDate("")

وفي الحالة الأولى يرجع بالتاريخ المرسل بالـ ByVal .. والثانية يرجع بالتاريخ 0 لعدم إرسال تاريخ

أما الـ ByRef وهو الإإفتراضي ويستخدم لإعطاء متغير يحمل قيمة أو لا يحمل قيمة للـ Procedure

و يمكن ملأه من الـ Procedure نفسه أي الرجوع بقيمة جديدة ومثال على ذلك :


If IsDate(MYDate) Then
MYDate = Format(MYDate, "YYYY/MM/DD")
Else
MYDate = Format(0, "YYYY/MM/DD")
End If
End Sub
Private Sub GetDate(ByRef MYDate As Variant)

ومن الممكن أيضا عدم كتابة كلمة ByRef نظرا لأنها هي الإفتراضية .. ويتم إستدعائه هكذا :



VarDate = Now

Call GetDate(VarDate)

MsgBox VarDate
	Dim VarDate As Variant

أو هكذا :



Call GetDate(VarDate)

MsgBox VarDate
	Dim VarDate As Variant

والجدير بالذكر أن الـ ByRef له فائدة عظيمه مع الإجرائات المفترض رجوعها بأكثر من قيمة

أي من الممكن كتابة Function من نوع Boolean وبها مثلا 3 متطلبات من نوع ByRef ومتطلب واحد من نوع ByVal

وعلى سبيل المثال إذا أردنا كتابة Function تعطينا ناتج قسمة رقم معين على 3 و 5 و 8 :


If MYValue > 0 Then
Value3 = MYValue / 3
Value5 = MYValue / 5
Value8 = MYValue / 8

Division = True
Else
Value3 = 0
Value5 = 0
Value8 = 0

Division = False
End If
End Function
Private Function Division(ByVal MYValue As Double, ByRef Value3 As Double, ByRef Value5 As Double, ByRef Value8 As Double) As Boolean

ويتم إستدعائها مثلا هكذا :


Dim VarValue5 As Double
Dim VarValue8 As Double

If Division(124, VarValue3, VarValue5, VarValue8) Then
MsgBox VarValue3 & vbNewLine & VarValue5 & vbNewLine & VarValue8
Else
MsgBox "Failed"
End If
	Dim VarValue3 As Double

وبإمكانك إستبدال الـ 124 بأي رقم آخر

وبمعنى آخر الـ ByVal هي معطيات منكي إلى الـ Procedure والـ ByRef هي الإستنتاجات

ثانيا .. الـ DateDiff لإيجارد فرق بين تاريخين معينين والـ DateAdd لإضافة فترة زمنية محددة إلى تاريخ بعينه

وعلى سبيل المثال لو أردنا معرفة الفرق بالأيام بين تاريخي 15/01/2009 و 27/01/2009 :

	MsgBox DateDiff("d", CDate("2009/01/15"), CDate("2009/01/27"))

الناتج 12 .. مثال آخر إذا أردنا إضافة الناتج السابق إلى 15/01/2009

MsgBox DateAdd("d", 12, CDate("2009/01/15"))

سنحصل هذه المره على الناتج تاريخ 27/01/2009

لاحظي معي الآن حرف الـ "d" المستخدم في المثالين .. ماذا يعني ؟

يعني تنفيذ الإجرائين على اساس اليوم .. إما إيجاد الفرق بالأيام أو زيادة المدة بالأيام

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

YYYY للسنين و M للشهور و WW للأسابيع و D للأيام و H للساعات و N للدقائق و S للثواني

بقي الآن نقطتين لا أدري من أين لكي معرفتهم .. يرجى ذكر المصدر داخل الـ Visual Basic تحديدا

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#3

ما شاء الله، لم أدخل المنتدى من بضعة أيام، وهذا الرد الرائع لأستاذنا تحدي رائع .

بقي Validation ، هو حدث التثبت من أداة TextBox ، متى يحدث؟ يحدث تماماً قبل الحدث LostFocus ، أي عندما تريد الانتقال من أداة إلى أخرى فإن هذا الحدث يتفجر (بمصلطح الأستاذ تركي العسيري) ثم يتم الانتقال، وحسب معلوماتي فإن هذا الحدث غير موجود في الإصدارات قبل Visual Basic 6 أي أنه غير موجود في 3.

كيف يتم استعماله؟ بالشكل التالي:

  1.  
  2. Private Sub Text1_Validate(Cancel As Boolean)
  3. If Len(Text1.Text) < 3 Then
  4. Cancel = True
  5. MsgBox "You must write more than three characters"
  6. End If
  7. End Sub
  8.  

في هذا الكود، إذا وضع المستخدم 3 حروف أو أقل، فإن البرنامج سيمنعك من الانتقال من الأداة، ويظهر رسالة توضح المشكلة، إذاً عند ضبط Cancel إلى True فإنك تمنع الانتقال إلى الأدوات الأخرى.

وهناك خاصية من خصائص TextBox وهي CausesValidation ، في حال ضبط هذه الخاصية إلى Ture فإن الحدث Validate لن يحدث أبداً.

أكرر أن هذا الحدث متوفر فقط في الإصدار السادس على حد علمي، والله أعلم.

بالنسبة لـShared Data و Shared Methods فأظن بعض القليل من البحث، أن هذا يقصد به محددات الوصول، Private و Public و Friend .

Shared Data هي البيانات (الثوابت والمتغيرات وغيرها) التي يمكن استعمالها في أصناف متعددة، يتم الإعلان عنها في وحدة نمطية Module على الشكل التالي:

Public Variable As Type

أو:

Global Variable As Type

حيث Variable هو اسم المتغير، وType هو نوعه .

أما بالنسبة لـShared Methods فهي الإجراءات العامة، يتم الإعلان عنها هكذا:

Public Sub MethodName()
Commands
End Sub

حيث MethodName هو اسم الإجراء (Procedure) .

تكمن الفائدة في Shared في إمكانية استعمالها في أصناف متعددة، ونماذج (Forms) متعددة، دون الحاجة إلى إعادة تعريفها.

أرجو أن أكون قد وفقت في إجابتك.

ملاحظة: في حال أن الإجابة وصلت، نرجو إخبارنا بذلك، لكي لا نظل ننتظر. شكراً لك

هذه الجملة خاطئة  :wacko: 


#4

يسلموااااااااااااااااااااا

على المساعده

والمعلومه وصللللللللللللت

تم تعديل هذه المشاركة بواسطة لولين في 28 يناير 2009 في 02:28

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

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

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

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

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