Home, Forum diskusi, Chatting, Download


Latihan 3

Judul : Tantangan melengkapi program data pemakai Telepon Latihan Bab2

Lengkapi program tersebut dengan beberapa hal sebagai berikut :


1. txtCCode, maksimal pengetikkan 4 huruf, dan tidak boleh kurang dari 4 huruf, dan yang dapat diketik hanya digit (0 s/d 9).

Solusi :

A. Untuk membatasi jumlah pengetikkan maksimal 4 huruf, kita dapat menggunakan properti MaxLength pada picture box txtCCode yang diset menjadi 4.

B. Untuk memaksakan pengetikkan tidak boleh kurang dari 4 huruf, kita dapat melakukan koding pada event Validate kontrol txtCCode, yang perlu kita lakukan adalah memeriksa apakah txtCCode kosong atau tidak, jika tidak kosong kita periksa apakah panjangnya dibawah 4 huruf dengan menggunakan fungsi bantu Len(string), jika dibawah 4 huruf kita set argumen Cancel menjadi True yang artinya tidak dapat keluar dari kontrol.

Private Sub txtCCode_Validate(Cancel As Boolean)  
If Trim(txtCCode.Text) <> "" Then                 'Jika tidak kosong
   If Len(txtCCode.Text) < 4 Then                 'Jika panjang dibawah 4 huruf
      MsgBox "Kode Akses harus 4 digit", vbOKOnly + vbInformation, "Perhatian"
      Cancel = True                               'Tidak boleh meninggalkan kontrol
   End If
End If
End Sub

C. Untuk membatasi huruf yang dapat diketik hanya digit (0 s/d 9) pada txtCCode, kita perlu melakukan koding terhadap event Keypress, dengan memeriksa isi argumen KeyAscii dan memanipulasinya.

Private Sub txtCCode_KeyPress(KeyAscii As Integer)
If Not (Chr$(KeyAscii) Like "[0-9]" Or _          'Jika yang ditekan bukan 0 s/d 9
        KeyAscii = 8) Then                        'atau backspace
   KeyAscii = 0                                   'Abaikan saja
End If
End Sub

2. txtNama, maksimal pengetikkan 30 huruf, dan huruf pertama setiap suku kata otomatis besar, misalnya Hendra Wijaya, Susan Dewichan.

Solusi :

A. Untuk solusi maksimal pengetikkan 30 huruf, dapat dilihat pada jawaban diatas.

B. Untuk mengubah setiap huruf pertama suku kata menjadi huruf besar mula-mula kita perlu membuat fungsi bantu proper :

Function Proper(x As String)
Dim cRet As String              'Menampung hasil perubahan huruf perhuruf
Dim lBesar As Boolean           'Flag untuk menandai huruf berikutnya huruf besar
Dim i As Integer                'Variabel counter dari huruf 2 s/d selesai
If Len(x) > 0 Then                            'Jika x tidak kosong
   cRet = UCase$(Left(x, 1))                  'Buat huruf pertama jadi besar
   lBesar = False                             'Huruf berikutnya huruf kecil
   For i = 2 To Len(x)                        'Mulai dari huruf 2 s/d selesai
       If lBesar Then                         'Jika lBesar
          cRet = cRet & UCase$(Mid$(x, i, 1)) 'Buat huruf tersebut jadi besar
          lBesar = False                      'Huruf berikutnya huruf kecil
       Else
          cRet = cRet & LCase$(Mid$(x, i, 1)) 'Buat huruf tersebut jadi kecil
       End If
       If Mid$(x, i, 1) = " " Then            'Jika huruf tersebut adalah spasi
          lBesar = True                       'Huruf berikutnya huruf besar
       End If
   Next i
End If
Proper = cRet                   'Kembalikan hasil perubahan di cRet
End Function

Kemudian kita gunakan fungsi Proper tersebut pada event Change pada txtNama, artinya setiap terjadi perubahan pada isi textbox, maka kita jalankan fungsi proper untuk menjamin tampilan.

Private Sub txtNama_Change()
Dim i As Integer
i = txtNama.SelStart                'Simpan posisi titik sisip
txtNama.Text = Proper(txtNama.Text) 
txtNama.SelStart = i                'Kembalikan posisi titik sisip
End Sub

