มีวิธีเขียน code กดปุ่มฟังก์ชั่นคีย์แทน command bottom



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

03 พ.ค. 62 , 14:30:45
อ่าน 472 ครั้ง

kunlek

อยากนำ ฟังก์ชั่นคีย์ แทน command bottom เขียน code อย่างไรครับ
F1=help   f2= previous record  F3=next record  F4=Save record  F8=print report  F10=save & exit   

 

03 พ.ค. 62 , 15:30:11
ตอบกลับ #1

ปิ่นณรงค์

อยากนำ ฟังก์ชั่นคีย์ แทน command bottom เขียน code อย่างไรครับ
F1=help   f2= previous record  F3=next record  F4=Save record  F8=print report  F10=save & exit


โค๊ด: [Select]
Private Sub Form_Load()
Me.KeyPreview = True  'เปิดรับสถานะการกดแป้นคีย์บอร์ด
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   Select Case KeyCode
        Case vbKeyF1
         KeyCode = 0
         MsgBox "F2 = Previous Record" & vbCrLf & "F3 = Next Record" & vbCrLf & _
         "F4 = Save Record" & vbCrLf & "F8 = Open Reports" & vbCrLf & _
         "F10 = Save And Exit", vbInformation + vbSystemModal, "HELP"
         Case vbKeyF2
         KeyCode = 0
         Me.Recordset.MovePrevious
         Case vbKeyF3
         KeyCode = 0
         Me.Recordset.MoveNext
        Case vbKeyF4
        Me.Dirty = False 'หรืออื่นๆ เขียน sub มา ก็ได้
        Case vbKeyF8
        DoCmd.OpenReport "Report1", acViewNormal
        Case vbKeyF10
         Me.Dirty = False
         DoCmd.Close
    End Select
End Sub



ลองนำไปปรับใช้ดูครับ


« แก้ไขครั้งสุดท้าย: 03 พ.ค. 62 , 15:54:25 โดย ปิ่นณรงค์ »
:love: :grin:
 

03 พ.ค. 62 , 17:57:56
ตอบกลับ #2

kunlek

เราเอา code ไปใส่ใน module ได้ไหมครับ  เพราะทุกฟอร์มที่เปิดจะ เปิดใช้เหมือนกัน  จะได้ไม่ต้องไใส่ใน form load   ของ property

 

03 พ.ค. 62 , 23:26:10
ตอบกลับ #3

ปิ่นณรงค์

เราเอา code ไปใส่ใน module ได้ไหมครับ  เพราะทุกฟอร์มที่เปิดจะ เปิดใช้เหมือนกัน  จะได้ไม่ต้องไใส่ใน form load   ของ property
ท่านไปกำหนดของแต่ละฟอร์ม ก่อนเรียก Function มาใช้นะครับ


ที่ Module

โค๊ด: [Select]
Public Function MyKeyCode(KeyCode As Integer, Shift As Integer) As Integer
    Select Case KeyCode
        Case vbKeyF1
            MyKeyCode = 0
         MsgBox "F2 = Previous Record" & vbCrLf & "F3 = Next Record" & vbCrLf & _
         "F4 = Save Record" & vbCrLf & "F8 = Open Reports" & vbCrLf & _
         "F10 = Save And Exit", vbInformation + vbSystemModal, "HELP"
         
         Case vbKeyF2
            MyKeyCode = 0
             On Error Resume Next
             DoCmd.GoToRecord , , acPrevious
           
         Case vbKeyF3
            MyKeyCode = 0
            On Error Resume Next
            DoCmd.GoToRecord , , acNext
       
          Case vbKeyF4
            MyKeyCode = 0
            DoCmd.RunCommand acCmdSaveRecord
           
            Case vbKeyF8
            MyKeyCode = 0
            DoCmd.OpenReport "Report1", acViewNormal
         
             Case vbKeyF10
                DoCmd.Close , , acSaveYes
       
        Case Else
            MyKeyCode = KeyCode
    End Select
End Function

ที่ฟอร์มแต่ละฟอร์ม Event Keydown เอาโค้ดนี้ไปวางไว้ได้เลย
โค๊ด: [Select]
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = MyKeyCode(KeyCode, Shift)
End Sub

หมายเหตุที่ Select Case แต่ละอันท่านไปปรับเปลี่ยนการทำงานได้ตามสะดวกครับ
« แก้ไขครั้งสุดท้าย: 04 พ.ค. 62 , 00:29:24 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: sjs


บอร์ดเรียนรู้ Access สำหรับคนไทย