اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

كود انشاء toolbar


إذهب إلى أفضل إجابة Solved by Barna,

الردود الموصى بها

السلام عليكم : لي طلب صغير اساتذتي الكرام ،مثلما تعودنا بمتابعتكم و تاطيركم و عونكم و اجتهادكم ووقوفكم معنا

اريد كود انشاء  toolbar  اي الشاشة التي تظهر عند الضغط على زر الماوس الايمن مثلما هو مبين بالصورة اسفله و قد ارفقت مثالا للعمل عليهImage1.png.74aef1945ee1bd81ee2483ee6b922ac7.png

 

المثال.rar

رابط هذا التعليق
شارك

  • أفضل إجابة

تفضل شاهد هذا الموضوع

في 1‏/1‏/2020 at 22:56, jjafferr said:

السلام عليكم 🙂

 

هناك الكثير من الميزات/الاوامر التي يعطينا برنامج الاكسس ، والتي يمكن ان نعمل لها بديل ، ولكن يكون هناك فرق في سرعة تنفيذ كودنا مقارنة مع الكود الاصل من الاكسس !!

مثل القائمة المختصرة التي تظهر لنا بالنقر على زر الفأرة الايمن ، والتي بها يمكننا ان نستغني عن الكثير الاوامر ، مثل الفرز والتصفية بأنواعه ،

ولكن وللأسف الشديد ، فأنا ارى ان 99.99% من البرامج ، يتم حذف هذه القائمة وعدم تفعيلها ، والسبب ان المستخدم يستطيع ان يدخل في تصميم النموذج من خلال هذه الاوامر(في الدائرة الحمراء) :

 

 image.png.30c9131ee4df6299009a1fb9cc5739db.png  و  image.png.88f47eb9f596b9330dbcf9e272ff9d7b.png    

.

ويضطر المبرمج ان يعوض بقية الاوامر في القائمة ، بمجموعة من الازرار ، او بطرق مختلفة !!

-----------------------------------------------------------------------------------------------

 

الاكسس يسمح لنا ان نعمل قوائم مختصرة Shortcut Menu والتابعة لمجموعة  CommandBars ، حسب احتياجنا ، ونختار ما نضعه فيها 🙂

هناك 3 انواع من هذه القوائم :

الثابته ، والمؤقته ، والمؤقته التي تحتاج الى كود.

الثابته:

وهي التي عندما نعملها ، تصبح مستقله عن الكود ، وتُحفظ وتبقى في قاعدة البيانات بعد إغلاقها ، ويمكننا ان نستوردها في قاعدة بيانات اخرى عندما نستورد احد/جميع كائنات قاعدة البيانات الآخرى ، بإستخدام :

image.png.f0046b41187da5f52f55380345bec2d0.png

.

ونختارها في النموذج :

image.png.8d5036f08914654a91bad6666c90c0da.png

.

او التقرير :

image.png.bb976cdf3daebb0d5f3f73ad3b12b6a3.png

.

هذا مثال لعمل الكود الاساس لعمل قائمة قطع/نسخ/لصق :  image.png.ce24b55a15afad7be06ecd1ec3c5145a.png

Option Compare Database
Option Explicit

    Dim cmb As Object
    Dim cmbCtrl As Object
    Dim cmbName As String
'

'
' to use:
' Dim cbr As Commandbar
' Dim cbrButton as CommandbarControl
'
' we have to select in the References:
' Microsoft Office xx.x Object Library
'


Public Function SCM_Copy(Optional DeleteMe As Boolean = False)
    
    On Error Resume Next 'If menu with same name exists delete
    cmbName = "cmb_Copy"
    CommandBars(cmbName).Delete
    If DeleteMe = True Then Exit Function
    If Err.Number <> 0 Then Err.Clear
    
    Set cmb = CommandBars.Add(cmbName, msoBarPopup, False, False)
    
        With cmb
          .Controls.Add msoControlButton, 21, , , False   ' Cut
          .Controls.Add msoControlButton, 19, , , False   ' Copy
          .Controls.Add msoControlButton, 22, , , False   ' Paste
      End With
      
  Set cmb = Nothing
    
End Function

.

وشرح الكود :

1. اسم القائمة المختصرة ، والتي سوف نختارها في النموذج او التقرير ،

2. هذه المجموعة الاساس منبثقة Popup ،

3. بينما هذه المجموعات عبارة عن ازرار Buttons ، وقد تكون قائمة منسدلة Combobox ، او نص Edit نُدخل فيه قيمة معينة للتصفية مثلا ،

4. هل هذه القائمة مؤقته ؟ False معناها ثابته وتُحفظ في قاعدة البيانات ، بينما True معناها انها مؤقته وتعمل لما ننادي الوحدة النمطية/الكود ،

5. هذه ارقام كل امر ، وملف الاكسل المرفق من مايكروسوفت فيه جدول يضم جميع ارقام الاوامر للاكسس 2010 () ،

6. اذا اردنا ان نحذف هذه القائمة ، فننادي الوحدة النمطية بضم True في امر المناداة

image.png.50645596f9d8e4a18dde56ab520b2284.png

 

 

 

المؤقته: ونستعمل True في مكان الرقم 4 اعلاه.

