|
การคำนวณหาหลัก ก็ไม่ยากอะไรครับ ใช้จำนวนข้อมูลมาหารเอาเศษด้วย 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
คัดลอกไปที่คลิปบอร์ด |
|