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

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

[VB6] การนำ DateTimePicker มาใส่ไว้ในตารางกริด MS FlexGrid แบบ Run Time

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

311

กระทู้

502

โพสต์

6072

เครดิต

ผู้ดูแลระบบ

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

Rank: 9Rank: 9Rank: 9

เครดิต
6072




แอดมินไม่ขอพูดมาก เจ็บคอ 5555+ ... เพราะเนื่องจากได้แจกโค้ดและอธิบายวิธีการคิดในเรื่องนี้ไปไว้ใน VB.NET เป็นที่เรียบร้อย อ่านรายละเอียดได้จาก
[VB.NET] การนำ DateTimePicker และ Button Control ไปใส่ไว้ในตารางกริด DataGridView แบบ Run Time ... แท้จริงแล้วแอดมินเขียนด้วย VB6 มาก่อน แล้วก็นำเอาหลักการนี้ไปใช้ใน VB.NET แต่พึ่งเอาโค้ดมาลงให้กับมิตรรักแฟนคลับสาย VB6 ครับผม ... สรุปให้ฟังเล็กน้อยล่ะกัน หากมีการโฟกัสไปยังเซลล์ (ยึดตามหลัก) ที่เราต้องการ ให้เปิดการแสดงผล DTPicker แล้วเอา DTPicker ไปวางทับในเซลล์นั้นๆ นำค่าจากเซลล์มาใส่ไว้ใน DTPicker หากมีการเปลี่ยนแปลงค่าใน DTPicker จะต้องนำค่านี้ไปใส่ไว้ในเซลล์ด้วย หากหลุดโฟกัสออกจากเซลล์ ให้ปิดการแสดงผล DTPicker ... จบ


หน้าจอในการออกแบบ



หน้าจอเมื่อสั่งรันโปรแกรม ... ก็ต้องมีการปรับระยะของการแสดงผลของ DTPicker ให้ตรงกับความกว้างของเซลล์ด้วย


มาดูโค้ดฉบับเต็ม ...
  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. ' / Purpose: Adding the DTPicker into MS FlexGrid Control.
  8. ' / Microsoft Visual Basic 6.0 Service Pack 6
  9. ' /
  10. ' / This is open source code under @Copyleft by Thongkorn Tubtimkrob.
  11. ' / You can modify and/or distribute without to inform the developer.
  12. ' / -----------------------------------------------------------------------------------------------
  13. Option Explicit

  14. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  15.     Select Case KeyCode
  16.         Case vbKeyF2
  17.             Call fg_Click
  18.    
  19.     End Select
  20. End Sub

  21. Private Sub Form_Load()
  22.     '// ปิดการแสดงผล DTPicker
  23.     Me.DTPicker1.Visible = False
  24.     '// ตั้งค่าตารางกริด
  25.     Call SetupGrid
  26.     Randomize
  27.     '// Sample Data
  28.     With fg
  29.         .AddItem "1" & vbTab & "1111" & vbTab & "เหล้าเร้ด" & vbTab & Format(DateAdd("d", Date, -Rnd * 365), "dd/mm/yyyy")
  30.         .AddItem "2" & vbTab & "2222" & vbTab & "เหล้าว็อดก้า" & vbTab & Format(DateAdd("d", Date, -Rnd * 365), "dd/mm/yyyy")
  31.         .AddItem "3" & vbTab & "3333" & vbTab & "เหล้าขาว" & vbTab & Format(DateAdd("d", Date, -Rnd * 365), "dd/mm/yyyy")
  32.     End With
  33. End Sub

  34. '/ ตั้งค่าต่างๆของ FlexGrid แบบ Run Time
  35. Sub SetupGrid()
  36.     With fg
  37.         '/ สั่ง Clear FlexGrid
  38.         .Clear
  39.         .FixedCols = 0
  40.         .Rows = 1
  41.         .Cols = 4
  42.         .TextMatrix(0, 0) = "Primary Key"
  43.         .TextMatrix(0, 1) = "รหัสสินค้า"
  44.         .TextMatrix(0, 2) = "ชื่อสินค้า"
  45.         .TextMatrix(0, 3) = "วันที่ซื้อ"
  46.         .ColWidth(0) = .Width \ 4 - 400
  47.         .ColWidth(1) = .Width \ 4 - 600
  48.         .ColWidth(2) = .Width \ 4 + 800
  49.         .ColWidth(3) = .Width \ 4 - 100
  50.         '//
  51.         .RowHeightMin = DTPicker1.Height
  52.     End With
  53. End Sub

  54. ' / -----------------------------------------------------------------------------------------------
  55. ' / เกิดเหตุการณ์นำเมาส์ไปคลิ๊กที่ Cell ใดๆใน FlexGrid
  56. Private Sub fg_Click()
  57. ' / -----------------------------------------------------------------------------------------------
  58.     If fg.Row = 0 Then Exit Sub
  59.     '/ เลือกหลักที่ต้องการ
  60.     Select Case fg.Col
  61.         '/ ไม่ใชหลักที่ต้องการให้ DTPicker  ปรากฏ ก็ปิดการแสดงผลของ DTPicker
  62.         Case 0 To 2:
  63.             DTPicker1.Visible = False
  64.             
  65.         '/ หลัก 3 คือหลักที่ต้องการ และทำการเคลื่อนย้ายตำแหน่ง DTPicker  เข้าสู่ FlexGrid ได้
  66.         Case 3:
  67.             DTPicker1.Visible = True   ' เปิดการแสดงผล DTPicker
  68.             DTPicker1.Value = fg.Text   ' นำค่าจาก FlexGrid มาเทียบค่าใน DTPicker
  69.             '/ เคลื่อนย้ายตำแหน่ง DTPicker ไปในเซลล์ต่างๆของหลักที่ 3 และปรับระยะเท่ากับเซลล์นั้นๆ
  70.             DTPicker1.Move fg.CellLeft + fg.Left, fg.CellTop + fg.Top, fg.CellWidth
  71.     End Select
  72. End Sub

  73. ' / -----------------------------------------------------------------------------------------------------------------------------------
  74. Private Sub DTPicker1_Click()
  75. ' / -----------------------------------------------------------------------------------------------------------------------------------
  76.     '/ หากอยู่ที่หลัก 3 หากเกิดการเปลี่ยนค่าในการเลือก DTPicker  ก็นำค่านั้นไปใส่ไว้ในเซลล์ของ FlexGrid
  77.     If fg.Col = 3 Then fg.Text = DTPicker1.Value
  78. End Sub

  79. '// Addition: เพิ่มเติมในส่วนของการปรับระยะให้ดูสวยงาม
  80. Private Sub Form_Resize()
  81.     On Error Resume Next
  82.     Me.fg.Move 15, 15, Me.ScaleWidth - 15, Me.ScaleHeight - 30
  83.     With fg
  84.         .ColWidth(0) = .Width \ 4 - 400
  85.         .ColWidth(1) = .Width \ 4 - 600
  86.         .ColWidth(2) = .Width \ 4 + 800
  87.         .ColWidth(3) = .Width \ 4 - 100
  88.     End With
  89.     '/ เคลื่อนย้ายตำแหน่ง DTPicker ไปในเซลล์ต่างๆของหลักที่ 3 และปรับระยะเท่ากับเซลล์นั้นๆ
  90.     DTPicker1.Move fg.CellLeft + fg.Left, fg.CellTop + fg.Top, fg.CellWidth
  91. End Sub
คัดลอกไปที่คลิปบอร์ด


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




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

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

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

0

กระทู้

51

โพสต์

233

เครดิต

Full Member

Rank: 3Rank: 3

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

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

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

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

GMT+7, 2024-5-5 22:53 , Processed in 0.194598 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

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