ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 4084|ตอบกลับ: 4

[VB6] การทำทูลบาร์ (ToolBar) ด้วย CodeJock ระดับมืออาชีพ (ภาค 2)

[คัดลอกลิงก์]

308

กระทู้

498

โพสต์

5971

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
5971



ต่อจากภาค 1
[VB6] การทำทูลบาร์ (ToolBar) ด้วย CodeJock ระดับมืออาชีพ มาอย่างทันทีทันใด เพราะเห็นหลายคนให้ความสนใจในการใช้งาน CodeJock เข้ามากันอย่างล้นหลาม คือแทบจะแยกไม่ออกเลยว่าหน้าตาโปรแกรมอันสวยงามที่ได้รับชมกันไปนั้น มันทำมาจาก Visual Studio 98 หาใช่กลุ่มตระกูลไฮโซ Dot Net แต่ประการใดไม่ ... สำหรับตอนนี้ก็ใช้โค้ดแทบจะเหมือนเดิม แต่จะเปลี่ยนจากการเลือกใช้ไอคอนทีละตัว มาเป็นกราฟิคแทน แน่นอนว่าแอดมินจะไม่สอนการใช้งาน Photoshop อันนี้ทุกๆท่านต้องไปศึกษากันเอาเองครับ ...


ภาพไอคอนแต่ละตัวจะมีขนาด 32 x 32 Pixel ซึ่งในตัวอย่างจะมีทูลบาร์อยู่ทั้งหมด 6 ตัว ก็เอา 32 x 6 = ความกว้าง 192 Pixel ... (แอดมินแนบไฟล์ PSD เอาไว้ให้เป็นตัวอย่างในไฟล์ดาวน์โหลด)

ดาวน์โหลด CodeJock Suite Pro for ActiveX/COM ได้ที่นี่ (เฉพาะสมาชิกเท่านั้น)


ขอให้สังเกตการแสดงผลกับภาค 1 ...

  1.     '/ โหลดภาพ PNG เข้ามาให้กับ ImageManager
  2.     ImageManager1.Icons.LoadBitmap App.Path & "\Icons\images2018.png", icoIconArray, xtpImageNormal
  3.    
  4.     '/ ส่งให้กับ CommandBars อีกที เพื่อให้ ToolBar แสดงภาพ Icon ได้
  5.     CommandBars1.Icons = ImageManager1.Icons
คัดลอกไปที่คลิปบอร์ด
การนำภาพบิตแมพมาใช้แทนไอคอน ...  

