ข้ามไปที่เนื้อหาหลัก

การสร้างเมนูบนริบบิ้น แบบกำหนดเอง สำหรับ MS Access 2007 (Custom Ribbon)

ริบบิ้น เริ่มเข้ามาในชุดของ Office 2007 เป็นการเลิกใช้เมนูแบบเก่า สำหรับผู้เขียนโปรแกรมสามารถเปลี่ยนแปลงเมนูบนริบบิ้นใหม่ ให้เข้ากับลักษณะของแต่ละโปรแกรมที่พัฒนาขึ้นได้

การสร้างริบบิ้นแบบกำหนดเอง (Custom Ribbon) ทำได้หลายวิธี วิธีต่อไปนี้ จะใช้ตารางระบบ ของ MS Office ชื่อ USysRibbons เพื่อกำหนดแท็บ กลุ่ม และคำสั่งบนริบบิ้น ซึ่งใช้ XML เป็นตัวกำหนด (โปรด ดาวน์โหลดไฟล์ ตัวอย่าง customRibbon1.accdb ได้ คลิกที่นี่)

ในตัวอย่างนี้ จะใช้หน้าจอของ MS Access 2010 เป็นตัวอย่างนะครับ

ก่อนอื่นต้องทำให้มองเห็นตารางระบบของ MS Access ก่อน มิฉะนั้นเมื่อเราสร้างตารางระบบแล้ว จะมองไม่เห็น วิธีการมีดังนี้
เปิดโปรแกรมแล้วคลิกขวาที่ Navigation bar เลือก ตัวเลือกการนำทาง


จะเปิดหน้าต่างใหม่ ให้คลิกเครื่องหมายถูกเพื่อเลือกใหแสดง วัตถุของระบบ


ต่อมาควรเปิดให้แสดงข้อผิดพลาด เพื่อจะได้รู้ที่ผิดและแก้ไขได้สะดวกขึ้น
ไปที่ ปุ่ม Office > ตัวเลือกของ Access > ตัวออกแบบวัตถุ > เปิดใช้งานการตรวจสอบข้อผิดพลาด


สร้างตารางระบบชื่อ USysRibbons เป็นการสร้างตารางโดยทั่วไป กำหนดให้มีฟิลด์ 3 ฟิลด์ ดังนี้
ID(Autonumber เป็น Primary Key) RibbonName(Text) และ RibbonXML(Memo)

บันทึกตารางชื่อ USysRibbons
เปิดตาราง USysRibbons ที่สร้างขึ้นใหม่
เติมข้อมูลในฟิลด์ RibbonName ว่า Ribbon1
ในช่อง RibbonXML ให้พิมพ์ ดังนี้

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true">
<tabs>
  <tab id="tab1" label="หน้าแรก" >
    <group id="grp1" label="กลุ่มที่ 1" >
       <button id="btn1" size="large" label="ปุ่มที่ 1" onAction="buttonCallback" imageMso="CreateForm" />
       <button id="btn2" size="large" label="info" onAction="buttonCallback" imageMso="Info" />
    </group>
  </tab>
  <tab id="tab2" label="แท็บที่ 2" >
    <group id="grp2" label="กลุ่มที่ 1" >
       <button id="btn3" size="large" imageMso="DataRefreshAll" label="เปิดฟอร์ม" onAction="buttonCallback" />
    </group>
  </tab>
</tabs>
</ribbon>
</customUI>

จากโค้ดข้างบน จะเห็นโครงสร้างของ XML ประกอบด้วยลำดับหลายระดับ ส่วนที่น่าสนใจ เริ่มที่ tabs ซึ่งเป็นการบอกว่า ในริบบิ้นนี้ จะมี tab อะไรบ้าง

จากตัวอย่างจะเห็นมี tab อยู่ 2 tab คือ tab ที่มี id=tab1 และ id=tab2 สำหรับชื่อ หรือ label ที่จะแสดงในแต่ละ tab คือ หน้าแรก และ แท็บที่ 2 ตามลำดับ สามารถสร้าง tab ได้มากตามต้องการ

