المكون المرئي هو في الواقع فئة. ولكن لكتابة عنصر تحكم ، يجب عليك استخدام حزمة. حدد جديدًا من قائمة الملفات وإنشاء حزمة جديدة. ثم انقر فوق الزر إضافة في نافذة الحزمة لإضافة مكون (وحدة).
حدد مكونًا جديدًا في الجزء العلوي من مربع الحوار المنبثق. نظرًا لأن جميع السمات والأساليب وأحداث عنصر تحكم لا يمكن أن تتكون بمفردها ، فأنت بحاجة إلى تحديد فئة الأجداد (أو "فئة الوالدين" أو "الفئة الأساسية") ثم إضافة سماتك وطرقها وأحداثك الخاصة. . حدد فئة الأجداد المطلوبة في المربع المنسدل بعد نوع الأجداد. نظرًا لأنه يتعين عليك رسم صورة عن طريق كتابة عنصر تحكم مرئي ، يتم اختيار TgraphicControl كصف من الأجداد. ثم أدخل اسم التحكم الجديد (الفئة) في مربع اسم الفصل ، والذي يبدأ عادةً بـ "T". يتم استخدام صفحة Palette لتحديد اسم صفحة التحكم لعنصر التحكم الجديد في نافذة Delphi ، مثل "Standard" ، والتي يمكن أن تؤخذ بنفسك. أضف المسار واسم ملف ملف التحكم الجديد في اسم ملف الوحدة وانقر فوق الزر "موافق". تتم إضافة عناصر تحكم جديدة. الآن يمكنك كتابة رمز لهذا التحكم.
فيما يلي مثال على كتابة شريط التمرير الذي يمكنه تخصيص الصورة لتوضيح كيفية كتابة عنصر تحكم بصري.
اتبع الطريقة أعلاه ، حدد tgraphiccontrol كطبقة الأجداد ، واسم عنصر التحكم الجديد هو tpighorizontalscroller (خنازير شريط التمرير). بعد تحديد مسار الملف واسم الملف ، انقر فوق الزر "موافق" للبدء في كتابة الرمز.
سيتم إنشاء وحذف كل عنصر تحكم ، لذلك يجب عليك أولاً كتابة هاتين العمليتين. لكل عملية في عنصر التحكم ، يجب تعريفها أولاً ثم كتابتها لاحقًا. هناك ثلاثة أنواع من العمليات أو السمات التي يتم تعريفها:
1. يتم استخدام المحدد بعد الخاص داخليًا في السيطرة ، ولا يمكن للشخص الذي يستخدم التحكم رؤيته ؛
2. ما يتم تعريفه بعد الحماية غير مرئي عمومًا ، ولا يمكن رؤيته إلا عندما يستخدم الآخرون عنصر التحكم كفئة أجداد لكتابة عناصر تحكم أخرى ؛
3. يمكن استدعاء الآخرين فقط في البرنامج بعد الجمهور ؛
4. يمكن رؤية المعرفة بعد النشر في نافذة الخاصية (مفتش الكائن). نظرًا لأن عملية الإنشاء والحذف لا يتم تنفيذها تلقائيًا عند إنشاء عنصر التحكم أثناء عملية البرمجة ، فقد يتم استدعاؤه أيضًا عند إنشاء عنصر التحكم ديناميكيًا أثناء تشغيل البرنامج ، لذلك يتم تعريفه بعد العام. (يشير رقم التسلسل هذا إلى موقع الكود في برنامج المصدر المرفق ، وهو نفسه أدناه) الآن ، ربما لا أعرف ماذا أكتب في هاتين العمليتين وكيفية تعديله. سوف نتحدث عن ذلك أدناه.
دعنا أولاً نضيف بعض الخصائص إلى هذا التحكم. نحدد خاصية MAX لتعيين أو قراءة الحد الأقصى لقيمة شريط التمرير. نظرًا لأن السمات لا تستخدم مباشرة في البرامج ، فأنت بحاجة إلى تحديد متغير يتوافق مع السمة ، مع تعديل أو قراءة قيمته. نظرًا لأنه يستخدم فقط داخل السيطرة ، فإننا نحدده بعد ⑵ ⑵. (بشكل عام ، تبدأ المتغيرات المرتبطة بالسمات بـ "F" ، مثل FMAX) بعد تحديد المتغير ، تحدد السمات. يجب أن تكون هذه الخاصية مرئية في نافذة مفتش الكائن ، لذا حددها ونشرها بعد ⑶. بناء الجملة المحدد هو:
خاصية <اسم الخاصية>: <type> اقرأ <متغير متجاوبة عند قراءة هذه الخاصية> اكتب <متغيرًا استجابة أو عملية عند كتابة هذه الخاصية>
يتم تعريف المتغيرات والسمات الأخرى أيضًا بشكل مشابه (مثل الحد الأدنى للقيمة ، القيمة الحالية القيمة ، إلخ). نحدد أدناه عدة سمات ومتغيرات لتعيين صورة شريط التمرير (لأن متغيرات الصورة خاصة ، سأتحدث عنها بشكل منفصل). نقوم بتحديد LeftButtonuppicture (صورة الزر اليسرى) ، LeftButtondownPicture (زر يسار الضغط على الصورة) وهكذا في نوع tbitmap (يجب تحديد المتغير المقابل).
يجب أن يكون الجميع قد لاحظوا أنه في برنامج المصدر المرفق ، عند تحديد هذه الخصائص ، يكون المتغير المقابل عند قراءة الخصائص المحددة بعد القراءة هو F ... ، والمتغير المقابل عند كتابة الخصائص المحددة بعد الكتابة ليست متغيرات ، ولكن شيء مثل تعيين ... ، إنها عملية مخصصة. يتم تعريف العملية لأن هذه الوظيفة على النحو التالي:
الإجراء <اسم العملية> (القيمة: <نوع قيمة الخاصية SET>)
نظرًا لأنه يجب القيام بأشياء أخرى عند كتابة سمات هذه الفئة ، لا يمكن معالجتها بمتغير واحد فقط ، ولكن يجب معالجتها مع عملية. يتم تعريف هذه العملية بشكل عام بعد الحماية. في عملية الفئة هذه ، يتم استخدام بيان مثل هذا في ⑷ لتعيين القيم لمتغير من نوع tbitmap ، والذي تم اعتماده لأنه لا يمكن تعيين متغيرات من هذا النوع مباشرة.
بعد تحديد خصائص متغيرات نوع tbitmap هذه ، يجب كتابة الكود في عملية إنشاء وتدمير عملية المذكورة أعلاه. نظرًا لأن TBITMAP هو أيضًا فئة ، يجب إنشاءه في عملية إنشاء ⑸ ، ويجب إصدار Free أثناء عملية التدمير. يستخدم البيان الموروثة المشار إليه هنا للإشارة إلى أن العملية موروثة من فئة الأجداد. (يجب عدم إسقاط هذا).
لأننا نكتب عناصر التحكم المرئية ، علينا رسم الصور على عناصر التحكم. تحتوي فئة الأجداد من سيطرتنا ، TgraphicControl ، على كائن قماش ، والذي يمكننا استخدامه مباشرة لرسم الصور. إذا لم تكن على دراية باستخدام قماش ، فمن الأفضل العثور على كتاب لقراءته.
الوظيفة التالية هي رسم الصور. كيف ترسم الصور على السيطرة؟ يوجد حدث للطلاء في فئة الأجداد TgraphicControl ، والذي سيؤدي تلقائيًا إلى إعادة طلاء عنصر التحكم. ما يتعين علينا القيام به الآن هو كتابة برنامج لهذا الحدث. أولاً ، حدد كائن قماش بعد الحماية. نظرًا لأنه موجود بالفعل في فئة الأجداد ، فليس هناك حاجة لإضافة أي تفسير. سوف نستخدم هذا الكائن لرسم. بعد ذلك ، تحتاج إلى تحديد عملية الطلاء وكتابة الرمز لرسم عنصر التحكم. حدد أولاً عملية الطلاء في الأماكن العامة. نظرًا لأنه يتم تشغيله بواسطة فئة الأجداد ، وليس من قبل المستخدم ، يجب إضافة التجاوز بعد ذلك ، وإلا فلن يصبح التحكم عنصر تحكم بصري لأنه لن يتم استدعاء إجراء الطلاء أبدًا. دعنا نكتب الرمز لعملية الطلاء.
يتم استخدام المتغيرات مثل T_Height في عملية الطلاء لبرنامج المصدر المرفق لهذه المقالة لتوفير حجم الأزرار والمنزلقات وما إلى ذلك في شريط التمرير. ، معظمها صحيح ، أعتقد أن الجميع سوف يفهمون تشغيل القماش في لمحة. تجدر الإشارة إلى أن الحكم التالي على متغير فوتوسوس
Fautosize هو متغير منطقي يرتبط بتوكيل خاصية التحكم. لاحظ أنه في رمز التحكم ، لا يتم استدعاء السمة مباشرة ، ولكن يتم استخدام المتغير المقابل.
بعد تجميع البرنامج هنا ، حتى لو قمت أخيرًا بالبحث عن سيطرتي الجديدة ، فلا يمكن التمرير. الآن دعنا نكتب حدث الماوس حتى نتمكن من التلاعب به. يتشابه تعريف عملية حدث الماوس إلى حد كبير مع عملية الطلاء ، باستثناء أنه ينبغي إضافة أوصاف المعلمة لاحقًا.
تنقسم أحداث الماوس إلى موسود تاون ، موسميوف وفأر ، ويجب إضافة التجاوز بعد التعريف. بعد ذلك اكتب رمزه لاحقًا. ملاحظة: حدث الماوس هنا هو الماوس ... ، وليس onmouse المعتاد ... ولكن ما هو التعريف في ⒀ ل؟ تعاريف الحدث هنا جميعها للمستخدمين لاستخدامها ، أي عند استخدام عنصر التحكم هذا ، سيتم عرضها في صفحة الحدث في مفتش الكائن.
رمز أحداث الماوس هذه بسيطة للغاية. تجدر الإشارة إلى أنه عند الاتصال بحدث مخصص ، يجب عليك أولاً استخدام مثل هذا البيان في ⒁ لتحديد ما إذا كان المستخدم قد كتب رمزًا للحدث. هذا مهم للغاية ، وإلا فإن الخطأ سيحدث في المكالمة.
لقد لاحظ الجميع أن الأحداث التي تسمى للتو الآن مخصصة ، وأن طريقة التعريف بسيطة للغاية ، والتي تشبه سمة التعريف ، ولكن tnotifyevent عند الكتابة.
tnotifyevent هو الحدث الافتراضي ، والذي يتم تعريفه على أنه:
tnotifyevent = الإجراء (المرسل: TOBJECT)
إذا كنت ترغب في تحديد شكل آخر من الحدث ، فيجب عليك القيام بذلك: أولاً اكتبه في النوع ثم
<اسم نوع الحدث> = الإجراء (<Parmeter>: <type>)
على سبيل المثال:
tcustomevent = الإجراء (a: integer ؛ b: string) ؛
ثم بعد التعريف العام:
<اسم الحدث>: <اسم نوع الحدث>
على سبيل المثال:
anevent: tcustomevent ؛
بعد قراءة هذه ، يجب أن تفهم البرنامج بأكمله. إذا كان هناك خطأ في التجميع أو العملية ، فيرجى التحقق من النقاط التالية:
1. ما إذا كانت هناك بيانات ورثية في عملية إنشاء وتدمير ؛
2. ما إذا كانت متغيرات نوع tbitmap إنشاء وخالية أو مجانية ؛
3. هل هناك اسم تحكم قبل العملية ، على سبيل المثال: tpighorizontalscroller.mosemove
كيفية تحديد ما إذا كان الماوس يدخل أو يترك التحكم:
حدد العملية التالية:
الإجراء الفأر (var msg: tmessage) ؛
الإجراء mouseLeave (var msg: tmessage) ؛
فقط اكتب الرمز أدناه!
هذه الطريقة مفيدة جدًا لكتابة أزرار ثلاثية الحالات!