تحديث وتعديل الـ UI 💡

1 Minutes Sep 13, 2023 186 Words

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

في الحالة العادية اي تحديث او عملية رسم ستحدث في الثريد الرئيسي للطبيق وستكون خاضعة لترتيب الكود. هذا قد يحدث بطئ واحيانا ( في بعض المكونات ) تأجيل الرسم . مما يؤدي لتوهم المستخدم بان التطبيق قد علق او تجمد وانه توقف عن العمل. فكر بـ progressbar او log في Memo

لهذا من الافضل نقل اجراءات التحديث إلى ثريد اخر. يجب ان انوه إلى أن استخدام Synchronizations العملية مكلفة فلا تستخدمها إلا في حال الضرورة وعند الحاجة . واقصد بمكلفة انها تحتل ذاكرة اضافية وجهد اكثر من المعالج . فلا تغرق برنامجك بها

لا تنسى اضافة System.Threading إلى uses

TThread.CreateAnonymousThread(
  procedure
  begin
    // ضع هنا ما تريد   
    ...

    TThread.Synchronize(nil,
      procedure
      begin
        // هنا المكان المهم . الذي يجب ان يحتوي على اوامر تحديث المكونات
        // يمكنك وضع هذه الاوامر في اجراء  وطلبه هنا . هذا سيتيح لك التعامل مع
        // المتغيرات من خارج هذا الثريد
      end);

   // ضع هنا ما تريد ايضا
   ...

  end
).Start();