ใน tab ชื่อ หน้าแรก จะมีกลุ่ม 1 กลุ่ม คือ id=grp1 ชื่อหรือ lable คือ กลุ่มที่ 1 ความจริงในแต่ละ tab สามารถจะมีกลุ่มได้หลายกลุ่มตามต้องการ และโดยปกติแล้ว ในแต่ละ tab จะประกอบไปด้วยกลุ่มมากกว่า 1 กลุ่ม การสร้างกลุ่มเพิ่ม ให้เพิ่ม group เพิ่มขึ้น ทั้งนี้ต้องระวัง อย่าใช้ชื่อ id ซ้ำกัน และควรใช้ชื่อ id เป็นภาษาอังกฤษ และใช้ตัวอักษรตัวเล็กทั้งหมด

สำหรับ id และ label สามารถตั้งได้เอง id ต้องไม่ซ้ำกันเพราะจะใช้เป็นสิ่งที่ระบุว่าอันไหนเป็นอันไหน สำหรับชื่อหรือ label ควรตั้งให้สัมพันธ์กับกลุ่มของปุ่มหรือคำสั่งที่อยู่ในกลุ่มนั้น ๆ ควรใช้ชื่อกลุ่ม ภาษาไทย

ในแต่ละกลุ่ม จะมีปุ่มคำสั่ง (button) หรืออื่น ๆ เช่น drop down list ก็ได้ ในตัวอย่างนี้ มีเฉพาะปุ่มเพียงอย่างเดียว จะเห็นว่า ในกลุ่ม grp1 มีปุ่มอยู่ 2 ปุ่ม คือ ปุ่มที่มี id=btn1 และ btn2

ในแต่ละปุุ่ม ก็จะมี id ของตัวเอง กำหนดขนาด มี 2 ขนาด คือ normal และ large และมีคำสั่ง ในส่วน onAction เพื่อสั่งให้ทำงานเมื่อปุ่มนี้ถูกคลิก ในตัวอย่างนี้ เรียกใช้ callback function ที่ชื่อ buttonCallback ซึ่งจะมีคำสั่งต่าง ๆ ให้ทำงานเมื่อคลิกปุ่มนี้บนริบบิ้น สำหรับ imageMso เป็นการเรียกใช้ภาพของ Microsoft Access (ดูรายละเอียดข้างล่าง)

พิมพ์ข้อความข้างต้น หรือ Copy ลงตาราง UsysRibbons แล้ว ให้บันทึกตารางไว้ (ใช้ชื่อเดิมคือ USysRibbons)

ต่อไปต้องกำหนดให้ใช้ริบบิ้นที่เราสร้างขึ้นเมื่อเปิดโปรแกรมใหม่
ไปที่ แฟ้ม > ตัวเลือก > ฐานข้อมูลปัจจุบัน >ชื่อริบบิ้น และคลิกเลือก Ribbon1 ที่สร้างขึ้น

จากนั้น ให้ปิดและเปิดใหม่ จะได้ แท็บ 2 แท็บ ดังภาพ

จนถึงขณะนี้ เราได้สร้าง tab และกลุ่ม พร้อมทั้งปุ่ม 3 ปุ่ม เรียบร้อยแล้ว แต่ปุ่มยังไม่ทำงาน เนื่องจากไม่มีคำสั่งให้ทำงาน ในตัวอย่างนี้ ให้สร้างฟอร์ม 2 ฟอร์ม เพื่อเป็นตัวอย่างสำหรับการใช้คำสั่งเปิดฟอร์ม

สร้างฟอร์มที่ 1 ชื่อ frmTest1
สร้างฟอร์มที่ 2 ชื่อ frmTest2

