shortcut menu ใน access
กระทู้เก่าบอร์ด อ.Yeadram

 1,834   4
URL.หัวข้อ / URL
shortcut menu ใน access

ขอสอบถามว่า access สามารถสร้าง shortcut menu เองได้หรือไม่ ถ้าได้ ขอคำแนะนำด้วยครับว่าทำอย่างไร ขอบคุณครับ

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R18028
น่าจะเรียกว่า popup menu มากกว่า(คลิกขวา ครับ)
2 @R18034
ขอบคุณสำหรับคำถามครับ

ลองดู
Link นี้ครับ
เป็น Access ก่อน 2007

หลัง 2007 ไม่รู้สร้าง ตรงไหน แต่หา code ได้ประมาณนี้ครับ

Sub CreateCommandBar()

Const strCommandBarName As String = "My Command Bar"

Dim cmb As Office.CommandBar
Dim cmbc As Office.CommandBarControl

On Error Resume Next
Application.CommandBars(strCommandBarName).Delete
On Error GoTo 0

'define as a PopUp menu
    Set cmb = Application.CommandBars.Add(strCommandBarName, msoBarPopup, False, False)
    With cmb
'Add option to load Form1
        Set cmbc = .Controls.Add(Type:=1)
        cmbc.Caption = "Form1"
        cmbc.OnAction = "OpenForm1"
        Set cmbc = Nothing

        Set cmbc = .Controls.Add(Type:=1)
        cmbc.Caption = "Hello"
        cmbc.OnAction = "Hello"
        Set cmbc = Nothing
    
    End With

    Set cmb = Nothing

End Sub

Sub OpenForm1()
    DoCmd.OpenForm ("Form1")
End Sub

Sub Hello()
   MsgBox "Hello", vbInformation, "Hello"
End Sub



วิธีนำไปใช้ เหมือน Link ข้างบน คือกำหนดชื่อ Shortcut Menu ใน Property ของ Form หรือ Control
3 @R18037
ทำได้ครับ รายละเอียดเยอะมาก ยกตัวอย่างให้ดูดีกว่านะครับ เป็นแบบการดึงเมนู Office มาใช้งาน โดยในตัวอย่างผมอยากได้ Shortcut Menu 3 ตัวคือ Copy, Paste, Cut โดยเปลี่ยนเป็นภาษาไทยด้วย

ตัวอย่าง

1. ติดตั้ง References: Microsoft Office xx.x Object Library ในไฟล์ MS Access
- ใส่ฟังก์ชั่นลงใน Module ดังนี้:

'----------------Start Code----------------
Public Sub CreateShortcutMenuWithGroups()
On Error Resume Next
    CommandBars.Item("Menu_Smallest").Delete

    Dim cmbRightClick As Office.CommandBar
    Set cmbRightClick = CommandBars.Add("Menu_Smallest", msoBarPopup, False, False)
    With cmbRightClick
        .Controls.Add msoControlButton, 19, , , True   ' Copy
        .Controls.Item(1).Caption = "คัดลอก"
        .Controls.Add msoControlButton, 22, , , True   ' Paste
        .Controls.Item(2).Caption = "วาง"
        .Controls.Add msoControlButton, 21, , , True   ' Cut
        .Controls.Item(3).Caption = "ตัดคำ"
    End With
    Set cmbRightClick = Nothing
End Sub
'-----------------End Code-----------------
2. หลังจากเซฟ Module แล้ว ที่หน้าต่าง VBE ให้กดปุ่ม Run Sub/User Form หรือกดปุ่ม F5 เพื่อให้โปรแกรมอ่านโค๊ดที่เขียน 1 ครั้ง ก็จะได้ Shortcut Menu ชื่อ Menu_Smallest สำหรับเรียกใช้งานบนฟอร์มต่อไป

3. ใส่โค๊ดใน Event > On Load ของฟอร์ม (หรือ On Open)

    CreateShortcutMenuWithGroups

4.1 หากต้องการแสดง Shortcut Menu ที่เราสร้าง เฉพาะคอนโทรลบางตัวที่ต้องการเท่านั้น ให้กำหนดคุณสมบัติคอนโทรลดังนี้:
บนฟอร์มที่ต้องการใช้งาน คลิ๊กที่คอนโทรลที่ต้องการ เลือกคุณสมบัติดังนี้:
Property > Other > Shortcut Menu: Yes
Property > Other > Shortcut Menu Bar: Menu_Smallest

4.2 หากต้องการแสดง Shortcut Menu ที่เราสร้างบนคอนโทรลทั้งหมดของฟอร์ม ให้กำหนดคุณสมบัติของฟอร์มดังนี้:
Property > Other > Shortcut Menu: Yes
Property > Other > Shortcut Menu Bar: Menu_Smallest

จริงๆยังมีรายละเอียดอีกเยอะมากในการทำ อธิบายไม่หมดยังไงลองค้นใน Google ศึกษาดูเองนะครับ

ปล. สามารถดูเลข ID Command Bar ได้ที่
http://support.microsoft.com/kb/213552
4 @R18040
ขอบคุณมากครับ จะลองปรับใช้ดูครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3833s