سؤال

أرى أن إصدار دلفي الخاص بي، لا يحتوي على أحداث رئيسية (OnKeyDown، OnKeyUp، OnKeyPress) لـ TPaintBox.أود معالجة شيء من هذا القبيل.هل كان لدى شخص ما علبة طلاء تحتوي على هذه الأحداث؟

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

المحلول

كما قال TLama ، ستحتاج إلى الوراثة من TCustomControl. لكنك ستحتاج إلى بعض التعليمات البرمجية الإضافية لنشر جميع أحداث لوحة المفاتيح. يمكنك اختيار الطريقة السهلة والوراثة من TPanel نظرًا لأن TPanel يعرض بالفعل لوحة Canvas وعددًا من أحداث لوحة المفاتيح.

ولكن إليك بعض التعليمات البرمجية لإظهار كيفية إنشاء عنصر تحكم جديد وتسجيله ينشر خصائص TCustomControl ويقدم حدث OnPaint جديدًا:

إذا قمت بإنشاء حزمة جديدة وإضافة هذه الوحدة وتثبيتها ، فسيكون لديك عنصر تحكم TGTPaintBox جديد يمكن أن يكون له التركيز (على الرغم من أنك لا تراه). يمكنه استرداد إدخال لوحة المفاتيح أيضًا. Genacodicetagpre

لقد أضفت بعض الوظائف في محاولة لجعل عنصر التحكم شفافًا ، لأن PaintBox أيضًا. عيب واحد هو أنك تحتاج إلى إعادة رسم الوالد لمسح المحتوى المرسوم مسبقًا. في التطبيق التجريبي ، هذا سهل بما فيه الكفاية. أنا فقط أبطل النموذج بدلاً من عنصر التحكم. : ص
إذا لم تكن بحاجة إليه ، فيمكنك إزالة رمز الترقيم العام ورمز الترقيم العام ورمز الترقيم العام من عنصر التحكم.

عرض توضيحي صغير: ضع علامة على النموذج. ضع TGTPaintBox فوقه واجعله أكبر قليلاً. ثم أضف مؤقتًا ، وربما بعض عناصر التحكم الأخرى.

تأكد من تعيين خاصية TabStop لـ GTPaintBox على إنشاء كود رمز العلامة.

بعد ذلك ، قم بتنفيذ الأحداث التالية ؛ Genacodicetagpre

نصائح أخرى

يمكنك أيضًا إنشاء إطار به صندوق الرسم (محاذاة إلى alClient) وأعد استخدام الإطار حسب الحاجة. TFrame عبارة عن عنصر تحكم ذو إطارات، لذا فهو يحتوي على كافة أحداث لوحة المفاتيح.لم يتم نشرها ولكن يمكنك تعيينها في التعليمات البرمجية.

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