มาดูโค้ดกันเถอะ ...
  1. ' / -----------------------------------------------------------------------------------------------
  2. ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
  3. ' / eMail : thongkorn@hotmail.com
  4. ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
  5. ' / Facebook: https://www.facebook.com/g2gnet (For Thailand only)
  6. ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
  7. ' / Microsoft Visual Basic 6.0 Service Pack 6
  8. ' /
  9. ' / This is open source code under @Copyleft by Thongkorn Tubtimkrob.
  10. ' / You can modify and/or distribute without to inform the developer.
  11. ' / -----------------------------------------------------------------------------------------------
  12. Option Explicit

  13. Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long

  14. '/ การสร้าง TabToolBar
  15. Private WithEvents TabToolBar As XtremeCommandBars.TabToolBar
  16. '/ การสร้าง StatusBar
  17. Dim WithEvents StatusBar As XtremeCommandBars.StatusBar

  18. ' / -----------------------------------------------------------------------------------------------
  19. ' / เหตุการณ์ในการคลิ๊กเลือก ToolBar หรือ MenuBar เพื่อสั่งให้ไปทำงานอย่างอื่น
  20. ' / -----------------------------------------------------------------------------------------------
  21. Private Sub CommandBars1_Execute(ByVal Control As XtremeCommandBars.ICommandBarControl)
  22.     On Error Resume Next
  23.    
  24.     Select Case Control.Id
  25.         ' กลุ่มนี้ คือ TabToolBar ค่าคงที่ถูกกำหนดไว้ในไฟล์ Resource.bas
  26.         Case ID_USER_TOOLS_1:
  27.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 1"
  28.         Case ID_USER_TOOLS_2:
  29.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 2"
  30.         Case ID_USER_TOOLS_3:
  31.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 3"
  32.         Case ID_USER_TOOLS_4:
  33.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 4"
  34.         Case ID_USER_TOOLS_5:
  35.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 5"
  36.         Case ID_USER_TOOLS_6:
  37.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 5 และกำลังจะจบโปรแกรม"
  38.             End
  39.     End Select
  40. End Sub

  41. Private Sub MDIForm_Activate()
  42.     frmMain.Caption = "CodeJock Xtreme Suite Pro - Code bY Thongkorn TubTimkrob"
  43.     StatusBar.IdleText = "Developer : thongkorn@hotmail.com [www.g2gnet.com/webboard] - www.facebook.com/g2gnet"
  44. End Sub

  45. Private Sub MDIForm_Initialize()
  46.     InitCommonControls
  47. End Sub

  48. Private Sub MDIForm_Load()

  49.     '/ หากเปิดโปรแกรมนี้ซ้ำกัน จะไม่ให้ตัวใหม่ขึ้นมาทำงาน
  50.     If App.PrevInstance Then End
  51.    
  52.     '/ การตั้งค่าคุณสมบัติ เพื่อใช้ประโยชน์ในส่วนของพารามิเตอร์ภายในของ App
  53.     '/ เช่น App.Title, App.Path โดยใช้งานผ่าน CommandBars Control
  54.     CommandBarsGlobalSettings.App = App
  55.     '/ CommandBarsGlobalSettings มี Properties ให้ใช้งานได้หลากหลายมากครับ เช่น ทำโปรแกรมหลายภาษา
  56.     '/ ตัวอย่าง ...  CommandBarsGlobalSettings.ResourceFile = "XTPResourceArSa.dll"
  57.      
  58.     '/ ตัวแปร Control ในการสร้างกลุ่มของ ToolBar
  59.     Dim Control As CommandBarControl
  60.    
  61.     Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2

  62.     '/ ไม่ต้องการให้เมนูบาร์เคลื่อนที่ได้ (Stretched)
  63.     CommandBars1.ActiveMenuBar.EnableDocking xtpFlagStretched
  64.     CommandBars1.Options.KeyboardCuesShow = xtpKeyboardCuesShowWindowsDefault
  65.     CommandBars1.EnableCustomization False
  66.    
  67.     ' ===============================================================================
  68.     ' แสดง Theme ซึ่งต้องอาศัยไฟล์ CodeJock ไฟล์เหล่านี้จะอยู่ที่โฟลเดอร์ Styles
  69.     SkinFramework1.LoadSkin App.Path + "\Styles\Office2007.cjstyles", "NORMALBLUE.ini"
  70.     'SkinFramework1.LoadSkin App.Path + "\Styles\Vista.cjstyles", "NORMALBLUE.INI"
  71.     'SkinFramework1.LoadSkin App.Path + "\Styles\Vista.cjstyles", "NORMALBLACK.INI"
  72.     'SkinFramework1.LoadSkin App.Path + "\Styles\Vista.cjstyles", "NORMALSILVER.INI"
  73.     ' ===============================================================================
  74.     SkinFramework1.ApplyWindow (Me.hWnd)
  75.     SkinFramework1.ApplyOptions = SkinFramework1.ApplyOptions Or xtpSkinApplyMetrics
  76.     CommandBars1.PaintManager.RefreshMetrics
  77.     CommandBars1.RecalcLayout
  78.     ' ===============================================================================

  79.     '/ เพิ่มรายการ Tabbed ToolBar
  80.     Set TabToolBar = CommandBars1.AddTabToolBar("รายการหลัก")
  81.     '/ ไม่อนุญาตให้เพิ่ม/ลบ (Add or Remove Buttons) ที่มันจะอยู่ทางด้านขวามือสุดของ TabToolBar
  82.     TabToolBar.ShowExpandButton = False
  83.    
  84.     '/ กำหนดความกว้างขั้นต่ำสุดของ ToolBar แต่ละตัว (หน่วยวัด Pixels)
  85.     TabToolBar.MinimumWidth = 400
  86.    
  87.     '/ เริ่มต้นการเพิ่มปุ่ม Control เข้ามายัง Tabbed ToolBar
  88.     With TabToolBar
  89.         
  90.         Dim iCount As Integer
  91.         
  92.         '/ สร้างรายการ ToolBar ขึ้นมา โดยใช้ชื่อกลุ่ม "User Tools" มีทั้งหมด 6 ตัว
  93.         '/ ค่าคงที่ ID_USER_TOOLS แต่ละตัว เราไปกำหนดล่วงหน้าเอาเองที่ Resource.bas
  94.         For iCount = ID_USER_TOOLS_1 To ID_USER_TOOLS_6
  95.             Select Case iCount
  96.                 Case 801: Set Control = .Controls.Add(xtpControlButton, iCount, "รายการที่ 1")
  97.                 Case 802: Set Control = .Controls.Add(xtpControlButton, iCount, "รายการที่ 2")
  98.                 Case 803: Set Control = .Controls.Add(xtpControlButton, iCount, "รายการที่ 3")
  99.                 Case 804: Set Control = .Controls.Add(xtpControlButton, iCount, "รายการที่ 4")
  100.                 Case 805: Set Control = .Controls.Add(xtpControlButton, iCount, "รายการที่ 5")
  101.                 Case 806: Set Control = .Controls.Add(xtpControlButton, iCount, "จบโปรแกรม")
  102.             End Select
  103.             Control.Category = "User Tools"
  104.         Next
  105.     End With
  106.    
  107.     '/ ประกาศตัวแปร Array ตามจำนวน ToolBar ที่ต้องการสร้างขึ้นมา เพื่อแสดงรูป Icon
  108.     '/ ในตัวอย่างมี 6 ตัว โดยเริ่มต้นจาก 0 ถึง 5
  109.     Dim icoIconArray(0 To 5) As Long
  110.     icoIconArray(0) = ID_USER_TOOLS_1
  111.     icoIconArray(1) = ID_USER_TOOLS_2
  112.     icoIconArray(2) = ID_USER_TOOLS_3
  113.     icoIconArray(3) = ID_USER_TOOLS_4
  114.     icoIconArray(4) = ID_USER_TOOLS_5
  115.     icoIconArray(5) = ID_USER_TOOLS_6
  116.    
  117.     ' โหลดภาพ PNG เข้ามาให้กับ ImageManager
  118.     ImageManager1.Icons.LoadBitmap App.Path & "\Icons\images2018.png", icoIconArray, xtpImageNormal
  119.    
  120.     ' ส่งให้กับ CommandBars อีกที เพื่อให้ ToolBar แสดงภาพ Icon ได้
  121.     CommandBars1.Icons = ImageManager1.Icons
  122.    
  123.     '/ ตั้งค่าขนาด Icon ตามที่เราออกแบบเอาไว้ แต่ละตัวจะมีขนาด 32x32 Pixel
  124.     TabToolBar.SetIconSize 32, 32
  125.     TabToolBar.ShowTextBelowIcons = True
  126.     '/ ไม่ให้เกิดการเคลื่อนที่ของ ToolBar ได้
  127.     TabToolBar.EnableDocking xtpFlagStretched
  128.     TabToolBar.Closeable = False
  129.     TabToolBar.Customizable = False
  130.    
  131.     ' ======================= ToolTips ==========================
  132.     Dim ToolTipContext As ToolTipContext
  133.     Set ToolTipContext = CommandBars1.ToolTipContext
  134.     ToolTipContext.Style = xtpToolTipOffice2007
  135.     ToolTipContext.ShowTitleAndDescription True, xtpToolTipIconNone
  136.     ' ตั้งค่าตำแหน่งของ ToolTip
  137.     'ToolTipContext.SetMargin 2, 2, 2, 2
  138.     ToolTipContext.MaxTipWidth = 180
  139.     ToolTipContext.ShowShadow = True
  140.     ' ======================= ToolTips ==========================
  141.    
  142.     '/ การสร้าง StatusBar ที่อยู่ด้านล่างของฟอร์ม
  143.     Set StatusBar = CommandBars1.StatusBar
  144.     StatusBar.Visible = True
  145.    
  146.     StatusBar.AddPane 0
  147.     '/ ค่าคงที่ๆกำหนดไว้ใน Resource.bas และเป็นค่าสงวนที่เปลี่ยนแปลงไม่ได้
  148.     StatusBar.AddPane ID_INDICATOR_CAPS
  149.     StatusBar.AddPane ID_INDICATOR_NUM
  150.     StatusBar.AddPane ID_INDICATOR_SCRL
  151.     StatusBar.IdleText = "Developer : thongkorn@hotmail.com [www.g2gnet.com/webboard] - www.facebook.com/g2gnet"
  152. End Sub

  153. Private Sub mnuFile1_Click()
  154.     MsgBox "คุณเลือกเมนูรายการที่ 1"
  155. End Sub

  156. Private Sub mnuFile2_Click()
  157.     MsgBox "คุณเลือกเมนูรายการที่ 2"
  158. End Sub

  159. Private Sub mnuInfo1_Click()
  160.     MsgBox "คุณเลือกเมนูรายการที่ 3"
  161. End Sub
