delphi4arab منتديات دلفي للعرب
ما سبب عدم استجابة زر إغلاق - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : ما سبب عدم استجابة زر إغلاق (/showthread.php?tid=5388)



ما سبب عدم استجابة زر إغلاق - hamou1982 - 12-07-2013

السلام عليكم ورمضان كريم وتقبل الله منا ومنكم الصيام والقيام آمــــــــــتين
لماذ يتقف عن زر الإغلاق عن الإستجابة مع انني واضع به الكود close
وعدم الإستجابة هذا ليس دائما بل في بعض الأحيان
وعلى ما اظن عند ابقى في الفورم مدة طويلة متوقف عن العمل بها ربما مدة خمس دقائق وهذا فقط تخمين لا اكثر
كيف اتجاوز هذا المشكل كما انه ليس في كل الفورمات الموجودة بالبرنامج مع العلم ان لكل فرم زر اغلاق لكن لا اجد به هذه المشكلة الا في فورم واحد فقط
وشكرا


ما سبب عدم استجابة زر إغلاق - Agmcz - 12-07-2013

سؤال مبهم
وضح إن ردت ان يساعدك الأعضاء
وضح أكثر ماذا يحدث في البرنامج


ما سبب عدم استجابة زر إغلاق - hamou1982 - 13-07-2013

لدي في الفورم رز لإغلاق الفورم
ووضعت هذا الكود في الحدث OnClick للزر
Close;
لكن في بعض الأحيان لا يستجيب
ولا اعرف السبب
وشكرا


ما سبب عدم استجابة زر إغلاق - SMP3 - 13-07-2013

هل تستخدم Thread في برنامجك ؟
وضح أكثر : ماطبيعة برنامجك !!
هل الزر لغلق الفورم أو لغلق البرنامج ؟
هل الفورم المراد غلقه Child أم Parent(MainForm) ؟


ما سبب عدم استجابة زر إغلاق - hamou1982 - 13-07-2013

smp3 كتب :هل تستخدم thread في برنامجك ؟
وضح أكثر : ماطبيعة برنامجك !!
هل الزر لغلق الفورم أو لغلق البرنامج ؟
هل الفورم المراد غلقه child أم parent(mainform) ؟


السلام عليكم
هذه الفورم التي لايستجيب بها زر الإغلاق
واقصد اغلاق الفورم وليس البرنامج


ما سبب عدم استجابة زر إغلاق - Najy Ibraheem - 13-07-2013

السلام عليكم...

أعتقد أن المشكلة تحدث بعد النقر على أمر القائمة MenuItem1 أو أحد الزرين RzBitBtn2 أو RzBitBtn3 و ذلك بسبب وجود الحلقات التي تمر على كافة سجلات أحد الجداول. إذا كان البرنامج منشغلاً بتنفيذ إحدى الحلقات فإنه سيؤجل عملية الإغلاق إلى ما بعد انتهاء الحلقة.

إذا كان من الممكن مقاطعة الحلقة دون أضرار فضع الجملة Application.ProcessMessages مباشرة قبل نهاية الحلقة، و ربما تحتاج إلى ضبط متغير لمعرفة ما إذا تم النقر على زر الإغلاق أم لا.

سلام.


ما سبب عدم استجابة زر إغلاق - hamou1982 - 14-07-2013

لكن بعدما وضعت هذا الكود قبل نهاية الحلقة لم يظهر اي شيء وكانني لم اغير شيئ
ووضعته ايضا في مسط الحلقة ولكن لم يحدث اي تغيير
ثم وضعته بعد نهاية الحلقة ونفس الشيء


ما سبب عدم استجابة زر إغلاق - SMP3 - 15-07-2013

hamou1982 كتب :السلام عليكم
هذه الفورم التي لايستجيب بها زر الإغلاق
واقصد اغلاق الفورم وليس البرنامج

السبب هو أنه هناك حلقات تأخذ الكثير من الوقت للتنفيذ ==> الحلقات تشتغل ك thread منفصل (غير مباشر)
لحل المشكل هناك العديد من الطرق :
الطريقة الأولى استخدام thread (مباشر ) : يقوم بعمليات الحفظ و التعديل على الجداول .. ثم في حدث الزر غلق الفورم تقوم بانهاء ال thread أولا ثم غلق الفورم
الطريقة الثانية استعمال متغير للخروج من جميع الحلقات
PHP كود :
var Closed :Boolean;
While 
not Table1.Eof do
Begin
....
if 
Closed then Exit; 
end; 
وفي حدث زر الغلق تجعل المتغير Closed = True

الطريقة الثالثة في حدث زر الغلق تقوم باخفاء الفورم أولا ثم غلقه :
PHP كود :
Begin
 Self
.Hide;
 
Close;
end; 
سيتم اغلاق الفورم بعد انتهاء الخروج من جميع الحلقات .


ما سبب عدم استجابة زر إغلاق - hamou1982 - 20-07-2013

اشكرك احي على هذه المعلومة لقد استعملت الطريقة الثانية
والى حد الآن لم يحد المشكل واظن انه تمام
الا انني احتاج الى التوضيح اكثر للطريقة الأولى
هل استعملها في كلما كان هناك حلقة while في البرنامج
ام كيف
وهل هذه التعليمة
if Closed then Exit;
توضع قبل
table1.Next
ام بعده
اين توضع بالضبط
وشكرا


ما سبب عدم استجابة زر إغلاق - hamou1982 - 17-09-2013

ما هو thread
ولما يستعمل
وهل المثال الذي ارفقته يوجد به thread
ضع مثال يحتوي على thread من فضلك