หน้าแรก
อุปกรณ์ที่ประกอบเป็นเครื่องคอมพิวเตอร์
เกาเหลาเทคนิคการใช้
HTML วิธีทำสร้าง
Shortcut บน Desktop
ปัญหาใหญ่ของ
Data transfer
การป้อนข้อมูล
เนื่องจากว่าการป้อนข้อมูลโดยใช้ TextBox หรือ MaskEdit Control มีปัญหาเกี่ยวกับการป้อนตัวเลขถ้าใช้ TextBox ไม่สามารถแสดงคอมม่าได้ ในขณะที่ใช้ MaskEdit ไม่สามารถจัดชิดขวาได้ สำหรับวันที่แล้วไม่ได้ตรวจสอบว่าป้อนวันที่ถูกหรือไม่ การใช้ Function isdate ก็จะตรวจสอบเฉพาะวันที่ฝรั่ง ดังนั้นผมจึงต้องเขียน Function ขึ้นมาใช้งานเอง และได้เขียนตัวอย่างการใช้งานไว้ ท่านสามารถ DownLoad ตัวอย่างนี้เพื่อนำไปศึกษา
การตรวจจับแป้นพิมพ์ในระดับ Form
การตรวจจับแป้นพิมพ์ในระดับฟอร์ม นั้นเราต้องกำหนด KeyPreview = True KeyPreview เป็นProperties ของฟอร์ม เมื่อผู้ใช้ป้อนข้อมูล VB จะตรวจจับแป้นพิมพ์นี้ก่อน ที่จะไปทำในระดับ Control
เมื่อกดแป้น [ENTER] แล้วให้เลื่อนตำแหน่งป้อนไปยังฟิลด์ถัดไป
โปรแกรมบน Dos ส่วนใหญ่เมื่อ กด ENTER แล้วจะเลื่อนตำแหน่งป้อนไปยังฟิลด์ถัดไป ใน VB ถ้าจะทำต้องกำหนดดังนี้
1. อย่าลืมกำหนด KeyPreview = True
2. ใส่โปรแกรมตรง Form_KeyPress
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys "{Tab}"
KeyAscii = 0
End If
End Sub
ถ้าต้องการตรวจจับฟังก์ชั่นคีย์เช่น F1-F12
ถ้าต้องการดักแป้นพิมพ์ฟังก์ชั่นคีย์ ให้ใส่ตรง Form_KeyDown
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF3
Call SSCmbExit_Click
Case vbKeyF5
Call SSCmbOK_Click
End Select
End Subเมื่ออยู่ที่ฟิลด์แล้ว ต้องการให้ป้อนเฉพาะตัวอักษรที่ต้องการ
ให้เราใส่โปรแกรมตรง KeyPress ของ Control ตัวนั้น เช่นต้องการให้ป้อนเฉพาะตัวเลข
Private Sub txtInt_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 or KeyAscii > 57 Then
keyascii = 0
End If
End Subสำหรับการดักแป้นพิมพ์นี้ผมได้เขียนเป็นฟังก์ชั่นไว้ ชื่อ ValidKeyPress ท่านสามารถ DownLoad ตัวอย่างได้จากบทนำ
ให้ใส่ไว้ที่ KeyPress โดยมีรูปแบบการใช้ดังนี้
1. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "C", "UPPER") ป้อนโดยให้ถาษาอังกฤษเป็นตัวใหญ่หมด
2. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "C", "UPPERABC") ป้อนโดยให้ถาษาอังกฤษABC
3. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "C", "LOWER") ป้อนโดยให้ถาษาอังกฤษเป็นตัวเล็กหมด
4. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "C", "LOWERabc") ป้อนโดยให้ถาษาอังกฤษabc
5. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "C", "THADA") ป้อนได้เฉพาะ T,H,A,D
6. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "N", "+-.") ป้อนตัวเลขอนุญาติ +,-และจุด
7. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "N", "") ป้อนตัวเลขอย่างเดียว
8. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "D", "/") ป้อนวันที่อนุญาติให้พิมพ์ / ได้
9. KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "D", "") ป้อนวันที่เฉพาะตัวเลขต้องการให้ขึ้นแถบแสงเลือกอักษร (Seleced Text)เมื่อเปลี่ยนฟิลด์
เนื่องจากต้องใช้งานบ่อยควรสร้างเป็นฟังกชั่นเก็บไว้เลย
Private Sub My_SelText()
On Error Resume Next
ActiveControl.SelStart = 0
ActiveControl.SelLength = 65000
End Subเมื่อใช้งานต้องใส่ไว้ตรง GotFocus ของ Control ที่ใช้รับข้อมูล เช่น
Private Sub txtDateB_GotFocus()
Call My_SelText
End Subเมื่อต้องการป้อนข้อมูลที่เป็นตัวเลข
การป้อนตัวเลขมีปัญามากพอสมควรใน VB ผมได้พยายามเขียนอยู่ตั้งนาน จนได้ออกมาเป็นรูปแบบนี้ ท่านสามารถ DownLoad ดูได้จากตัวอย่างโปรแกรมได้จากบทนำ
ต้องกำหนดดังนี้
1. กำหนด KeyPreview ของ Form เป็น True
2. ต้องใส่ Form_KeyPress
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys "{Tab}"
KeyAscii = 0
End If
End Sub
3. กำหนด Alignment ของ TextBox เป็น 1-Right Justify
4. กำหนด MultiLine ของ TextBox ให้เป็น True
5. ตรง GotFocus ของ Textbox ควรใส่ Call My_SelText ฟังก์ชั่นนี้อยู่ต้นหน้า
6. ตรง KeyPress ของ TextBox ใส่ KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "N", "-.") พิมพ์เฉพาะตัวเลข
7. ตรง LostFocus ของ TextBox ใส่
txtINT = Format$(StrToNum(txtINT), "#,##0.00") หรือ
txtINT = Format$(StrToNum(txtINT), "###0") ถ้าไม่ต้องการจุดเมื่อต้องการป้อนข้อมูลที่เป็นวันที่
เนื่องจาก VB ไม่ได้มีการตรวจสอบวันที่ และ ไม่มีการตรวจสอบวันที่ภาษาไทย ผมจึงต้องเขียนขึ้นมาเพื่อไว้ใช้งาน โดยมีดารกำหนดเงื่อนไขการใช้ไว้ดังนี้
1. กำหนด KeyPreview ของ Form เป็น True
2. ต้องใส่ Form_KeyPress
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys "{Tab}"
KeyAscii = 0
End If
End Sub
3. ตรง GotFocus ของ Textbox ควรใส่ Call My_SelText ฟังก์ชั่นนี้อยู่ต้นหน้า
4. ตรง KeyPress ของ TextBox ใส่ KeyAscii = ValidKeyPress(KeyAscii, ActiveControl, "D", "/") ถ้าไม่ให้พิมพ์ / ให้ลบออก
5. ตรง LostFocus ของ TextBox ใส่
txtDateC = ValidDate(txtDateC, "dd/mm/yyyy") 'เพื่อใช้ปีฝรั่งอักกฤษ
txtDateC = ValidDate(txtDateC, "mm/dd/yyyy") 'เพื่อใช้ปีฝรั่งอเมริกัน
txtDateC = ValidDate(txtDateC, "วว/ดด/ปปปป") 'เพื่อใช้ปีของพี่ไทย
อนึ่งถ้าต้องการแปลงสตริงวันที่เป็นตัวแปรวันที่ใช้ StrToDate เช่น
Dim varDate As Date
varDate = StrToDate(txtDateC, "dd/mm/yyyy") 'เพื่อใช้ปีฝรั่งอักกฤษ
varDate = StrToDate(txtDateC, "วว/ดด/ปปปป") 'เพื่อใช้ปีของพี่ไทยVB มีฟังกชั่น Format เพื่อจัดวันที่ แต่มีปัญหามากคือ ถ้าเรากำหนดที่ Control Panel ให้เป็นภาษาไทย เราจัดได้เฉพาะภาษาไทย ถ้าเรากำหนดให้เป็นอังกฤษ ก็จะจัดได้เฉพาะภาษาอังกฤษ ดังนั้นผมไม่ค่อยอยากไปยุ่งเกี่ยวกับ Control Panel เลยสร้าง DFormat เพื่อที่จะใช้จัด Format รูปแบบวันที่ให้เป็นได้ทั้ง ภาษาไทย และ ภาษาอังกฤษ โดยมีรูปแบบดังนี้
กรณีภาษาอังกฤษ
MyStr = DFormat(Date, "dd/mm/yyyy") '** 13/03/1998.
MyStr = DFormat(Date, "dd-mmm") '** 13-Mar
MyStr = DFormat(Date, "mmmm dd, yyyy") '** March 13, 1998".
MyStr = DFormat(Date, "dddd, mmmm d yyyy") '** Friday, March 13, 1998".
กรณีภาษาไทย
MyStr = DFormat(MyDate, "วว/ดด/ปปปป") '** 13/03/2541
MyStr = DFormat(MyDate, "ด/ปปปป") '** 3/2541 ถ้า ด ตัวเดียวจะไม่แสเง 0 หน้าเดือน
MyStr = DFormat(MyDate, "วว-ดดด") '** 13-มี.ค. ดดด 3ตัวจะแสดงเดือนย่อ
MyStr = DFormat(MyDate, "วว ดดดด ปปปป") '** 13 มีนาคม 2541
MyStr = DFormat(MyDate, "ดดดด ปปปป") '** มีนาคม 2541
เมื่อต้องการแปลงวันที่ (Text) เป็นตัวแปรวันที่ให้ใช้ฟังก์ชั่น StrToDate ดังตัวอย่างดังนี้
Dim MyDate as Date
MyDate = StrToDate("13/01/1998", "dd/mm/yyyy")
MyDate = StrToDate("01/13/1998", "mm/dd/yyyy")
MyDate = StrToDate("13/01/2541", "วว/ดด/ปปปป")
หน้าแรก อุปกรณ์ที่ประกอบเป็นเครื่องคอมพิวเตอร์ เกาเหลาเทคนิคการใช้ HTML วิธีทำสร้าง Shortcut บน Desktop ปัญหาใหญ่ของ Data transfer