3. txtEkstension, maksimal pengetikkan 3 huruf, dan yang dapat diketik hanya digit (0 s/d 9), dan nomor ekstension terkecil 100, terbesar 600.

Solusi :

A. Solusi 1 dan 2 lihat diatas.

B. Solusi untuk nomor ekstension terkecil 100, dan terbesar 600, kita lakukan pada event Validate

Private Sub txtEkstension_Validate(Cancel As Boolean)
If Trim$(txtEkstension.Text) <> "" Then     'Jika tidak kosong
   If Len(txtEkstension.Text) < 3 Or _      'Jika kurang dari 3 huruf atau
      txtEkstension.Text < "100" Or _       'dibawah 100 atau
      txtEkstension.Text > "600" Then       'diatas 600
      MsgBox "Ekstension mulai 100 s/d 600", vbOKOnly + vbInformation, "Perhatian"
      Cancel = True
   End If
End If
End Sub

4. Penekanan Enter dapat digunakan untuk berpindah antar textbox

Solusi :

Untuk melakukan hal ini kita perlu mengatur event keypress masing-masing kontrol sehingga menjadi :

Private Sub txtCCode_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
   SendKeys "{tab}"
ElseIf Not (Chr$(KeyAscii) Like "[0-9]" Or _
   KeyAscii = 8) Then
   KeyAscii = 0
End If
End Sub
Private Sub txtNama_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
   SendKeys "{tab}"
End If
End Sub
Private Sub txtEkstension_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
   SendKeys "{tab}"
ElseIf Not (Chr$(KeyAscii) Like "[0-9]" Or _
   KeyAscii = 8) Then
   KeyAscii = 0
End If
End Sub

5. Option SLI, hanya bisa dipilih untuk ekstension 100 s/d 199, SLJJ, hanya dipilih untuk ekstension 200 s/d 299

Solusi :

Untuk memeriksa apakah suatu nomor ekstension dapat melakukan akses SLJJ maupun akses SLI, kita perlu memeriksanya pada event klik pada masing-masing option button.

Private Sub optSLI_Click()
If txtEkstension.Text > "199" Then
   MsgBox "Ekstension tidak bisa akses SLI"
   optSLI.Value = False
End If
End Sub
Private Sub optSLJJ_Click()
If txtEkstension.Text > "299" Then
   MsgBox "Ekstension tidak bisa akses SLJJ"
   optSLJJ.Value = False
End If
End Sub

6. txtCCode, txtNama, txtEkstension, dan Akses tidak boleh kosong.

Solusi :

Pemeriksaan terhadap data txtCCode, txtNama dan txtEkstension tidak boleh kosong kita lakukan pada bagian Update, artinya jika salah satu kosong kita tampilkan kotak pesan dan proses Update dibatalkan.

Private Sub cmdUpdate_Click()
If Aksi = flAdd Or Aksi = flEdit Then         'Kalau update dilakukan karena Edit
                                              'atau Add
   If Trim$(txtCCode.Text) = "" Then          'Jika txtCCode kosong
      MsgBox "Kode Akses tidak bisa kosong"   'Tampil pesan
      txtCCode.SetFocus                       'Kembalikan fokus ke txtCCode
      Exit Sub                                'Keluar dari sub
   End If
   If Trim$(txtNama.Text) = "" Then
      MsgBox "Nama tidak bisa kosong"
      txtNama.SetFocus
      Exit Sub
   End If
   If Trim$(txtEkstension.Text) = "" Then
      MsgBox "Ekstension tidak bisa kosong"
      txtEkstension.SetFocus
      Exit Sub
   End If
   If Not (optLocal.Value Or optSLJJ.Value Or optSLI.Value) Then
      MsgBox "Anda harus pilih salah satu option"
      Exit Sub
   End If
   If Aksi = flAdd Then
      JlhRec = JlhRec + 1
      Posisi = JlhRec
   End If
   DatPemakai.CCode = txtCCode.Text
   DatPemakai.nama = txtNama.Text
   DatPemakai.Ekstension = txtEkstension.Text
   DatPemakai.Local = optLocal.Value
   DatPemakai.SLJJ = optSLJJ.Value
   DatPemakai.SLI = optSLI.Value
   Put #1, Posisi, DatPemakai
   Call Kunci
End If
End Sub

Dibuat  oleh hendra@indoprog.com
Medan - Sumatera Utara
Indonesia