السلام عليكم ورحمة الله وبركاته ..
لماذا البرنامج يتجمد عند عمليات For I := 0 to Listview1.items.count Do
وماهو الحل المناسب لتخطي هذا التجمد ؟
جزاكم الله كل خير
الحل هو انشاء ثريد Thread جديد
السبب في حدوث التجمد هو عند انشاءك لبرنامج فهو يحتوي على Thread واحد على الاقل وعند الدخول الى حلقة تكرارية فان الثريد يشتغل لاتمام الحلقة التكرارية و لهذا يتجمد البرنامج
شكراً جزيلاً اخي هل من الممكن شرح لآنشاء ثيرد ؟ وكيف التعامل معه وجزاك الله خيراً
حيث اني حاولت سابقاً التعامل مع ثيرد وفشلت للأسف
يمكنك استخدام 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
أخي الكريم ليس بوسعي قول الا جزاك الله كل خير
الكود يجب ان يكون بهذا الشكل
كود :
For I := 0 to Listview1.items.count - 1 Do
اعتقد يمكن استعمال
application.processmessages
لتخفيف التجميد لاكن يبقى ثريد افضل
الاخوان افادوك من ناحية الثريد(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;
يغلق عملية التعديل على القائمة
أتمنى اني أفدتك , والسلام عليكم ورحمة الله وبركاتة