الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الايقونات في القوائم الرئيسية

مغلق
بدأه آية الرحمن في 3 أغسطس 2005 · 7 رد · 966 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخواتي واخواتي مشرفي واعضاء المنتدى .......

تحية طيبة ،،،،

هناك موضوع محير ولم اجد له إجابة شافية ، واعتقد انه لم يأخذ حظه من البحث

وهو إضافة الايقونات إلى القوائم الرئيسية ، ولقد بحثت في المنتدى ولم اجد

إجابة شافية .

الرجاء ممن لديه فكرة أو طريقة ان يسعفنا بها

اشكر الجميع على حسن تعاونهم

آية الرحمن

#2

يمكنك ذلك عن طريق أداة SendBar

وهي مجانا

sandbar.zip

تم تعديل هذه المشاركة بواسطة ahm_ib في 3 أغسطس 2005 في 11:37

#3

اشكرك ahm_ib

ولكن هل لك ان تشرح لي كيفية الاستعمال .

آية الرحمن

#4

1- أولا عليكي إضافة الأداة الى شريط الأدوات

2- Right click on the toolbox choose add/remove items

3- Determine the place of sandbar.dll file

4- The tool will be added to toolbox

سوف يضاف عدد من الأدوات

أختاري منها أداة menubar

بعد ذلك أحذفي القوائم التي تضاف واختاري القوائم التي تريديها ولتغيير النص غيري خاصية text

لوضع صورة من خاصية image

لكتابة الكود اضغطي على كل عنصر لكتابة الكود له

#5

السلام عليكم

بالنسبة لوضع الصور في القائمة

لابد أن تخصص كل من الحدث MeasureItem و DrawItem و جعل الخاصية OwenerDraw تساوي True

الحدث MeasureItem كما هو مضمون اسمه أنه يعتني بمقياس المادة item في القائمة قبل عملية الرسم يتم تفعيله .

الحدث DrawItem رسم المادة يتم تفعيلة عندما تكون الخاصية المنطقية OwenerDraw في حالة تمكين True

بحيث أذا وجد الـ CLR وهو المترجم أن الخاصية في حالة True يقوم بتفعيل كِلا الحدثين MeasureItem و DrawItem

وبهذا نستطيع رسم أو إدراج أيقونه في الحدث DrawItem و إعطاء حجم ثابت للمادة في الحدث MeasureItem

لنبدأ الدرس

المشروع عبارة عن نموذج به قائمة منسدلة و به ImageList لوضع الأيقونات فيها .

ثم نعرف متغيرين ثابتين بهذا الشكل

 Const MenuItemsWidth As Integer = 80
 Const MenuItemsHeight As Integer = 24

هذين المتغيرين لتخصيص حجم المادة item في القائمة من حيث الطول و العرض.

الان نسند قيم المتغيرين للمواد المتوفرة في القائمة بهذا الشكل

  Private Sub MunOpen_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles MunOpen.MeasureItem
        e.ItemWidth = MenuItemsWidth
        e.ItemHeight = MenuItemsHeight
    End Sub



    Private Sub MnuExit_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles MnuExit.MeasureItem
        e.ItemWidth = MenuItemsWidth
        e.ItemHeight = MenuItemsHeight
    End Sub

ثم نقوم بإنشاء إجراء routine بهذا الشكل

  Private Sub DrawItems(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.DrawItemEventArgs, _
        ByVal Index As Integer, ByVal NameOfItem As String, _
    ByVal X As Integer, ByVal Y As Integer, ByVal TextX As Single, ByVal TextY As Single)
        Try
            Dim sb As New SolidBrush(Color.Black) 'فرشاة
            Dim f As New Font("Times New Roman", 10, Drawing.FontStyle.Bold) 'خط
            Dim rec As New Rectangle(X, Y, 16, 16) 'مستطيل
            e.DrawBackground() 'رسم الخلفية
            Dim bmp As Bitmap
            Dim hicon As IntPtr
            Dim NIcon As Icon
            bmp = ImgLst.Images(Index)'bmp اسناد الأيقونة في العنصر 
            hicon = bmp.GetHicon()
            NIcon = Icon.FromHandle(hicon)
            Dim TextPoint As PointF = New PointF(TextX, TextY) 'مكان القيمة النصية من حيث الإحداثيات
            e.Graphics.DrawIcon(New Icon(NIcon, 16, 16), rec) 'رسم الأيقونة
            e.Graphics.DrawString(NameOfItem, f, sb, TextPoint) 'رسم النص
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

هذا الإجراء نرسل له القيم التالية

العنصر و الحدث ومكان الأيقونة في قائمة الصور ImageList و النص المراد رسمه مثل ( فتح , تحرير , خروج ) و

الإحداث السيني و الصادي للمستطيل و كذلك الإحداث السين والصادي لمكان النص المراد رسمه

يكون بهذا الشكل

 Private Sub MunOpen_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MunOpen.DrawItem
        Try
            DrawItems(sender, e, 0, "Open", 0, 0, 18, 0)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

للمزيد من الإطلاع على أكواد أقوى من هذا إليك الرابط

هذا والله أعلم

MenuWithPics.zip

في المثال يتضح المقال

#6

جزاك الله خيرا أخى الغملاسي

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

#7

الأخ : الغملاسي

اشكر فيك روح التعاون

جاري التحميل وسأبلغك بالنتائج

آية الرحمن

#8

حياكم الله أداة sandbar غير مجانية ولم أعلم هذا إلا بعد أكثر من شهر من إستعمالها

وبدأت تظهر لي رسالة تخبرني عن ضرورة شراء المنتج هل هذ حدث معكم

Electrical communications and electronics engineer

C++ Developer

 


stackoverflow profile : http://stackoverflow.com/users/249120/ahmed-safan


 


Just Keep Moving On , never stop until you are dead


هذا الموضوع مغلق.

مواضيع مشابهة