وهي التي عندما نعملها ، لا تصبح مستقله عن الكود ، ولا تبقى في قاعدة البيانات بعد إغلاقها ، ولا يمكننا ان نستوردها في قاعدة بيانات اخرى عندما نستورد احد/جميع كائنات قاعدة البيانات الآخرى (كما هو الحال مع القائمة الثابته) ، ويجب ان نستخدم "حدث فتح" النموذج/التقرير لعملها واستخدامها في النموذج/التقرير ، و "حدث اغلاق" النموذج/التقرير لحذفها ،

 

طيب ، خلونا نعمل هذه القائمة image.png.70983566e7670ae04e62755d42c6bfe7.png

Public Function SCM_Copy_Sort(Optional DeleteMe As Boolean = False)

    On Error Resume Next 'If menu with same name exists delete
    cmbName = "cmb_Copy_Sort"
    CommandBars(cmbName).Delete
    If Err.Number <> 0 Then Err.Clear
    
    Set cmb = CommandBars.Add(cmbName, msoBarPopup, False, False)
    
        With cmb
            Set cmbCtrl = .Controls.Add(msoControlButton, 21, , , False)    ' Cut
                cmbCtrl.Caption = "Cut..."
                cmbCtrl.FaceId = 21
            
            Set cmbCtrl = .Controls.Add(msoControlButton, 19, , , False)    ' Copy
                cmbCtrl.Caption = "Copy..."
                cmbCtrl.FaceId = 19
            
            Set cmbCtrl = .Controls.Add(msoControlButton, 22, , , False)    ' Paste
                cmbCtrl.Caption = "Paste..."
                cmbCtrl.FaceId = 22
                
                
            Set cmbCtrl = .Controls.Add(msoControlButton, 210, , , False)  'Sort Ascending
                cmbCtrl.BeginGroup = True
                cmbCtrl.Caption = "فرز تصاعدي..."
                cmbCtrl.FaceId = 210
                
            Set cmbCtrl = .Controls.Add(msoControlButton, 211, , , False)  'Sort Decending
                cmbCtrl.Caption = "فرز تنازلي..."
                cmbCtrl.FaceId = 211

      End With
  Set cmb = Nothing
    
End Function

.

وشرح الكود:

احنا توسعنا في الكود الاساسي ، واضفنا له :

1. تسمية اختيارية غير الافتراضية ، لاحظ في الصورة اعلاه اني استعملت الانجليزي والعربي ،

3. وهو لعمل خط فاصل في الصورة بين مجموعة قطع/نسخ/لصق ومجموعة فرز تصاعدي/تنازلي ،

image.png.5e21855688fbc4833f4cc9112b173d2f.png

.

2. ممكن ان نبدل الصورة الافتراضية التي تيجي مع الرقم ، بتبديل هذا الرقم (لاحظ صورة الاسهم للتصاعدي/التنازلي) : image.png.34b0108440bd60b0132636a0922b0943.png

image.png.ba37749ac14acab9e891430af341e770.png

.

ومرفق ارقام جميع الصور الموجودة في الاكسس :

FaceID_01.jpg.dca5ba2ebbc2778ac774996878abc551.jpg

.

FaceID_02.jpg.e10f8dceaa35f0f6471903f1b8225bbb.jpg

.FaceID_03.jpg.53f3661fea229f5cf1f26f1ace39cf68.jpg

.FaceID_04.jpg.463be04cd9d166dae8b87da60a6eff16.jpg

.FaceID_05.jpg.565647f4493560daf0453a40313238c0.jpg

.FaceID_06.jpg.6c27411b7fb69ffde24c24f6fcef3e1c.jpg

.FaceID_07.jpg.3fe8cfd5fbf68ad3e6ab3935d1d1d99c.jpg

.FaceID_08.jpg.ecc7750506787a8929525bf59ef4be6a.jpg

.FaceID_09.jpg.cd51cf59942be230a01f0d0226820d2c.jpg

.FaceID_10.jpg.1a78194464f0aafa5b1920ae3d9678d2.jpg

.FaceID_11.jpg.88c898ad7610cf815267e2e02eb88362.jpg

.

 

في قاعدة البيانات المرفقة myRight_Click.mdb ، بالاضافة الى القوائم الثابته اعلاه ، تم اضافة هذه القائمة ايضا :

image.png.fda938e17c7c7d3bab669534fb8c5191.png

.

والتقرير يحتوي على القائمة المؤقته التالية :

image.png.dbc1ebcfe5f24758e5f8acf4702ae98b.png

.

- ملف الاكسل myList.xlsx ، اخترت فيه اهم القوائم في وجهة نظري ، 

- ملف الاكسل AccessControls_2010.xlsx ، من مايكروسوفت ، يحتوي على جميع الاوامر 🙂

 

جعفر

 

المصادر:

http://dev-soln.com/access-shortcut-right-click-tool/

https://www.experts-exchange.com/articles/12904/Understanding-and-using-CommandBars-Part-II-Creating-your-own.html

https://filedb.experts-exchange.com/incoming/2014/02_w06/833359/CommandBars-II.mdb

https://www.experts-exchange.com/articles/18341/CommandBars-Part-III-Using-Built-in-Shortcut-Menus.html

http://www.skrol29.com/us/vtools.php

 

 

 

AccessControls_2010.xlsx 88.33 kB · 240 downloads

myList.xlsx 24.25 kB · 198 downloads

myRight_Click.zip 53.24 kB · 354 downloads

 

  • Like 4
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information