|
แอดมินไม่ขอพูดมาก เจ็บคอ 5555+ ... เพราะเนื่องจากได้แจกโค้ดและอธิบายวิธีการคิดในเรื่องนี้ไปไว้ใน VB.NET เป็นที่เรียบร้อย อ่านรายละเอียดได้จาก [VB.NET] การนำ DateTimePicker และ Button Control ไปใส่ไว้ในตารางกริด DataGridView แบบ Run Time ... แท้จริงแล้วแอดมินเขียนด้วย VB6 มาก่อน แล้วก็นำเอาหลักการนี้ไปใช้ใน VB.NET แต่พึ่งเอาโค้ดมาลงให้กับมิตรรักแฟนคลับสาย VB6 ครับผม ... สรุปให้ฟังเล็กน้อยล่ะกัน หากมีการโฟกัสไปยังเซลล์ (ยึดตามหลัก) ที่เราต้องการ ให้เปิดการแสดงผล DTPicker แล้วเอา DTPicker ไปวางทับในเซลล์นั้นๆ นำค่าจากเซลล์มาใส่ไว้ใน DTPicker หากมีการเปลี่ยนแปลงค่าใน DTPicker จะต้องนำค่านี้ไปใส่ไว้ในเซลล์ด้วย หากหลุดโฟกัสออกจากเซลล์ ให้ปิดการแสดงผล DTPicker ... จบ
หน้าจอในการออกแบบ
หน้าจอเมื่อสั่งรันโปรแกรม ... ก็ต้องมีการปรับระยะของการแสดงผลของ DTPicker ให้ตรงกับความกว้างของเซลล์ด้วย
มาดูโค้ดฉบับเต็ม ...
- ' / -----------------------------------------------------------------------------------------------
- ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
- ' / eMail : thongkorn@hotmail.com
- ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
- ' / Facebook: https://www.facebook.com/g2gnet (For Thailand only)
- ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
- ' / Purpose: Adding the DTPicker into MS FlexGrid Control.
- ' / Microsoft Visual Basic 6.0 Service Pack 6
- ' /
- ' / This is open source code under @Copyleft by Thongkorn Tubtimkrob.
- ' / You can modify and/or distribute without to inform the developer.
- ' / -----------------------------------------------------------------------------------------------
- Option Explicit
- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
- Select Case KeyCode
- Case vbKeyF2
- Call fg_Click
-
- End Select
- End Sub
- Private Sub Form_Load()
- '// ปิดการแสดงผล DTPicker
- Me.DTPicker1.Visible = False
- '// ตั้งค่าตารางกริด
- Call SetupGrid
- Randomize
- '// Sample Data
- With fg
- .AddItem "1" & vbTab & "1111" & vbTab & "เหล้าเร้ด" & vbTab & Format(DateAdd("d", Date, -Rnd * 365), "dd/mm/yyyy")
- .AddItem "2" & vbTab & "2222" & vbTab & "เหล้าว็อดก้า" & vbTab & Format(DateAdd("d", Date, -Rnd * 365), "dd/mm/yyyy")
- .AddItem "3" & vbTab & "3333" & vbTab & "เหล้าขาว" & vbTab & Format(DateAdd("d", Date, -Rnd * 365), "dd/mm/yyyy")
- End With
- End Sub
- '/ ตั้งค่าต่างๆของ FlexGrid แบบ Run Time
- Sub SetupGrid()
- With fg
- '/ สั่ง Clear FlexGrid
- .Clear
- .FixedCols = 0
- .Rows = 1
- .Cols = 4
- .TextMatrix(0, 0) = "Primary Key"
- .TextMatrix(0, 1) = "รหัสสินค้า"
- .TextMatrix(0, 2) = "ชื่อสินค้า"
- .TextMatrix(0, 3) = "วันที่ซื้อ"
- .ColWidth(0) = .Width \ 4 - 400
- .ColWidth(1) = .Width \ 4 - 600
- .ColWidth(2) = .Width \ 4 + 800
- .ColWidth(3) = .Width \ 4 - 100
- '//
- .RowHeightMin = DTPicker1.Height
- End With
- End Sub
- ' / -----------------------------------------------------------------------------------------------
- ' / เกิดเหตุการณ์นำเมาส์ไปคลิ๊กที่ Cell ใดๆใน FlexGrid
- Private Sub fg_Click()
- ' / -----------------------------------------------------------------------------------------------
- If fg.Row = 0 Then Exit Sub
- '/ เลือกหลักที่ต้องการ
- Select Case fg.Col
- '/ ไม่ใชหลักที่ต้องการให้ DTPicker ปรากฏ ก็ปิดการแสดงผลของ DTPicker
- Case 0 To 2:
- DTPicker1.Visible = False
-
- '/ หลัก 3 คือหลักที่ต้องการ และทำการเคลื่อนย้ายตำแหน่ง DTPicker เข้าสู่ FlexGrid ได้
- Case 3:
- DTPicker1.Visible = True ' เปิดการแสดงผล DTPicker
- DTPicker1.Value = fg.Text ' นำค่าจาก FlexGrid มาเทียบค่าใน DTPicker
- '/ เคลื่อนย้ายตำแหน่ง DTPicker ไปในเซลล์ต่างๆของหลักที่ 3 และปรับระยะเท่ากับเซลล์นั้นๆ
- DTPicker1.Move fg.CellLeft + fg.Left, fg.CellTop + fg.Top, fg.CellWidth
- End Select
- End Sub
- ' / -----------------------------------------------------------------------------------------------------------------------------------
- Private Sub DTPicker1_Click()
- ' / -----------------------------------------------------------------------------------------------------------------------------------
- '/ หากอยู่ที่หลัก 3 หากเกิดการเปลี่ยนค่าในการเลือก DTPicker ก็นำค่านั้นไปใส่ไว้ในเซลล์ของ FlexGrid
- If fg.Col = 3 Then fg.Text = DTPicker1.Value
- End Sub
- '// Addition: เพิ่มเติมในส่วนของการปรับระยะให้ดูสวยงาม
- Private Sub Form_Resize()
- On Error Resume Next
- Me.fg.Move 15, 15, Me.ScaleWidth - 15, Me.ScaleHeight - 30
- With fg
- .ColWidth(0) = .Width \ 4 - 400
- .ColWidth(1) = .Width \ 4 - 600
- .ColWidth(2) = .Width \ 4 + 800
- .ColWidth(3) = .Width \ 4 - 100
- End With
- '/ เคลื่อนย้ายตำแหน่ง DTPicker ไปในเซลล์ต่างๆของหลักที่ 3 และปรับระยะเท่ากับเซลล์นั้นๆ
- DTPicker1.Move fg.CellLeft + fg.Left, fg.CellTop + fg.Top, fg.CellWidth
- End Sub
คัดลอกไปที่คลิปบอร์ด
ดาวน์โหลดโค้ดฉบับเต็ม VB6 ได้ที่นี่ ...
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|