คัดลอกไปที่คลิปบอร์ด
มันต่างกันตรงไหนกับภาค 1 ทุกๆท่านต้องสังเกตดูด้วยล่ะกันครับ ...

ดาวน์โหลด CodeJock Suite Pro for ActiveX/COM ได้ที่นี่ (เฉพาะสมาชิกเท่านั้น)

ดาวน์โหลดโค้ดต้นฉบับเต็ม VB6 ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

1

กระทู้

11

โพสต์

37

เครดิต

Newbie

Rank: 1

เครดิต
37
โพสต์ 2018-8-1 20:34:17 | ดูโพสต์ทั้งหมด

ขอบคุณครับอาจารย์ที่แชร์ความรู้ดีๆ

0

กระทู้

1

โพสต์

32

เครดิต

Newbie

Rank: 1

เครดิต
32
โพสต์ 2018-8-3 09:54:25 | ดูโพสต์ทั้งหมด

ขอบคุณครับ

2

กระทู้

12

โพสต์

58

เครดิต

Member

Rank: 2

เครดิต
58
โพสต์ 2018-11-14 15:02:08 | ดูโพสต์ทั้งหมด

แก้ไขครั้งสุดท้ายโดย Soutk เมื่อ 2018-11-14 15:09

ผมกำลังหัดทำ ทูลบาร์ ครับ สอบถาม อาจารย์ ครับ จาก code ตัวอย่าง ของอาจารย์ หากเราต้องการ ตัด menu bar (แฟ้มข้อมูล,ข้อมูลโปรแกรม) เพื่อที่จะ เลื่อน Toolbar รายการที่ 1-6 เข้ามาแทน ต้อง แก้ตรงจุดไหนครับ


