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
- Singkat saja, ganti seluruh kode yang terdapat pada bagian ke-1 (Error 521) dengan kode yang terdapat pada bagian kode-kode.
Option ExplicitUji Coba:
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 ==
'-------------------------------------------------------------------------------
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)?