ขั้นตอนการเขียนโค้ด callback สำหรับรับการคลิกปุ่มบนริบบิ้น มีดังนี้

  1. เปิดหน้าจอ VBA โดยกดปุ่ม Alt + F11
  2. อ้างอิงถึง Microsoft Office 12 Object Library ถ้าไม่อ้างถึง จะไม่สามารถเรียกใช้ Callback นี้ได้ โปรแกรมแจ้งว่าไม่สามารถใช้งาน Callback ได้ ไปที่ Tools > Refences และเลือก Microsoft Office 12.0 Object Library ระวังให้ดี เพราะมีชื่อคล้าย ๆ กัน ดังภาพ (ของ Access 2010 จะเป็น Microsoft Office 14.0 ObjectLibrary)
    ตรงนี้ ถ้าไม่เลือก เวลาใช้งาน โปรแกรมจะมี Error บอกว่า IRibbonControl ไม่ถูก Defined ถ้ามี Error นี แสดงว่า ยังไม่ได้อ้างอิง ObjectLibrary
  3. พิมพ์ หรือคัดลอก callback function ต่อไปนี้

     Sub buttonCallback(control As IRibbonControl)
     Select Case control.id
         Case "btn1"
            DoCmd.OpenForm "frmTest"
         Case Else
             DoCmd.OpenForm "frmTest2"
     End Select
     End Sub
  4. บันทึกเป็นโมดูล ใช้ชื่อว่า basButton หรือชื่ออื่นใด ตามต้องการ
  5. ปิดโปรแกรม และเข้าใหม่ และลองเรียกใช้งานปุ่มที่เพิ่งสร้างขึ้น
สำหรับภาพที่จะประกอบปุ่ม ถ้าต้องการใช้ภาพของระบบ ให้ใช้ imageMso ="ระบุชื่อ" การหาชื่อ imageMso ให้ไป ตัวเลือกของโปรแกรม (2007 ไปที่ ปุ่ม Office คลิกตัวเลือก 2010 ไปที่ Backstage View เลือก ตัวเลือก) จากนั้นไปที่ กำหนดเอง และใช้เมาส์วางบนคำสั่งที่ต้องการ จะเห็นชื่อ imageMso อยู่ในวงเล็บ ดังภาพ
ดาวน์โหลดไฟล์ ตัวอย่าง customRibbon1.accdb การสร้างเมนูบนริบบิ้น คลิกที่นี่ ในกรณีที่ต้องการใช้ภาพประกอบเอง ต้องทำภาพเป็นไฟล์ png เพื่อกำหนดให้พื้นหลังโปร่งใส และต้องสร้างฟังก์ชัน เพื่อเรียกใช้งาน Windows GDI+ (Graphics Device Interface Plus) ดาวน์โหลดไฟล์ ที่ใช้ภาพกำหนดเองบนริบบิ้น และการสร้างฟังก์ชัน เรียกใช้ GDI+ คลิกที่นี่ หมายเหตุ
ไฟล์ customRibbon1.accdb สามารถใช้กับ Access 2010 ได้

สำหรับภาพ ที่จะนำมาใช้เป็นภาพประกอบ หรือ imageMSO ในชุดของ Office มีไว้ให้เลือกจำนวนมาก สามารถนำมาใช้กับ Access Excel หรือ word ได้ ดูได้จากเว็บของ Microsoft ที่ http://msdn.microsoft.com/en-us/library/dd953682(v=office.12).aspx
วิธีการใช้งาน ให้ระบุชื่อนี้ลงใน XML ไฟล์ข้างบน ในส่วนของ imageMso เช่น

< button id="printLabel" imagemso="AppointmentColorDialog" label="พิมพ์ใบปะหน้าซอง" onaction="buttonCallback" size="large" >

จะได้ ดังภาพ ซึ่งจะเห็นว่า รูปประกอบของคำสั่ง พิมพ์ใบปะหน้าซอง จะเป็นภาพสี่เหลี่ยมหลากสี ข้างล่างนี้


imageMso ที่สามารถนำมาใช้ได้ เช่น Spelling FileSave FilePrint ZoomOnePage ZoomPageWidth FormControlButton Calculator ViewPrintLayoutView  เป็นต้น  ซึ่งดูได้จากลิงค์ที่ให้ไว้แล้ว