308

กระทู้

498

โพสต์

5971

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
5971
 เจ้าของ| โพสต์ 2018-11-14 17:24:32 | ดูโพสต์ทั้งหมด



แสดงว่ายังไม่เข้าใจคอนเซปท์ของ CodeJock ต้องลองทดสอบด้วยตัวเองก่อนด้วยครับ เพราะผมก็ต้องลองผิดลองถูกมาตลอดครับผม ...

การแก้ไขก็แค่ไปใส่ Remark ' เอาไว้หน้าบรรทัดคำสั่งที่เราต้องการตัดออก เพื่อไม่ให้เกิดการการแปลคำสั่ง ...
  1.     '/ เริ่มต้นการเพิ่มปุ่ม Control เข้ามายัง Tabbed ToolBar
  2.     With TabToolBar
  3.         
  4. 'Set Control = .Controls.Add(xtpControlButton, 801, "รายการที่ 1")
  5.         'Set Control = .Controls.Add(xtpControlButton, 802, "รายการที่ 2")
  6.         Set Control = .Controls.Add(xtpControlButton, 803, "รายการที่ 3")
  7.         Set Control = .Controls.Add(xtpControlButton, 804, "รายการที่ 4")
  8.         Set Control = .Controls.Add(xtpControlButton, 805, "รายการที่ 5")
  9.         Set Control = .Controls.Add(xtpControlButton, 806, "จบโปรแกรม")
  10.         Control.Category = "User Tools"
  11.     End With
  12.    
  13.     '/ ประกาศตัวแปร Array ตามจำนวน ToolBar ที่ต้องการสร้างขึ้นมา เพื่อแสดงรูป Icon
  14.     '/ ในตัวอย่างมี 4 ตัว โดยเริ่มต้นจาก 0 ถึง 3
  15.     Dim icoIconArray(0 To 3) As Long
  16.     'icoIconArray(0) = ID_USER_TOOLS_1
  17.     'icoIconArray(1) = ID_USER_TOOLS_2
  18.     icoIconArray(2) = ID_USER_TOOLS_3
  19.     icoIconArray(3) = ID_USER_TOOLS_4
  20.     icoIconArray(4) = ID_USER_TOOLS_5
  21.     icoIconArray(5) = ID_USER_TOOLS_6
