اذهب الي المحتوي
أوفيسنا

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

قام بنشر

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

اريد كود انشاء  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
قام بنشر
منذ ساعه, Barna said:

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

 

ما شاء الله اعليك استاذي الغالي نجحت العملية و تصرفنا في الاكواد كيف ما نريد : مشكور اخي العزيز على المعلومة القيمة 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information