مشاهدة النسخة كاملة : هل تعلم أن البرنامج يتوقف عن مواصلة مهامة عند اظهار (MsgBox)
RealNoooH
09-12-2007, 08:58 PM
السلام عليكم
وكما يعلم البعض أنه عند إستخدام (MsgBox) في لغة (VB6) لإظهار أي رسالة
فإن البرنامج يتوقف نهائياً عن تنفيذ أي عملية حتى لو كانت داخل (Timer)، وبالتالي
لن يواصل البرنامج تنفيذ أي عملية أخرى حتى يقوم المستخدم بالرد على هذه الرسالة
-مثلاً يقوم بالضغط على زر (OK)- لذا كان لا بد من إيجاد حل مناسب لهذه المشكلة والتي واجهتني أنا تحديداً،وبالفعل وجدت الحل، أو بالأصح وجدت الحلّين في إحدى المواقع الأجنبية كالتالي: -
1) أن أقوم بتشغيل برنامج كلما دعت الحاجة لإستخدام (MsgBox).
وبالتأكيد لا أنا ولا غيري سيقوم بإستخدام هذا الحل حتى لو كان آخر عمل في حياتنا . . .
2) أن أقوم بإستخدام إحدى دوال الـ (API) والتي تدعى (MessageBox) والبرنامج المرفق يوضح ذلك بالتفصيل . . .
للتحميل: -
من المرفقات أو على الرابط التالي: -
- http://www.arbup.org/v/4824490/API_MsgBox.rar.html
ملاحظة هامة جداً: هذه الطريقة منقولة من إحدى المواقع الأجنبية مع بعض الإضافات الشخصية.
وتقبلوا تحياتي (NoooH)
TeamFlex
11-12-2007, 03:03 AM
فيه حل ثانوي
انك تصمم فورم بحجم المسج بوكس و وضع تكست بوكس و البوتونز الي محتاجهم فيها
وعموما المسج بوكس انهريتيد من الفورم واضيفت اليه خصائص معينة
شكرا على الشرح
دمت بود وعافية
RealNoooH
12-12-2007, 08:35 PM
السلام عليكم
شكراً على هذه الإضافة الطيبة والتي أرحب بها دائما كما أنها تجعل الموضوع أكثر ثراءً.
إضافة بسيطة ، طريقة أخرى بإستخدام الـ (Threading) لجعل البرنامج يواصل باقي العمليات عند إستخدام (MsgBox) . . .
تحياتي (RealNoooH)
TeamFlex
16-12-2007, 02:09 AM
اممممممممم
ممكن اعطي شرح بسيط عن الثريد
مع اني ما استخدمته لحد الان لكن فكرت الثريد انه يسمح بعمل اكثر من كود في نفس الوقت (حرفيا هذا مو صحيح)
مثال: في حالت كان عندنا كودين نبي نشغلهم بنفس الوقت:-
طريقة الثريد انه يشتغل على الكود الاول وعلى السطر الاول من هالكود
ثم ينتقل للكود الثاني على السطر الاول
ثم يعود على للكود الاول وينزل للسطر الثاني
وثما ينتقل للكود الثاني وينزل للسطر الثاني
وهكذا
يعني مثل الي يحاول يطبخ و يذاكر بنفس الوقت
تلقاه مره يحرك الطبخ الي بالقدر ومره يقلب بصفحات الكتاب
والموضوع ما فيه سرعة تشغيل البرنامج لانه ماراح تفرق معاه بالضبط لكنك ممكن تحتاج هالطريقة في حالات خاصة
مثل ما سبق وكتب اخوي realnoooh قال في حالت المسج بوكس وان في كوماند ينتظر العمل بعد المسج بوكس
وسوري على الاطاله
RealNoooH
16-12-2007, 09:33 PM
السلام عليكم
الأخ (TeamFlex) مشكور وباقي الأعضاء على المشاركة ، بس عندي سؤال عن كيفية معرفة أن الثريد يقوم بتنفيذ السطر الأول ثم يعود إلى السطر الأول من الكود الثاني وهكذا . . .
تحياتي (RealNoooH)
TeamFlex
22-12-2007, 02:29 AM
لي سنة من خلصت دورة MCSD وما جربت ابدا استخدم الثريد لعدم الحاجة
لكن بكتبلك مثال بسيط جدا ويحبه قلبك
سولك Form وحط فيها Button
ضيف للبرنامج هالمكتبة :
Imports System.Threading
كذا راح تظيف المكتبة الخاصة بلثريدنق
داخل البوتن حط هالكود:
Dim Thread1 As ThreadStart = New ThreadStart(AddressOf TheFun)
Dim ThreadOne As Thread = New Thread(Thread1)
ThreadOne.Name = "First"
Dim ThreadTwo As Thread = New Thread(Thread1)
ThreadTwo.Name = "Second"
ThreadOne.Start()
ThreadTwo.Start()
السطر الاول :عرفتلي (امر الثريد) الي راح ينفذ الكود الموجود في السوب TheFun واسمه Thread1
السطر الثاني :عرفتلي الثريد الاول الي راح ينفذ (امر الثريد) واسمه ThreadOne
السطر الثالث :عطيت الثريد الاول اسم ظاهري اقدر منه اعرف اي ثريد يشتغل عندي حاليا
السطر الرابع :عرفت الثريد الثاني الي كذلك ينفذ (امر الثريد) واسمه ThreadTwo
السطر الخامس :عطيت اسم ظاهري مثل السابق
السطر السادس و السابع :طلبت بتشغيل الثردين
حط هالـ Sub داخل البرنامج:
PrivateSub TheFun()
For AutoNum AsInteger = 0 To 10
MessageBox.Show(Thread.CurrentThread.Name & "-" & AutoNum)
Next
EndSub
هالسوب عرفتلي فاريبل من نوع انتيجر وحطيته في لوب يمشي من صفر الين عشرة
وكل مرة يدور راح يطلعلي اسم الثريد الظاهري الي يشتغل و الرقم المخزن في الفاريبل
==============
راح تشوف انك اول ماتشغله بيطلعلك مسجين بوكس بنفس الوقت وهذا شي مامر عليك من قبل
المسج بوكس الاول فيه اسم الثريد الاول مع الرقم المخزن بافاريبل
المسج بوكس الثاني فيه اسم الثريد الثاني مع الرقم المخزن بافاريبل
وموفق
فتى البرمجة
22-12-2007, 10:17 PM
شكرا على المعلومات والكود
اخوكم فتى البرمجة
RealNoooH
22-12-2007, 11:51 PM
السلام عليكم
شكراً أخ (TeamFlex) على الشرح ، بس سؤالي كيف قمت بإثبات أن الثريدينغ يقوم بتنفيذ السطر الأول من الكود الأول ثم يقوم يتنفيذ السطر الأول من الكود الثاني وهكذا . . .
تحياتي
TeamFlex
23-12-2007, 12:30 AM
ما اعتقد اني اثبت قصدك
ما شفت من قبل حركة الثريد لان التريستنق ما يتتبع حركته
يمكن اشتغلت على موضوعك بالمثال الي حطيته
بس بشكل عام الثريدنق قدر يشغل الكود كلن على حدا بدون ما يعطل الكود الاولي الكود الثاني
واعتقد هذا حدي
abu2020
11-02-2008, 12:27 AM
السلام عليكم
شكرا على الموضوع الجميل واحب اضيف ان الinputbox هو الاخر عن استدعائه يتوقف البرنامج عن العمل
بالتوفيق
جميع حقوق برمجة vBulletin محفوظة ©2025 ,لدى مؤسسة Jelsoft المحدودة.
جميع المواضيع و المشاركات المطروحة من الاعضاء لا تعبر بالضرورة عن رأي أصحاب شبكة المنتدى .