لماذا البرنامج يتجمد عند عمليات For في Listview وماهو الحل لتخطي هذه المشكلة ؟
#1
السلام عليكم ورحمة الله وبركاته ..

لماذا البرنامج يتجمد عند عمليات For I := 0 to Listview1.items.count Do

وماهو الحل المناسب لتخطي هذا التجمد ؟

جزاكم الله كل خير

اللهمّ إنّي ظلمت نفسي ظلماً كثيراً ولا يغفر الذّنوب إلا أنت

فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم
الرد
#2
الحل هو انشاء ثريد Thread جديد
السبب في حدوث التجمد هو عند انشاءك لبرنامج فهو يحتوي على Thread واحد على الاقل وعند الدخول الى حلقة تكرارية فان الثريد يشتغل لاتمام الحلقة التكرارية و لهذا يتجمد البرنامج
الرد
#3
شكراً جزيلاً اخي هل من الممكن شرح لآنشاء ثيرد ؟ وكيف التعامل معه وجزاك الله خيراً

حيث اني حاولت سابقاً التعامل مع ثيرد وفشلت للأسف

اللهمّ إنّي ظلمت نفسي ظلماً كثيراً ولا يغفر الذّنوب إلا أنت

فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم
الرد
#4
يمكنك استخدام CreateThread لهذا الغرض أو يمكنك استخدام Class TThread لهدا الغرض أيضا
هدا مشروع يوضح كيفية استخدام CreateThread
كود :
http://www.gulfup.com/?ULkNuh
هذا رابط من msdn لشرح مدخلات الدالة
http://msdn.microsoft.com/en-us/library/...85%29.aspx

وهذا مشروع اخر يوضح كيفية التعامل مع TThread (المهم موجود في Unit2 )
أبحث أكثر في الأمر لان هذه المشاريع لا أظن بأنها ستقرب الفكرة
كود :
http://www.gulfup.com/?OB1Olg
الرد
#5
أخي الكريم ليس بوسعي قول الا جزاك الله كل خير

اللهمّ إنّي ظلمت نفسي ظلماً كثيراً ولا يغفر الذّنوب إلا أنت

فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم
الرد
#6
الكود يجب ان يكون بهذا الشكل

كود :
For I := 0 to Listview1.items.count - 1 Do
الرد
#7
اعتقد يمكن استعمال
application.processmessages

لتخفيف التجميد لاكن يبقى ثريد افضل
.:: مبرمج شوارع ::.
الرد
#8
الاخوان افادوك من ناحية الثريد(Thread)
لكن لدي إضافة تخص الـTListview

عندما تريد تحديث أو اضافة عناصر جديدة في المكون تضع هذه الأوامر :
PHP كود :
try
      
Listview1.Items.BeginUpdate;
      for 
i := 0 to Listview1.items.count-1 do
      
begin
        
/////
        ///// write your code 
        /////
      
end;
    finally
      
Listview1.Items.EndUpdate;
      
Listview1.Refresh;
    
end; 

ويكون الكود الخاص بك داخل الـ try

حيث الأمر :
PHP كود :
Listview1.Items.BeginUpdate; 
يتيح لك التعديل في القائمة بدون حصول أخطاء أو تعليق
أما الأمر :
PHP كود :
Listview1.Items.EndUpdate; 
يغلق عملية التعديل على القائمة

أتمنى اني أفدتك , والسلام عليكم ورحمة الله وبركاتة
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم