مشمش
الميزة الرئيسية لواجهة Windows هي عرض الرموز الملونة، لا تعمل الرموز على تجميل سطح مكتب Windows فحسب، بل تسهل أيضًا التشغيل البديهي، مما يوفر راحة كبيرة للمستخدمين. يعد نمط Windows مرجعًا جيدًا عند تصميم واجهات البرامج.
توفر دلفي بشكل عام طريقتين لإعداد الأيقونات، إحداهما هي تحديد أيقونة التطبيق في خيارات PROject، والأخرى هي توفير سمة الأيقونة في صفحة الخصائص الخاصة بـ Object Inspector. إذا كنت تريد تصميم قائمة منبثقة جميلة مثل قائمة ابدأ في نظام التشغيل Windows، فعليك كتابة الكود بنفسك.
نحن نعلم أن معظم تطبيقات Windows تحتوي على أيقونات بحد ذاتها، وطالما قمت بإزالة الرموز من البرنامج نفسه، وضبط حجم الرمز وإضافته إلى القائمة المنبثقة، فستكتمل القائمة الجميلة.
أولاً، استخدم ExtractAssociatedIcon للحصول على الأيقونة من برنامج معين، ومع ذلك، يختلف حجم الأيقونة وقد لا تتم إضافتها مباشرة إلى القائمة. وفي الوقت نفسه، لا توفر دلفي وظيفة ضبط حجم الأيقونة يجب تحويل ملف الرمز إلى ملف نقطي، ثم اضبط حجم ملف الصورة النقطية، وأخيرًا استبدل عناصر القائمة بملف الصورة النقطية. رمز المصدر الخاص به هو كما يلي:
يكتب
TForm1 = الفئة (TForm)
القائمة الرئيسية 1: القائمة الرئيسية؛
ملف 1: TMenuItem؛
/****العناصر الموجودة في شريط القائمة****/
Open1: TMenuItem;
/******العناصر الموجودة في ملف القائمة******/
الإجراء FormCreate(Sender: TObject);
الإجراء FormShow(Sender: TObject);
خاص
{إعلان المعلمة المحلية}
عام
{إعلان المعلمة العامة}
Icn، Txt، MnuItm: TBitmap؛
نهاية؛
الإجراء TForm2.FormCreate(Sender: TObject);
فار R: TRect؛
هيكن: هيكون؛
جيم: تيكون؛
الفهرس: كلمة؛
اسم الملف: PChar;
يبدأ
/**الحصول على أيقونة من أحد البرامج**/
Ic:=TIcon.Create;
Ic.Handle:=ExtractAssociatedIcon(Hinstance, /*اسم الملف والمسار*/,Index);
/** إنشاء صورة نقطية**/
Txt:=TBitmap.Create;
مع النص تفعل
يبدأ
Width:=Canvas.TextWidth('اختبار');
الارتفاع:=Canvas.TextHeight('Tes');
Canvas.TextOut(0,0,' اختبار');
نهاية؛
/ ** انسخ الرمز إلى الصورة النقطية التي تم إنشاؤها أعلاه واضبط حجمها ** /
Icn:=TBitmap.Create;
مع Icn القيام به
يبدأ
العرض: = 32؛
الارتفاع: = 32؛
Brush.Color:=clBtnFace;
Canvas.Draw(0,0,Ic);
نهاية؛
/** إنشاء ملف الصورة النقطية النهائي**/
MnuItm:=TBitmap.Create;
مع MnuItm القيام به
يبدأ
العرض:=Txt.Width+18;
الارتفاع: = 18؛
مع قماش القيام به
يبدأ
Brush.Color:=clBtnFace;
Pen.Color:=clBtnFace;
Brush.Style:=bsSolid;
مستطيل (0،0، العرض، الارتفاع)؛
CopyMode:=cmSrcAnd;
StretchDraw(Rect(0,0,16,16),Icn);
CopyMode:=cmSrcAnd;
رسم(16,8-(Txt.Height div 2),Txt);
نهاية؛
نهاية؛
نهاية؛
الإجراء TForm2.FormShow(Sender: TObject);
فار
معلومات العنصر: TMenuItemInfo;
hBmp1:Thandle;
يبدأ
HBmp1:=MnuItm.Handle;
مع ItemInfo القيام به
يبدأ
cbSize:= SizeOf(ItemInfo);
fMask:= MIIM_TYPE;
fType:= MFT_BITMAP;
dwTypeData:= PChar(MakeLong( hBmp1, 0 ));
نهاية؛
/** استبدل عنصر القائمة Open1 بالصورة النقطية **/
SetMenuItemInfo( GetSubMenu( MainMenu1.Handle, File1.MenuIndex ),
Open1.MenuIndex، صحيح، ItemInfo );
نهاية؛
لقد تم تصحيح أخطاء البرنامج أعلاه ضمن بيئات Windows98 وDelphi 4.0.