سؤال

إذا قمت بإنشاء نموذج جديد Delphi، ربط حدث OnResize، وتشغيل التطبيق، يتم إطلاق OnResize قبل إظهار النافذة. ما لا أعرفه هو ما إذا كان هذا سيحدث دائما، لأي نافذة.

(لأي شخص على دراية بواجهة برمجة تطبيقات Windows، قمت بتتبعها إلى مكالمة ShowWindow في Tcustomform.ShowerChanged (Forms.Pas Line 5503 في Delphi 2007)، والتي تبدو على ما يبدو WM_SIZE... على الأقل، للحصول على نافذة جديدة بدون مجموعة خصائص أخرى. أنا لم أره موثقة أن ShowWindow دائما حرائق WM_SIZE, ، لذلك أنا لا أعرف ما إذا كان يمكنني الاعتماد على هذا أم لا.)

وبالتالي: هل يمكنني الاعتماد على tform دائما إطلاق النار عندما يظهر أولا؟ أو هناك ظروف (ربما إذا كانت النافذة غير قابلة للتغيير، فربما إذا كانت خاصية الموضع لها قيم معينة، وما إلى ذلك) حيث قد OnResize ليس النار قبل أن تظهر النافذة لأول مرة؟

هل كانت مفيدة؟

المحلول

لا، هذا الحدث لا يطلق دائما عندما يظهر النموذج، اعتمادا على أشياء مثل Borderstyle. على سبيل المثال، يطلق النار على بدء التشغيل ل BSSingle، ولكن ليس ل BSDialog.

من السهل الاختبار. ما عليك سوى إضافة بعض رمز التسجيل إلى حدث OnResize النموذج الرئيسي، وقم بتغيير Borderstyle وتشغيل التطبيق الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top