Dim baris, kolom As Integer 'Untuk menyimpan informasi baris dan kolom yang dipilih user
Dim i, j As Integer 'Untuk keperluan looping
Private Sub cbTes_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
'Isi kolom flexgrid sesuai isi teks combo yang dipilih
Call isiFlexGrid
'Combo dihide dulu
cbTes.Visible = False
'Jika baris dan kolom yang dipilih adalah baris dan kolom yang terakhir
If flexTes.Row = flexTes.Rows - 1 And flexTes.Col = flexTes.Cols - 1 Then
'Cek, apakah ada kolom yang belum terisi
For i = 1 To flexTes.Col
If flexTes.TextMatrix(flexTes.Row, i) = "" Then Exit Sub 'Jika ada kolom yang belum terisi, maka jangan buat baris baru
Next i
'Buat baris baru
flexTes.Rows = flexTes.Rows + 1
'Pindah fokus ke baris yang baru
flexTes.Row = flexTes.Row + 1
'Pindah fokus ke kolom pada baris yang baru
flexTes.Col = 1
'Fungsi untuk seolah-olah tombol panah bawah keyboard ditekan
'Ini berguna ketika baris flexgrid sudah mencapai batas bawah flexgrid, maka baris paling atas seolah-olah akan dihide
'sehingga posisi baris yang baru akan dinaikkan agar lebih kelihatan
SendKeys "{DOWN}"
'Jika kolom yang dipilih adalah kolom yang terakhir tetapi barisnya bukan baris terakhir(baris-baris sebelum baris yang terakhir)
ElseIf flexTes.Col = flexTes.Cols - 1 And flexTes.Row < flexTes.Rows - 1 Then
'Pindah ke baris berikutnya(tidak membuat baris baru, tetapi pindah ke baris berikutnya)
flexTes.Row = flexTes.Row + 1
'Pindah ke kolom berikutnya
flexTes.Col = 1
Else
'Pindah ke kolom berikutnya
flexTes.Col = flexTes.Col + 1
End If
End If
End Sub
Private Sub flexTes_KeyDown(KeyCode As Integer, Shift As Integer)
'Jika ditekan tombol ennter
If KeyCode = 13 Then
'Tampilkan combobox
Call tampilCombo
'Jika ditekan tombol delete
ElseIf KeyCode = vbKeyDelete Then
'Tidak boleh melakukan hapus pada baris yang merupakan satu-satunya baris yang tersisa
If flexTes.Rows = 2 Then Exit Sub
'Hapus baris yang dipilih
flexTes.RemoveItem flexTes.Row
End If
End Sub
Private Sub Form_Load()
'Default combobox dihide dulu
cbTes.Visible = False
'Tambahkan item(daftar isi) combobox
cbTes.AddItem "Item 1"
cbTes.AddItem "Item 2"
'Setting flexgrid
Call setGrid
End Sub
Private Sub tampilCombo()
cbTes.Visible = True
'Inisialisasi default koordinat kiri dan atas combo
cbTes.Left = flexTes.Left 'Koordinat kiri combo disamakan dengan koordinat kiri flexgrid
cbTes.Top = flexTes.Top 'Koordinat atas combo disamakan dengan koordinat atas flexgrid
'Looping untuk menentukan koordinat kiri combo
'Jika kita memilih kolom ke 3, maka looping akan dilakukan mulai dari kolom ke 0 sampai kolom ke 2
For i = 0 To flexTes.Col - 1
cbTes.Left = cbTes.Left + flexTes.ColWidth(i) 'Pada setiap looping koordinat kiri combo akan ditambah dengan lebar cell
Next i
'Looping untuk menentukan koordinat atas combo
'Jika kita memilih baris ke 3, maka looping akan dilakukan mulai dari baris ke 0 sampai baris ke 2
For j = 0 To flexTes.Row - 1
cbTes.Top = cbTes.Top + flexTes.RowHeight(j) 'Pada setiap looping koordinat atas combo akan ditambah dengan tinggi cell
Next j
'***Setelah melakukan kedua looping diatas, combo akan berada pada koordinat atas dan kiri kolom yang dipilih***
'Jika baris paling atas yang nampak di grid merupakan baris yang lebih dari baris ke 1, koordinat top dari cbTes dikurangi akumulasi lebar baris-baris
'sebelum baris paling atas yang nampak di grid
If flexTes.TopRow > 1 Then
cbTes.Top = cbTes.Top - ((flexTes.TopRow - 1) * flexTes.RowHeight(1))
End If
'Munculkan combo yang sebelumnya dihide
cbTes.Visible = True
'Sesuaikan lebar combo dengan lebar cell yang dipilih
cbTes.Width = flexTes.ColWidth(flexTes.Col)
'Fokus ke combo
cbTes.SetFocus
End Sub
Private Sub setGrid()
'Setting baris dan kolom flexgrid
flexTes.Rows = 2 '2 baris
flexTes.Cols = 4 '4 kolom
'Lebar untuk kolom 0 langsung dipatok 500
'Kolom 0 akan diisi nomor baris
flexTes.ColWidth(0) = 500
'Teks akan ditaruh ditengan-tengah kolom
flexTes.ColAlignment(0) = flexAlignCenterCenter
'Judul baris ke 0 pada kolom ke 1,2 dan 3
flexTes.TextMatrix(0, 1) = "Kolom 1"
flexTes.TextMatrix(0, 2) = "Kolom 2"
flexTes.TextMatrix(0, 3) = "Kolom 3"
'Inisialisasi awal lebar flexgrid
flexTes.Width = 0
'Looping untuk menentukan lebar flexgrid agar sesuai dengan lebar seluruh cell
For i = 0 To flexTes.Cols - 1
flexTes.Width = flexTes.Width + flexTes.ColWidth(i)
Next i
'Menambah lebar flexgrid agar ada celah sedikit pada ujung sebelah kanannya
flexTes.Width = flexTes.Width + 100
End Sub
Private Sub isiFlexGrid()
'Informasi baris yang dipilih user disimpan di variabel baris
baris = flexTes.Row
'Informasi kolom yang dipilih user disimpan di variabel kolom
kolom = flexTes.Col
'Beri nomor Pada setiap baris pada kolom ke 0
flexTes.TextMatrix(baris, 0) = flexTes.Row
'Pada baris dan kolom yang dipilih user, setelah user melakukan enter, akan diisi dengan teks dari combo
flexTes.TextMatrix(baris, kolom) = cbTes.Text
End Sub
15 March 2016
Input di Cell Flexgrid
Subscribe to:
Post Comments (Atom)
-
Berikut adalah cara yang saya tahu Untuk melihat strukur tabel pada SQL Server 2012 1. Cara pertama adalah dengan menggunakan SSMS (SQL Ser...
-
Pagi tanggal 27 November saya merasa sudah sangat putus asa, sudah hampir seminggu saya menunggu email dari PT. Jasamedika(jasmed) mengenai...
-
Bismillahhirrahmannirrahim Assalamualaikum teman-teman :), hari ini saya akan berbagi pengalaman saya ketika melamar kerja di PT. Jasamed...

No comments:
Post a Comment