Input data via grid

Posted by Kamarudin • 1 minute read • Comments

Sudah lama enggak posting tentang Visual Basic 6 jadi kangen juga :grin:.

Kali ini kita akan membahas bagaimana mudahnya melakukan input data langsung di grid menggunakan komponen VSFlexGrid.

VSFlexGrid sudah menyediakan beberapa method dan event yang mempermudah kita untuk melakukan hal ini, kita lihat screenshotnya.

![](http://coding4ever.files.wordpress.com/2012/05/13052012.png{: .align-center}

Berikut beberapa fitur yang akan kita bahas :

1. Validasi

Pada sample program di atas kita akan menambahkan beberapa validasi input seperti konversi ke huruf besar untuk kolom NAMA BARANG dan validasi input angka untuk kolom STOK dan HARGA JUAL. Kedua fitur ini membutuhkan fungsi berikut :

Private Function convertToUpper(ByVal keyAscii As Integer) As Integer
    convertToUpper = Asc(UCase$(Chr$(keyAscii)))
End Function

Private Function numericOnly(ByVal keyAscii As Integer) As Integer
    Dim strValid As String

    On Error GoTo errHandle

    strValid = "0123456789."
    If InStr(strValid, Chr(keyAscii)) = 0 And Not (keyAscii = vbKeyBack) Then
        numericOnly = 0
    Else
        numericOnly = keyAscii
    End If

    Exit Function
errHandle:
    numericOnly = 0
End Function

Selanjutnya fungsi diatas tinggal dipanggil di event KeyPressEdit dari komponen VSFlexGrid.

Private Sub Grid1_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, keyAscii As Integer)
    If keyAscii = vbKeyReturn Then
        Call nextFocus
    End If

    Select Case Col
        Case 0 ' kode barang
        Case 1 ' nama barang
            keyAscii = convertToUpper(keyAscii)
        Case 2, 3 ' stok dan harga
            keyAscii = numericOnly(keyAscii)
    End Select
End Sub

2. Focus dan Lostfocus backcolor

Sesuai nama fiturnya cell grid akan berubah warna ketika cursor mouse aktif pada cell.

Private Sub Grid1_StartEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)
    If Col = 3 Then ' harga jual
        Grid1.TextMatrix(Row, Col) = Replace(Grid1.TextMatrix(Row, Col), ",", "")
    End If

    Grid1.CellBackColor = &HC0FFFF ' warna kuning
End Sub

Private Sub Grid1_AfterEdit(ByVal Row As Long, ByVal Col As Long)
    If Col = 3 Then ' harga jual
        If IsNumeric(Grid1.TextMatrix(Row, Col)) Then
            Grid1.TextMatrix(Row, Col) = FormatNumber(Grid1.TextMatrix(Row, Col), 0)
        End If
    End If
    Grid1.CellBackColor = vbDefault
End Sub

Terakhir agar mode edit cellnya aktif pada saat cursor mouse aktif tinggal panggil method EditCell di event Click dan EnterCell

Private Sub Grid1_Click()
    Grid1.EditCell
End Sub

Private Sub Grid1_EnterCell()
    Grid1.EditCell
End Sub

Selamat MENCOBA :blush:

Comments