คัดลอกไปที่คลิปบอร์ด


อีกจุดหนึ่งในเหตุการณ์ Execute เวลาเกิดการกดปุ่ม ToolBar ...
  1. Private Sub CommandBars1_Execute(ByVal Control As XtremeCommandBars.ICommandBarControl)
  2.     On Error Resume Next
  3.    
  4.     Select Case Control.Id
  5.         ' กลุ่มนี้ คือ TabToolBar ค่าคงที่ถูกกำหนดไว้ในไฟล์ Resource.bas
  6.         'Case ID_USER_TOOLS_1:
  7.         '    MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 1"
  8.         'Case ID_USER_TOOLS_2:
  9.         '    MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 2"
  10.         Case ID_USER_TOOLS_3:
  11.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 3"
  12.         Case ID_USER_TOOLS_4:
  13.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 4"
  14.         Case ID_USER_TOOLS_5:
  15.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 5"
  16.         Case ID_USER_TOOLS_6:
  17.             MsgBox "คุณเลือกรายการ ToolBar ตัวที่ 5 และกำลังจะจบโปรแกรม"
  18.             End
  19.     End Select
  20. End Sub
คัดลอกไปที่คลิปบอร์ด


สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

12

โพสต์

58

เครดิต

Member

Rank: 2

เครดิต
58
โพสต์ 2018-11-15 09:43:06 | ดูโพสต์ทั้งหมด

ขอบคุณครับอาจารย์ ต้องขออภํยผมอาจจะ อธิบายไม่ชัดเจนครับ

คือผมอยากจะตัด แฟ้มข้อมูลและ ข้อมูลโปรแกรม ออกไปทั้งแถบ  เพื่อที่จะเลื่อนแถบ  รายการที่1-6 ขึ้นไปครับ

308

กระทู้

498

โพสต์

5971

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
5971
 เจ้าของ| โพสต์ 2018-11-15 11:56:38 | ดูโพสต์ทั้งหมด

Soutk ตอบกลับเมื่อ 2018-11-15 09:43
ขอบคุณครับอาจารย์ ต้องขออภํยผมอาจจะ อธิบายไม่ชัดเจน ...

การทำเมนูบาร์ให้ไปดูจากของเดิมที่ผมทำไว้นานแล้วครับ ... http://www.g2gnet.com/news/activenews_view.asp?articleID=200
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

12

โพสต์

58

เครดิต

Member

Rank: 2

เครดิต
58
โพสต์ 2018-11-15 13:38:19 | ดูโพสต์ทั้งหมด

ขอบคุณครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-3-29 01:40 , Processed in 0.198998 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้