my2alee โพสต์ 2022-1-13 15:40:07

VB6 - แสดงข้อมูลตามต้องการ

แก้ไขครั้งสุดท้ายโดย my2alee เมื่อ 2022-1-13 15:42

ต้องการแสดงข้อมูลจาก mysql database ตามรูป ขอแนวหน่อยครับ
ส่วนการเชื่อมต่อและดึงข้อมูลได้ทำไว้เรียบร้อยแล้วแต่ไม่มีแนวให้แสดงข้อมูลตามรูปครับ


thongkorn โพสต์ 2022-1-17 13:52:19

การคำนวณหาหลัก ก็ไม่ยากอะไรครับ ใช้จำนวนข้อมูลมาหารเอาเศษด้วย 3 จะได้คำตอบออกมา 3 ชุดหรือหลัก คือ 0, 1 และ 2 ผมทำตัวอย่างไว้ให้โดยสร้าง TextBox ขึ้นมาตัวนึงก่อน โดยกำหนดค่า Index = 0 (หากสร้างด้วยโค้ดแบบ Run Time ต้องมากำหนดระยะความกว้างสูงและตำแหน่งใหม่) รายละเอียดก็อยู่ในโค้ดนั่นแหละครับ ...


Option Explicit

' เก็บค่า Index ของ Control Array
Private CtrlIndex As Integer

Private Sub Form_Load()
    Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
   
    ' ปกติวิธีการสร้าง TextBox Control Array ลงบนฟอร์ม
    ' 1. สร้าง TextBox ต้นแบบออกมาไว้ก่อน 1 ตัว และตั้งค่าคุณสมบัติ
    '   - Name = CtrlTextBox
    '   - Index = 0
    ' 2. คัดลอก หรือ Copy Control แล้ววาง (Paste) ลงบนฟอร์ม
   
    ' เราก็จะใช้วิธีการเดียวกันนั่นแหละครับ เพียงแต่ใช้ Code สั่งงานในขณะ Run Time แทน
    ' การโหลด Form หรือ Control เข้าสู่หน่วยความจำ ... เราใช้คำสั่ง LOAD
    ' กำหนด Index ของ CommandButton Control ตัวแรกเท่ากับ 0
    CtrlIndex = 0
    ' ข้อมูลตัวอย่างใน TextBox Control
    CtrlTextBox(0).Text = CtrlTextBox(0).Name & " index " & CtrlTextBox(0).Index
   
    ' เพิ่ม CommandButton อีก 16 ตัว
    Call AddControl(16)

End Sub

' / --------------------------------------------------------------------------------------------------
' โปรแกรมย่อยที่ใช้ในการเพิ่ม TextBox Control ตามจำนวนที่กำหนด แบบ Run Time
' / --------------------------------------------------------------------------------------------------
Private Sub AddControl(NumOfControl As Integer)
Dim Count As Integer
   
    For Count = 1 To NumOfControl
      
      ' คำสั่ง Load คือ การโหลด Form หรือ Control เข้าสู่หน่วยความจำ
      ' การใช้คำสั่งนี้ ก็จะเหมือนกับการคัดลอก และ วาง Control ลงบนฟอร์มนั่นเอง
      ' และเพิ่มจำนวนค่าของ Index ขึ้นอีก 1 ... เพราะมันเป็น Array ไงล่ะครับ
      CtrlIndex = CtrlIndex + 1
      Load CtrlTextBox(CtrlIndex)
   
      With CtrlTextBox(CtrlIndex)
            ' จัดตำแหน่งของ Control ... เลขจำนวนเต็มหาก Mod ด้วย 3 จะได้ค่าที่เป็นเศษคือ 0, 1 และ 2 เพื่อกำหนดจำนวน 3 หลัก
            Select Case (Count Mod 3)
                Case 0
                  .Left = 900
                  .Top = CtrlTextBox(CtrlIndex - 1).Top + _
                              CtrlTextBox(CtrlIndex - 1).Height + 60
               
                Case 1
                  .Left = CtrlTextBox(CtrlIndex - 1).Left + _
                              CtrlTextBox(CtrlIndex - 1).Width + 60
                  .Top = CtrlTextBox(CtrlIndex - 1).Top
               
                Case 2
                  .Left = CtrlTextBox(CtrlIndex - 1).Left + _
                              CtrlTextBox(CtrlIndex - 1).Width + 60
                  .Top = CtrlTextBox(CtrlIndex - 1).Top
            End Select
            
            .Visible = True
            ' ตัวอย่างการโหลดข้อมูลใน TextBox Control
            CtrlTextBox(Count).Text = CtrlTextBox(Count).Name & _
                                                                            " index " & CtrlTextBox(Count).Index
      End With
    Next

End Sub

' ==========================================================
' เหตุการณ์ชองการคีย์ใน TextBox Control
' ==========================================================
Private Sub CtrlTextBox_KeyPress(Index As Integer, KeyAscii As Integer)
    ' นำไปประยุกต์กันต่อเองล่ะกันครับ ... พี่น้อง
    If KeyAscii = 13 Then
      '// ปิดเสียง Beep
      KeyAscii = 0
      MsgBox "You press TextBox Control Index = " & Index
    Else
      '// DO SOMETHING
    End If
End Sub

my2alee โพสต์ 2022-1-19 13:51:50

thongkorn ตอบกลับเมื่อ 2022-1-17 13:52
การคำนวณหาหลัก ก็ไม่ยากอะไรครับ ใช้จำนวนข้อมูลมาหาร ...

ขอบคุณมากครับ อ. / จะได้นำไปประยุกต์ใช้ตามงานที่ต้องการ
หน้า: [1]
ดูในรูปแบบกติ: VB6 - แสดงข้อมูลตามต้องการ