بسم الله الرحمن الرحيم
السلام عليكم..كل واحد منا كان يعمل على vb6 و عندما انتقل ل vb.net ترك في لغته القيدمة كودات غنية لم يجد منها بعد في
اللغة الجديدة..و لكن اليوم عندما كنت أبحث في أحد قوائم اللغة vb.net وجدت امر اسمه غريب وهو :
من القائمة Toolلأمر Upgrade Visual basic6 Code واضح من التسمية أنه
تحديث لكودات فيجوال بيسك 6 ..
دخلت و اكتشفت أنه يحدث كودات فيجوال القديمة أو إذا لم يستطع يدلك على موقع المعلومات التي تريدها في مكتبة MSDN.
و الطريقة هي التالية:
لنقل أنك فتح مشروع فيهButton وتريد أن تضع فيه كود قديم بلغة VB6 انقر على هذا الزر مرتين لتدخل صفحة الكود الخاصة
به و الآن والمؤشر بين السطرين :
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End Sub
اذهب للقائمة Tool ثم إلى .. Upgrade Visual basic6 Codeستظهر لك نافذة بها تبويبان الأول هو Code و الثاني
متعلق بتحديث الأدوات : يوجد صندوق نص اكتب كود الvb6فيه و سنأخذ هنا أمثلة لأنه للتحديث شروط:
1- تحديث الكودات:
بالنسبة لإظهار رسالة تحذير كنا نكتب في vb6:
MsgBox "Eias -The Crash", vbExclamation, "About!!"
الآن انسخ هذا الكود و ضعه في محرر Upgrade Visual basic6 Code ثم انقر الزر(طبعا بعد أن تتبع الخطوات السابقة )
Upgrade و اتنظر ال شريط التقدم حتى ينتهي البحث ثم ستغلق المحرر تلقائيا و يكتب
لك الكود بين السطرين في كود الزر
وهو سيصبح كالتالي في vb.net:
MsgBox("Eias -The Crash", MsgBoxStyle.Exclamation, "About!!")و الآن لنأخذ مثال آخر...المثال الآن سوف يكون أكثر تعقيدا أي أننا لن نعتمد على مكان واحد بل سيكون الكود مجزءو أيضا ستكون
هناك فكرة أخرى و هي كيف نعدل الكود المعدل سيتناسب من ما نريد:
لكي نعلم الوقت الذي مضى على تشغيل ال Windwos كنا نكتب في vb6 الكود التالي:
في قسم General كنا نكتب الكود:
Private Declare Function GetTickCount Lib "Kernel32" () As Long
و في حدث النقر على الزر كنا نكتب الكود:
Me.Caption = Format(GetTickCount / 10000 / 6, "0")
و الآن سوف نحدث بالطريقة نفسها كل كود على حدى الآن اختار الكود الأول
Private Declare Function GetTickCount Lib "Kernel32" () As Long
و ضعه في محرر التحديث Upgrade Visual basic6 Code ثم انقر Upgrade ستحصل على الكود التالي:
Private Declare Function GetTickCount Lib "Kernel32" () As Integer
وهو لا يختلف نهائيا ..ستضع هذا الكود تحتPublic Class Form1 .
و الآن نأتي لكود الزر أيضا كرر العملية السابقة فستحصل على الكود التالي :
'UPGRADE_WARNING: Couldn't resolve default property of object Me.Caption. Click for more: 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm? keyword="vbup1037"' 'UPGRADE_WARNING: Couldn't resolve default property of object GetTickCount. Click for more: 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm? keyword="vbup1037"' 'من هنا يبدا الكود Me.Caption = VB6.Format(GetTickCount / 10000 / 6, "0")
و ستجد أن الكود لم يتعدل تعديل كامل و بقي و فيه مشاكل و أيضا و كتب لك ال.net عبارتين بالأصفر بأن الكود لم يتحدث أو
يحل بشكل كامل و لهذا يمكن مراجعة الرابط التالي في MSDN و لكي تذهب للرابط انقر عليه من الضغط على مفتاح ALT .
ولكن عندما نمعن النظر في الكود نجد بأن الخطأ واضح لا يحتاج إلى عودة ل MSDN و الخط الأزرق موضوع تحته وهو كلمة
Me.Caption
طيب نحن في vb.net لم يعد عندنا خاصية اسمها Caption ونحن نعلم أنها تحولت للخاصية Text أي عنوان الForm
طيب نحن لو بدلنا كلمة Caption ب Text سينجد الكود أصبح جاهز و صحيح ..و بالتالي يصبح الكود:
Me.Text = VB6.Format(GetTickCount / 10000 / 6, "0")
و سيظهر الوقت في عنوان الForm .
كان هذا مثال للتعديل اليدوي و التعاون بين المبرمج و vb.net
طبعا هناك أمور لن يفهمها الvb.netأبدا مثلا لو كنت مستخدم تسمية في القسم General مثل :
Dim a As Integer
ثم أتيت للزر و كتبت فيه الكود :
a = 10 Me.Caption = a
ثم أخذت الكود الأخير فقط و وضعته في محرر التحديث فأنه لن يعطيك نتيجة لأن a غير معروقة بالنسبة له لذلك عليك أن تراعي
الكود قبل تحديثه..
بالنسبة لتحديث الادوات فأنا حاليا أجري تجارب على هذه العملية و إن شاء الله النتيجة قريبة..
و شكرا لكم..
إيــاس نبهان