ในกรณีที่ต้องการนำคำสั่งของ Access 2007 หรือ 2010 มาไว้ใน Tab บนริบบิ้น ที่เราสร้างขึ้น สามารถทำได้ ดังนี้
  1. นำแถบหน้าแรก หรือ Home มาแสดง ให้เพิ่มข้อความในตาราง USysRibbons ในตำแหน่งที่ต่อจาก tabs ดังนี้


  2. ถ้าต้องการนำคำสั่ง บางคำสั่งมาแสดง เช่น คำสั่งให้สร้างแบบสอบถาม ให้เพิ่มข้อความใน group ที่ต้องการ ดังนี้

    <control idMso="CreateQueryInDesignView" size="large" label="สร้างแบบสอบถาม" enabled="true"/>

    สำหรับชื่อ idMso หาได้ โดยไปที่ BackStageView เลือก Options > Customize Ribbons เมื่อนำเมาส์ไปวาง จะเห็นชื่อ idMso ดังภาพ

อ้างอิง
http://www.databasedev.co.uk/access2007ribbon.html
http://www.accessribbons.com/
http://msdn.microsoft.com/en-us/library/dd953682(v=office.12).aspx

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

อุปมา อุปไมย สำนวนการเปรียบเทียบ ของไทย

การเตรียมสอบ ก.พ. ภาค ก. เพื่อสอบบรรจุเข้ารับราชการ มีการทดสอบความสามารถทั่วไป มักจะมี
ข้อสอบที่เกี่ยวกับอุปมาอุปไมย  ข้อสอบมีลักษณะ ให้หาตัวเลือกที่มีความหมาย ความสัมพันธ์คล้ายคลึง หรือเหมือนกับที่โจทย์กำหนดให้มา  หรือเติมข้อความที่มีความหมายสอดคล้องกับคำอุปมาอุปไมยที่ยกมาให้ เป็นต้น ดังนั้น การเข้าใจความหมายของคำอุปมาอุปไมย จึงช่วยให้ทำข้อสอบได้ดียิ่งขึ้น

คำอุปมาอุปไมย หมายถึง ถ้อยคำที่เป็นสำนวนพวกหนึ่ง กล่าวทำนองเปรียบเทียบ ให้เห็นจริง เข้าใจแจ่มแจ้งชัดเจน และสละสลวยน่าฟังมากขึ้น การพูดหรือการเขียน นิยมหาคำอุปมาอุปไมยมาเติมให้ได้ความชัดเจนเกิดภาพพจน์ เข้าใจง่าย เช่น

คนดุ หากต้องการให้ความหมายชัดเจน น่าฟัง และเกิดภาพพจน์ชัดเจนก็ต้องอุปมาอุปไมยว่า “ดุ เหมือน เสือ”
ขรุขระมาก การสื่อความยังไม่ชัดเจนไม่เห็นภาพ ต้องอุปมาอุปไมยว่า “ขรุขระเหมือนผิวมะกรูด” หรือ “ขรุขระเหมือนผิวพระจันทร์” ก็จะทำให้เข้าใจ ความหมายในรูปธรรมชัดเจนมากยิ่งขึ้น

คำอุปมาอุปไมยที่ควรรู้จัก (พิมพ์คำ/ข้อความ แล้วกดปุ่ม "ค้นหา")

แนวข้อสอบ เงื่อนไขสัญลักษณ์

