دلفي PaintBox بدون الأحداث الرئيسية
سؤال
أرى أن إصدار دلفي الخاص بي، لا يحتوي على أحداث رئيسية (OnKeyDown، OnKeyUp، OnKeyPress) لـ TPaintBox.أود معالجة شيء من هذا القبيل.هل كان لدى شخص ما علبة طلاء تحتوي على هذه الأحداث؟
المحلول
كما قال TLama ، ستحتاج إلى الوراثة من TCustomControl. لكنك ستحتاج إلى بعض التعليمات البرمجية الإضافية لنشر جميع أحداث لوحة المفاتيح. يمكنك اختيار الطريقة السهلة والوراثة من TPanel نظرًا لأن TPanel يعرض بالفعل لوحة Canvas وعددًا من أحداث لوحة المفاتيح.
ولكن إليك بعض التعليمات البرمجية لإظهار كيفية إنشاء عنصر تحكم جديد وتسجيله ينشر خصائص TCustomControl ويقدم حدث OnPaint جديدًا:
إذا قمت بإنشاء حزمة جديدة وإضافة هذه الوحدة وتثبيتها ، فسيكون لديك عنصر تحكم TGTPaintBox جديد يمكن أن يكون له التركيز (على الرغم من أنك لا تراه). يمكنه استرداد إدخال لوحة المفاتيح أيضًا. Genacodicetagpre
لقد أضفت بعض الوظائف في محاولة لجعل عنصر التحكم شفافًا ، لأن PaintBox أيضًا. عيب واحد هو أنك تحتاج إلى إعادة رسم الوالد لمسح المحتوى المرسوم مسبقًا. في التطبيق التجريبي ، هذا سهل بما فيه الكفاية. أنا فقط أبطل النموذج بدلاً من عنصر التحكم. : ص
إذا لم تكن بحاجة إليه ، فيمكنك إزالة رمز الترقيم العام ورمز الترقيم العام ورمز الترقيم العام من عنصر التحكم.
عرض توضيحي صغير: ضع علامة على النموذج. ضع TGTPaintBox فوقه واجعله أكبر قليلاً. ثم أضف مؤقتًا ، وربما بعض عناصر التحكم الأخرى.
تأكد من تعيين خاصية TabStop لـ GTPaintBox على إنشاء كود رمز العلامة.
بعد ذلك ، قم بتنفيذ الأحداث التالية ؛ Genacodicetagpre
نصائح أخرى
يمكنك أيضًا إنشاء إطار به صندوق الرسم (محاذاة إلى alClient
) وأعد استخدام الإطار حسب الحاجة. TFrame
عبارة عن عنصر تحكم ذو إطارات، لذا فهو يحتوي على كافة أحداث لوحة المفاتيح.لم يتم نشرها ولكن يمكنك تعيينها في التعليمات البرمجية.