www.oocities.org/pontipa001


หน้าแรก อุปกรณ์ที่ประกอบเป็นเครื่องคอมพิวเตอร์ เกาเหลาเทคนิคการใช้ HTML วิธีทำสร้าง Shortcut บน Desktop ปัญหาใหญ่ของ Data transfer

 การป้อนข้อมูล

เนื่องจากว่าการป้อนข้อมูลโดยใช้ TextBox หรือ MaskEdit Control มีปัญหาเกี่ยวกับการป้อนตัวเลขถ้าใช้ TextBox ไม่สามารถแสดงคอมม่าได้ ในขณะที่ใช้ MaskEdit ไม่สามารถจัดชิดขวาได้ สำหรับวันที่แล้วไม่ได้ตรวจสอบว่าป้อนวันที่ถูกหรือไม่   การใช้ Function isdate ก็จะตรวจสอบเฉพาะวันที่ฝรั่ง ดังนั้นผมจึงต้องเขียน Function ขึ้นมาใช้งานเอง และได้เขียนตัวอย่างการใช้งานไว้ ท่านสามารถ DownLoad ตัวอย่างนี้เพื่อนำไปศึกษา

การตรวจจับแป้นพิมพ์ในระดับ Form
เมื่อกดแป้น [ENTER] แล้วให้เลื่อนตำแหน่งป้อนไปยังฟิลด์ถัดไป
ถ้าต้องการตรวจจับฟังก์ชั่นคีย์ เช่น F1..F12
เมื่ออยู่ที่ฟิลด์แล้ว ต้องการให้ป้อนเฉพาะตัวอักษรที่ต้องการ
ต้องการให้ขึ้นแถบแสงเลือกอักษร (Seleced Text)เมื่อเปลี่ยนฟิลด์
เมื่อต้องการป้อนข้อมูลที่เป็นตัวเลข
เมื่อต้องการป้อนข้อมูลที่เป็นวันที่
เมื่อต้องการจัด Format วันที่
เมื่อต้องการแปลงวันที่ (Text) เป็นตัวแปรวันที่

การตรวจจับแป้นพิมพ์ในระดับ 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, "วว/ดด/ปปปป")
'เพื่อใช้ปีของพี่ไทย

เมื่อต้องการจัด Format วันที่

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