Monday, March 14, 2011

Kamus Inggris - Handle Error 521 dan Parse Text - Bagian 3

Kamus Inggris - Handle Error 521 merupakan kelanjutan dari Bagian ke-2.
Ternyata kode yang sangat sedikit yang terdapat pada bagian ke-2 menyisakan bug, terkadang ia memunculkan error yaitu Error Number = 521 Error Description = "Unable to open clipboard"

Tujuan pada bagian ke-3:
  • Meng-handle dan mengkoreksi Error 521
  • Mem-parse text dan menambahkannya ke dalam objek ListBox
  • Memfilter hanya karakter yang valid untuk diterjemahkan
Langkah-langkah:
  • Singkat saja, ganti seluruh kode yang terdapat pada bagian ke-1 (Error 521) dengan kode yang terdapat pada bagian kode-kode.
Kode-kode:
Option Explicit 

Private Declare Function
EmptyClipboard Lib "user32" ) As Long 'API Function
Dim strFromClipboard As String

'---------------------------------------------------------------------------------
' Copy text dari clipboard dan masukan ke dalam objek TextBox
' dengan men-trigger secara kontinyu menggunakan bantuan timer
'---------------------------------------------------------------------------------
Private Sub Timer1_Timer()

On Error GoTo
ErrHandler 'apabila error loncat ke Handle Error

Dim s As String

s =
Clipboard.GetText 'baris ini terkadang error |Error Number = 521|

If s
<> strFromClipboard Then
ParsingText s, List1
strFromClipboard = s
Text1.Text = strFromClipboard
End If

Exit Sub

ErrHandler:
'Handle Error
If Err.Number = 521 Then 'Can't open the clipboard
Text1.Text = ""
EmptyClipboard 'paksa kosongkan clipboard dengan Fungsi API
Resume Next 'loncat lagi ke baris atas dan lanjutkan eksekusi membaca kode)
End If

End Sub

'--------------------------------------------------------------------------------
' dua event List1_Click() dan Text_DblClick()
' dengan kode sementara, hanya untuk mengecek dan melihat hasilnya saja
'--------------------------------------------------------------------------------
Private Sub List1_Click()
Text2.Text = "Menterjemahkan : " & List1.Text & " ==> ke dalam bahasa Inggris"
End Sub

Private Sub
Text1_DblClick()
Text2.Text = "Menterjemahkan : " & Text1.SelText & " ==> ke dalam bahasa Inggris"
End Sub

'---------------------------------------------------------------------------------
' Fungsi untuk Parse uraikan) kalimat ke dalam text dan masukan ke ListBox
'---------------------------------------------------------------------------------
Private Sub ParsingText(s As String, lst As ListBox)

Dim
strText As String
Dim
y() As String
Dim i As Integer
Dim b As String

lst.Clear
strText = s
strText = Replace(strText, " ", vbCrLf)
y = Split(strText, vbCrLf)

For i =
LBound(y) To UBound(y)
b = Trim(y(i))
If IsValidWord(b) Then
lst.AddItem y(i)
End If
Next

End Sub

'-------------------------------------------------------------------------------
' Fungsi untuk memfilter karakter yang tidak valid diterjemahkan
'-------------------------------------------------------------------------------
Private Function IsValidWord(s As String) As Boolean

Dim x As String
Dim z As String

z =
"= - , . % *" 'tambahkan karakter tidak valid untuk diterjemahkan disini
x = s
If
Len(x) = 0 Then Exit Function
If
InStr(1, z, s) > 0 Then Exit Function
IsValidWord = True

End Function

'-------------------------------------------------------------------------------
' == End All Of Code ==
'-------------------------------------------------------------------------------
Uji Coba:
Jalankan, copy sembarang text dan klik sembarang item yang terdapat pada ListBox, apabila berhasil maka gambarnya seperti yang ada di samping [ScreenShot]

Mas, saya mau bertanya, apakah ini sedang membuat software Kamus Bahasa Inggris atau sedang membuat Rencana Pelaksaan Pembelajaran (RPP)?