P> في تطوير برنامج تحليل الأوراق المالية ، غالبًا ما يكون من الضروري رسم المنحنى التحليلي لمختلف الأسهم. من أجل جعل وظائف البرنامج أكثر ملاءمة ومرونة ، يأمل المستخدمون أن يكونوا قادرين على تخصيص ألوان المنحنيات المختلفة وفقًا لتفضيلاتهم. هناك وظائف مماثلة في مربع الحوار الخط تحت القائمة [Format] من Word97. عندما ينقر المستخدم على مربع الحوار المنسدلة في مربع الحوار ، يتم عرض أنماط بسيطة من الألوان المختلفة مع أسماء الألوان للخطوط. مع اسم اللون. 1. تنفيذ مربع الحوار المخصص للألوان
في دلفي ، يمكننا استخدام Tcombobox لتحقيق وظائف مماثلة. هناك سمة نمط في مكون Tcombobox ، والذي يحدد سمة عرض Tcombobox. عادة ، يمكن اختيار CSDropdown و CSSimple و CsdropDownList و CSOWNERDRAWFIXED و CSOWNERDRAWVARAINT ، وما إلى ذلك. عند تحديد CSOWNERDRAWFIX ، فإن ذلك يعني إنشاء مربع منسد ذاتيًا. ويجب الرد على عملية الطلاء الذاتي في حدث Ondrawitem لـ Tcombobox. يتم تعريف Ondrawitem على النحو التالي:
PropertyOndRawitem: Tdrawitemevent ؛
tdrawitemevent = الإجراء (التحكم: twincontrol ؛ الفهرس: عدد صحيح: TRECT ؛ الحالة: TOWNERDRAWSTATE) OFOBject ؛
معنى ثلاثة معلمات هو:
التحكم: Tombobox يحتوي على مربع منسدلة
الفهرس: رقم فهرس مربع المنسدلة المرسومة ذاتيا في خاصية العناصر من Tcombobox
المستقيم: موضع السحب الذاتي لذلك ، نحن نعرف موضع المستطيل الذي يحتاج إلى مرسومة ذاتيا (المعلمة المستقيم) ورقم الفهرس (معلمة الفهرس) في tcombobox ، يمكننا استخدام خاصية قماش Tcombobox لرسم عليها قماشها. عملية التنفيذ المحددة هي كما يلي:
1. قم بإنشاء ملف مشروع جديد وقم بتعيين الخصائص ذات الصلة لنموذجه الافتراضي إلى:
Caption Custom Most Down Box
الاسم Form1
الموضع posscreencenter
2. ضع مكونين Tcombobox في النموذج وضبط خصائصهما على النحو التالي:
namestyleitemheightondrawitem
colorCombo1csownerdrawfixed 20colorcombodrawitem
colorCombo2Csownerdrawfixed 30ColorCombodrawitem
3. انقر نقرًا مزدوجًا فوق زر DOT بجوار خصائص العناصر الخاصة بـ ColorCombo1 و ColorCombo2 وأدخله في مربع الحوار StringListeditor.
أسود
أزرق
الأزرق والأخضر
أخضر مشرق
أحمر
أصفر
أسماء ألوان مختلفة
4. في حدث Ondrawitem في ColorCombo1 ، يو مانلوي؟
الإجراءات 1
var
TempColor: Tcolor
TempBrushColor: tcolor
يبدأ
مع (ControlastCombobox) do
// ارسمها على قماش التحرير والسرد
يبدأ
tempbrushcolor: = canvas.brush.color ؛
// احفظ اللون الأصلي
canvas.fillRect (Rect) ؛
CaseIndexof // تحديد ألوان مختلفة مرسومة ذاتيا وفقا للمؤشر
0: // الأسود
tempcolor: = clblack ؛
1: // الأزرق
tempcolor: = clblue ؛
2: // الأزرق والأخضر
TempColor: = Claqua ؛
3: // أخضر ساطع
tempcolor: = cllime ؛
4: // الأحمر
tempcolor: = clred ؛
5: // الأصفر
tempcolor: = clyellow ؛
// يمكن إضافة الاستجابة للألوان الأخرى هنا.
نهاية؛
canvas.brush.color: = tempcolor ؛
// مستطيل اللون مرسومة ذاتيا
Canvas.Rectangle (rect.left+4 ،
rect.top+1 ،
(Rect.Right+Rect.Left) Div3 ،
rect.bottom 1) ؛
canvas.brush.color: = tempbrushcolor ؛
// إظهار السلسلة المقابلة للون
canvas.textout ((rect.left+rect.right) div2 ،
rect.top+1 ،
العناصر [الفهرس]) ؛
نهاية؛
نهاية؛
5. احفظ وتشغيل الملف ، يمكننا أن نرى نفس تأثير مربع اللون المنسدلة في Word
يمكن للقراء المهتمين إضافة ألوان أخرى إلى المواقع الموضحة في المقالة.
يتم تمرير البرنامج أعلاه على Delphi3.0 ، 4.0. 2. اكتب مكونات مربع الحوار المخصصة
بالنسبة للعديد من مبرمجي Delphi ، من غير المألوف تمامًا كتابة مكونات Delphi الخاصة بهم. سنقدم أدناه كتابة المكونات باستخدام مربع الحوار المخصص للألوان كمثال. يستمر tcolorcombobox التالي من فئة Tcombobox. 1. حدد خيار المكون الجديد في عنصر القائمة المكون. حدد tcombobox في مربع CritsOrdype ، وملء tcolorcombobox في مربع اسم className ، وحدد عينات في مربع صفحة لوحة ، وملء colorcombobox.pas في مربع UnitFilename ، ثم انقر فوق الزر "موافق".
2. حدد خيار Install Component في عنصر القائمة المكون ، انقر فوق IntoneWpackage ، واكتب المسار و ColorCombodpk.dpk في مربع اسم الحزمة ، وانقر فوق "موافق" لإنشاء ملف colorcombodpk.bpl.
3. استخدم ImageEditor في قائمة الأدوات لإنشاء ملف edit colorcombox.dcr وإنشاء صورة نقطية لفئة tcolorcombobox.
4. إضافة مواصفات حجم الخط وارتفاعها وسمة النمط (تم تعيينها إلى CSOWNERDRAWID) في CreateWnd بعد إنشاء العديد من العناصر الملونة ، يمكنك إنشاء خاصية عناصر التحكم مباشرة. الألوان.
5. أضف برنامجًا لتصويرًا ذاتيًا للألوان إلى حدث DrawItem ، والذي يحدث قبل DrawItem.
إجراء التنفيذ على النحو التالي:
unitcolorcombobox ؛
واجهة
يستخدم
النوافذ ، الرسائل ، sysutils ، الفصول ،
الرسومات ، عناصر التحكم ، النماذج ، الحوارات ،
stdctrls
يكتب
tcolorcombobox = فئة (tcombobox)
خاص
{privatedEclarations}
FondRawitem: Tdrawitemevent ؛
ourduredRawItem (index: integer ؛ rect: trect ؛ State: Townerdrawstate) ؛
محمية
{protectedDeclarations}
عام
{publicdeclarations}
ConstructorCreate (Oenler: tcomponent) ؛ تجاوز ؛
الإجراءات الإجراءات ؛ تجاوز ؛
المنشورة
{publishedDeclarations}
PropertyOndRawitem: Tdrawitemevent
ReadFondRawItemWriteFondRawitem ؛
نهاية؛
الإجراء
تطبيق
الإجراءات ؛ // تسجيل مكون
يبدأ
registerComponents (عينات ، [tcolorcombobox]) ؛
نهاية؛
constructorcolorcombobox.create
(ANNERER: TCOMPONENT) ؛ // تهيئة المكون
يبدأ
وراثي (مالك) ؛
النمط: = csownerdrawfixed ؛
itemHeight: = 20 ؛
font.size: = 10 ؛
نهاية؛
الإجراءات colorcombobox.createwnd ؛
// تهيئة خاصية العناصر الخاصة بمكون اللون
يبدأ
ورث createwnd.
items.clear ؛
items.add (أسود) ؛
items.add (الأزرق) ؛
items.add (الأزرق والأخضر) ؛
items.add (أخضر مشرق) ؛
items.add (الوردي) ؛
items.add (أحمر) ؛
items.add (أصفر) ؛
items.add (أبيض) ؛
items.add (الأزرق الداكن) ؛
items.add (cyan) ؛
items.add (الأخضر) ؛
items.add (الأرجواني) ؛
items.add (قرمزي Red) ؛
items.add (أصفر عميق) ؛
items.add (رمادي غامق) ؛
items.add (Silver) ؛
// إذا كنت لا تحتاج إلى الكثير من الألوان ، فيمكنك حذف الألوان غير المرغوب فيها في سمة العنصر للمكون
نهاية؛
// overload عملية الرسم
الإجراءات colorcombobox.drawitem (الفهرس: عدد صحيح ؛ Rect: Trect ؛ State: Townerdrawstate) ؛
var
TempColor: Tcolor
TempBrushColor: tcolor
يبدأ
// الإعدادات الافتراضية للذات لهذا المكون
tempbrushcolor: = canvas.brush.color ؛
// احفظ اللون الأصلي
canvas.fillRect (Rect) ؛
ifitems [الفهرس] = أسود ثم
tempcolor: = clblack
elseifitems [الفهرس] = الأزرق ثم
tempcolor: = clblue
elseifitems [الفهرس] = الأزرق الأخضر ثم
TempColor: = Claqua
elseifitems [الفهرس] = أخضر ساطع ثم
tempcolor: = cllime
elseifitems [الفهرس] = الوردي ثم
tempcolor: = clfuchsia
elseifitems [الفهرس] = أحمر ثم
tempcolor: = clred
elseifitems [الفهرس] = أصفر ثم
tempcolor: = clyellow
elseifitems [الفهرس] = أبيض ثم
tempcolor: = clwhite
elseifitems [الفهرس] = الأزرق الداكن ثم
tempcolor: = clnavy
elseifitems [الفهرس] = سماوي ثم
tempcolor: = clteal
elseifitems [الفهرس] = الأخضر ثم
tempcolor: = clgreen
elseifitems [الفهرس] = الأرجواني ثم
tempcolor: = clpurple
elshifitems [index] = قرمزي ثم
TempColor: = Clmaroon
elseifitems [الفهرس] = أصفر عميق ثم
tempcolor: = clolev
elseifitems [الفهرس] = رمادي داكن ثم
TempColor: = clgray
elseifitems [الفهرس] = الفضة ثم
Elspcolor: = clsilver ؛
canvas.brush.color: = tempcolor ؛
// مستطيل اللون مرسومة ذاتيا
Canvas.Rectangle (rect.left+4 ،
rect.top+1 ،
(Rect.Right+Rect.Left) Div3 ،
rect.bottom 1) ؛
canvas.brush.color: = tempbrushcolor ؛
// إظهار السلسلة المقابلة للون
canvas.textout ((rect.left+rect.right) div2 ،
rect.top+1 ،
العناصر [الفهرس]) ؛
نهاية؛
يمكن استخدام هذا التحكم في جميع البرامج التي تتطلب خيارات الألوان وهي مريحة للغاية وجميلة ، ويوفر البرمجة الكثير من الوقت وزيادة موثوقية البرنامج وقابلية القراءة. 3. استخدام مكونات مربع الحوار المخصصة
بعد تسجيل مكون لون مخصص ، يمكنك تحديد مكون لون مخصص من صفحة عينة من قالب مكون Delphi ، ولا يوجد فرق بين استخدام مكون Delphi الخاص.