Selasa, 02 Agustus 2011

Membuat AutoComplete ComboBox VB6

Berikut ini adalah cara membuat autocomplete combobox di visual basic 6, untuk mempraktekannya siapkan :
1. Buat 1 Project baru dengan 1 Form.
2. Tambahkan lima combobox, masing-masing menjadi: Combo1, Combo2, Combo3, Combo4, dan Combo5.
3. Copy-kan coding berikut ke dalam editor form yang bertalian.

          Option Explicit

          'Konstanta untuk membantu pencarian string
          Const CB_FINDSTRING = &H14C


          Private Declare Function SendMessage Lib "user32" _
                  Alias "SendMessageA" (ByVal hwnd As Long, _
                  ByVal wMsg As Long, ByVal wParam As Long, _
                  lParam As Any) As Long


          'Untuk membantu menentukan apakah terjadi perubahan (Ubah)
          'hasil string di combobox atau tidak (Asli).
          Public Enum EnumKarakter

            Asli = 0
            Ubah = 1
          End Enum
          Dim Karakter As EnumKarakter


          'Ini untuk mengisi setiap combobox dengan data yang sama
          'Perhatikan perbedaan hasilnya saat data diketikkan di
          'masing2 combobox ybt pada event procedure KeyPress...
          Private Sub IsiSemuaCombobox()

            Dim ctrl As Control
            For Each ctrl In Form1.Controls
              If TypeOf ctrl Is ComboBox Then
                With ctrl

                .AddItem "Masino Sinaga"
                .AddItem "Marlyin Monroe"
                .AddItem "Matt Monroe"
                .AddItem "Ady Chandra"

                .AddItem "Ari Hadiyono"
                .AddItem "Dorce Simatupang"
                .AddItem "Elvis Sinaga"
                .Text = .List(0)
                End With

              End If

             Next
          End Sub


          'Mula-mula, isi semua combobox dengan data yang sama
          Private Sub Form_Load()
            IsiSemuaCombobox
          End Sub


          'Bandingkan Combo1 dan Combo4...
          'Hasilnya sama saja bukan? Karena huruf yang akan digunakan
          'tidak terpengaruh kepada parameter ketiga (bUpperCase),

          'tapi ditentukan oleh parameter keempat (cCharacter),
          'yang bernilai "Asli", artinya menggunakan karakter aslinya.
          Private Sub Combo1_KeyPress(KeyAscii As Integer)
            KeyAscii = AutoComplete(Combo1, KeyAscii, True, Asli)

          End Sub
          Private Sub Combo4_KeyPress(KeyAscii As Integer)
            KeyAscii = AutoComplete(Combo4, KeyAscii, False, Asli)
          End Sub


          'Karena parameter ketiga = False dan parameter keempat di-Ubah,
          'maka huruf yang ditampilkan saat diketik akan menjadi
          'huruf kecil semuanya (terjadi perubahan karena "Ubah").
          Private Sub Combo2_KeyPress(KeyAscii As Integer)

            KeyAscii = AutoComplete(Combo2, KeyAscii, False, Ubah)
          End Sub

          'Karena parameter ketiga = True, dan parameter keempat di-Ubah,

          'maka huruf yang ditampilkan saat diketik akan menjadi
          'huruf besar semuanya (terjadi perubahan karena "Ubah").
          Private Sub Combo3_KeyPress(KeyAscii As Integer)
            KeyAscii = AutoComplete(Combo3, KeyAscii, True, Ubah)
          End Sub


          'Karena parameter ketiga dan keempat tidak didefinisikan
          'secara eksplisit dalam pemakaiannya, maka akan menggunakan
          'parameter default-nya; masing-masing: True dan Asli,

          'sehingga huruf yang ditampilkan menjadi apa adanya (Asli).
          'Dalam hal ini, sama dengan Combo1 dan Combo4 di atas.
          Private Sub Combo5_KeyPress(KeyAscii As Integer)
            KeyAscii = AutoComplete(Combo5, KeyAscii)

          End Sub

          'dengan menambahkan parameter keempat (cCharacter) yang
          'berguna untuk menentukan apakah hasil yang akan ditampilkan
          'akan diubah menjadi kapital semua, huruf kecil semua, atau
          'huruf asli apa adanya

          Public Function AutoComplete( _
                          cbCombo As ComboBox, _
                          sKeyAscii As Integer, _
                          Optional bUpperCase As Boolean = True, _

                          Optional cCharacter As EnumKarakter = Asli) _
                          As Integer
            Dim lngFind As Long, intPos As Integer
            Dim intLength As Integer, tStr As String
            With cbCombo

              If sKeyAscii = 8 Then
                 If .SelStart = 0 Then Exit Function
                 .SelStart = .SelStart - 1
                 .SelLength = 32000

                 .SelText = ""
              Else

                 'simpan posisi kursor
                 intPos = .SelStart

                 'simpan data string
                 tStr = .Text
                 'If bUpperCase = Asli Then
                 '   .SelText = (Chr(sKeyAscii))
                 If bUpperCase = True Then

                    'ganti string. (hanya huruf besar)
                    .SelText = UCase(Chr(sKeyAscii))
                 Else 'If bUpperCase = KecilSemua Then
                    'ganti string. (biarkan data apa adanya)

                    .SelText = (Chr(sKeyAscii))
                 End If
              End If
              'Cari string di combobox

              lngFind = SendMessage(.hwnd, CB_FINDSTRING, 0, ByVal .Text)
              If lngFind = -1 Then 'Jika string tidak ditemukan
                 'Set ke string yg lama (digunakan untuk data yang
                 'membutuhkan pengawasan karakter
                 .Text = tStr

                 'Tentukan posisi kursor
                 .SelStart = intPos
                 'Tentukan panjang yang terpilih
                 .SelLength = (Len(.Text) - intPos)

                 'Kembalikan nilai 0 KeyAscii (tidak melakukan apapun)
                 AutoComplete = 0
                 Exit Function
              Else 'Jika string ditemukan

                 intPos = .SelStart 'Simpan posisi kursor
                 'Simpan panjang teks sisa yang disorot
                 intLength = Len(.List(lngFind)) - Len(.Text)
                 If cCharacter = Ubah Then
                   'Ganti teks baru dalam string (ubah seluruhnya)

                   .SelText = .SelText & Right(.List(lngFind), intLength)
                 Else  'Asli, huruf asli yang digunakan, tidak diganti
                   .Text = .List(lngFind)
                 End If

                 'Tentukan posisi kursor
                 .SelStart = intPos
                 'Tentukan panjang yang terpilih
                 .SelLength = intLength

              End If
            End With
          End Function

Tags:
contoh program vb6, contoh fungsi di vb6, cara penggunaan fungsi vb, tutorial vb6, download tutorial vb6, vb6 tutorial download, dasar dasar vb6, belajar vb6, cara mudah belajar vb6, vb6 artikel download, vb6 blog, contoh program vb6, artikel vb6, semua tentang vb6, vb6 api, cara menggunakan module, cara menggunakan class module

Ditulis Oleh : Wahyu Aji // 18.42
Kategori:

0 komentar:

Posting Komentar