ครั้งที่แล้ว ได้แนะนำหลักการทำ ข้อสอบ ก.พ. ภาค ก. ความสามารถทั่วไป เงื่อนไขสัญลักษณ์ มา แล้ว ถ้าใครยังไม่ได้อ่าน ก็คลิกกลับไปอ่านได้
ความจริง ข้อสอบเงื่อนไขสัญลักษณ์ เป็นข้อสอบไม่ยาก ถ้าเข้าใจหลักการ และมีทักษะความชำนาญ ใจเย็น ๆ อย่าตื่นเต้น โดยเฉพาะการดูเครื่องหมายต่าง ๆ อย่าดูผิด เช่น เครื่องหมายมากกว่า (>) น้อยกว่า (<) เป็นต้น เพราะการแก้ปัญหาโจทย์เงื่อนไขสัญลักษณ์ หรือ inequality ก็คล้ายกับการแก้ปัญหาสมการโดยทั่วไป นั่นเอง คือ สามารถบวก ลบ คูณ หาร ด้วยจำนวนที่เท่ากัน ทั้งสองข้างของเครื่องหมายได้ กลับเศษเป็นส่วนได้ แต่ก็มีบางเรื่อง บางรายละเอียดที่แตกต่างกันบ้าง ซึ่งอ่านได้จาก ข้อสอบ ก.พ. ภาค ก. ความสามารถทั่วไป เงื่อนไขสัญลักษณ์ นะครับ ครั้งนี้ จึงเป็นการนำแนวข้อสอบ เงื่อนไขสัญลักษณ์ เพื่อนำมาฝึกทำให้เกิดทักษะความชำนาญ เพื่อจะได้ทำข้อสอบได้รวดเร็วขึ้น เพราะในห้องสอบ เวลาจัดได้ว่ามีค่ามาก ยิ่งทำเร็วและถูกต้อง ยิ่งดี คำสั่ง

เลือกตอบข้อ 1. ถ้าข้อสรุปทั้งสอง ถูกด้องหรือเป็นจริง ตามเงื่อนไข
เลือกตอบข้อ 2. ถ้าข้อสรุปทั้งลอง ผิดหรือไม่เป็นจริง ตามเงื่อนไข
เลือกตอบข้อ 3. ถ้าข้อ…

เทคนิคการทำ ข้อสอบ อนุกรม ของ ก.พ.

|ประเภทของอนุกรม เทคนิคการทำโจทย์เลข อนุกรม ข้อแนะนำเพิ่มเติม |


ข้อสอบเลขอนุกรม ของ ก.พ. ต้องการวัดความถนัดทางด้านตัวเลข โดยการจัดทำตัวเลขเป็นชุด ๆ ที่มีความสัมพันธ์กันบางอย่าง โดยให้ผู้เข้าสอบได้แสดงความถนัดด้านตัวเลข ในการวิเคราะห์และแก้ปัญหาตามที่โจทย์ระบุ


ประเภทของอนุกรม รูปแบบความสัมพันธ์ของตัวเลขอนุกรมเท่าที่พบบ่อย ๆ มีหลายประเภท เช่น

ก. อนุกรมเชิงเดี่ยว 

ได้แก่ชุดตัวเลขที่เป็นอนุกรมเพียงชุดเดียว เช่น
ค่าของตัวเลขเพิ่มขึ้นต่อเนื่องอย่างเป็นระบบ โดยการบวก หรือ คูณ ตัวเลขก่อนหน้า เช่น บวกด้วยตัวเลขที่เป็นค่าคงที่ เช่น    5   10   15   20   ...?...
บวกด้วยตัวเลขที่มีระบบ เช่น     1    2    5    10   ...?...
คูณด้วยค่าคงที่ เช่น   1   3   9   27   ...?...
มีทั้ง บวก ลบ คูณ หรือหาร สลับกัน เช่น บวกแล้วคูณด้วยค่าคงที่สลับกัน ดังตัวอย่าง  5   7    14   16  32   ...... มีการ บวก ลบ คูณ หรือ หาร ร่วมกัน เช่น  15   31   63   127   255  ...?...
ในตัวอย่างนี้ จะเห็นว่า ตัวเลขตัวแรกคูณด้วย 2 และบวกด้วย 1 จะได้ตัวเลขตัวถัดไป คูณด้วยค่าคงที่ที่เป็นเศษส่วน ให้สังเกตความสัมพันธ์ว่า ตัวเลขก่อนหน้า …