Showing posts with label Project. Show all posts
Showing posts with label Project. Show all posts

Tuesday, May 29, 2012

Kamus Inggris - Fasilitas Pemindai Kosakata - Bagian ke-10

Kamus Inggris - Fasilitas Pemindai Kosakata merupakan kelanjutan dari bagian ke-9.
Pada bagian ini, kita akan melengkapi aplikasi software kamus dengan fasilitas pemindai kosakata. Dengan adanya fasilitas ini, maka pada saat kita menggerakan pointer mouse pada objek RichTextBox aplikasi akan secara otomatis mencari padanan kata tersebut. Ini tentu saja akan menghemat tangan Anda dari mengetikan kosakata di atas TextBox pencarian.

Tujuan pada Bagian ke-10
Mencari padanan kata secara otomatis dengan menggerakan pointer mouse di atas kata yang dicari.

Langkah-langkah
  • Tambahkan objek RichTextBox pada aplikasi dengan cara mengklik menu projcet >> Components, selanjutnya centanglah Microsoft Rich TextBox Control 6.0.
  • Hapuslah TextBox (Text1 yang terdapat pada frmMain) dan gantilah dengan objek RichTextBox
  • Ganti nama RichTextBox1 (nama default pada saat ditambahkan pada form) dengan Text1
  • Buat module baru dan beri nama modRichTextBox.
Kode-kode
  • Copy dan paste-kan kode ini pada module modRichTextBox (module yang baru dibuat)
  • Tambahkan variable baru strWordOver di bawah Option Explicit pada frmMain
  • Tambahkan kode di bawah pada frmMain:
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) 
strWordOver = RichWordOver(Text1, x, y)
If Trim(strWordOver) = "" Then Exit Sub
If
Text3.Text <> strWordOver Then
Text3.Text = strWordOver
End If
End Sub
Uji Coba
  • Compile dan jalankan melalui Windows Explorer
  • Copy sembarang text berbahasa Inggris
  • Gerakan pointer mouse pada RichTextBox (Text1) di atas kata yang dicari.
READ MORE - Kamus Inggris - Fasilitas Pemindai Kosakata - Bagian ke-10

Kamus Inggris Selesai - Bagian ke-11

Akhirnya, setelah kita berbicara panjang lebar mengenai membuat software Kamus Bahasa Inggris dari bagian ke-1 sampai bagian ke-10, tibalah saatnya untuk mem-package project Kamus Inggris yang telah kita buat. Dalam hal ini saya menggunakan Installer InnoSetup, sebuah tools installer yang dikembangkan oleh Jordan Russell.

Fitur-Fitur Kamus Inggris 1.0:

Keistimewaan:
  1. Menemukan kosakata dengan kecepatan tinggi.
  2. Auto Complete, user akan mengetahui dengan tepat kata yang sedang dicari, walaupun hanya mengetikan beberapa huruf.
  3. Pencarian otomatis, ini akan menghemat waktu Anda, tanpa harus mengetik seluruh kata secara sempurna.
  4. Popup Windows, menampilkan aplikasi ke depan tanpa harus mengklik taskbar, atau menghidupkan fasilitas Always On Top.
  5. Pemindai kosakata pada RichTextBox yang terdapat dalam aplikasi, Copy text dalam bahasa Inggris dan gerakan pointer mouse pada kosakata yang tidak diketahui artinya, maka secara otomatis aplikasi akan menemukan padanan katanya.
Kekurangan:
  1. Kosakata hanya berjumlah 23 ribu lebih. Untuk disebut memadai ia harus memiliki 50.000-an kosakata. Bagaimana mengatasi ini?
  2. Hanya dapat menterjemahkan Inggris ke Indonesia saja, tidak sebaliknya.
  3. Belum dilengkapi frase. Ini akan sangat menyulitkan dalam mencari padanan kata yang tepat.
  4. Terlampau sederhana, bahkan tidak memiliki label sama sekali.
  5. Tampilan yang belum bisa dikatakan enak dipandang.
  6. Dan masih banyak lagi, silakan Anda tambahkan saja kekurangan-kekurangannya.
Kekurangan dalam project/kode:
  1. Objek-objek masih dalam nama default, Misalnya Text1, seharusnya txtPencarian. Nama-nama default tersebut tentu saja akan membingungkan.
  2. Komponen hanya menggunakan komponen default VB, ini menyebabkan tampilannya tidak menarik.
  3. Dan lain-lain, Anda tambahkan saja kekurangan-kekurangannya.
Download: Kamus Inggris 1.0
READ MORE - Kamus Inggris Selesai - Bagian ke-11

Kamus Inggris - Merapikan Project - Bagian ke-5

Kamus Inggris - Merapikan Project merupakan kelanjutan dari bagian ke-4.
Mulai pada bagian yang ke-5 kita akan merapikan project telah dibuat. Yang dimaksud dengan merapikan project disini diantaranya: membuat folder-folder untuk form, module, class, ActiveX dan lain sebagainya.

Selain yang telah disebutkan di atas, biasakan pula meng-indent kode dengan baik, menulis variable, constanta dengan baik (menggunakan prefix standar untuk VB6) dalam hal ini mengacu pada Naming convention Untuk VB6.

Perlu diketahui, semua yang disebutkan tadi bukan merupakan keharusan, hanya sebaiknya dilakukan, Adapun tujuannya, agar project tersebut mudah dipelihara, diupdate dari versi 1.0 versi 2.0 dan selanjutnya, mudah dibaca alur logikanya, terutama jika suatu saat kita ingin mengupgradenya ke VB.NET.

Tujuan pada bagian ke-4
Merapikan project dengan membuat beberapa folder, yaitu: folder ActiveX (untuk menyimpan dll atau ocx), Form (untuk menyimpan form), Module (untuk menyimpan berbagai module), Resource (untuk menyimpan file manifest, sound, image, icon), Database (menyimpan file database kamus), Setup (untuk menyimpan hasil compile installer, disini yang akan digunakan adalah InnoSetup)

Langkah-langkah
  • Buka project Anda pada Windows Explorer, selanjutnya buatlah folder ActiveX, Form, Module, Resource, Database, Setup

  • Buka project Anda melalui Windows Explorer dengan cara mendobel klik prjKamus

  • Klik kanan frmKamus >> Save As dan simpanlah pada folder Form

  • Klik kanan modMain >> Save As dan simpanlah pada folder Module

  • Simpan file manifest (XP.manifest.res) pada folder Resource

  • Buka Windows Explorer, hapus seluruh file yang berada diluar folder yang telah kita buat, dan sisakan hanya dua yang tidak boleh dihapus yaitu prjKamus.vbp dan prjKamus.vbw

Kode-kode
Tidak Ada

Uji Coba
Double klik prjKamus.vbp yang terdapat dalam Windows Explorer, jika prosedur yang Anda tempuh benar maka ia tidak akan menampilkan pesan Error.

Catatan
Tidak Ada

Bersambung pada bagian ke-6 ...
READ MORE - Kamus Inggris - Merapikan Project - Bagian ke-5

Kamus Inggris - Fasilitas Popup Windows - Bagian ke-6

Yang dimaksud dengan Popup Windows disini adalah aplikasi yang dapat tampil paling depan. Modul Popup Windows ini diambil dari software Kamus Bahasa Arab. Inti dari modul popup ini hanyalah satu jajar kode API yaitu SetForegroundWindow.

Tujuan pada bagian ke-6
Menambahkan fasilitas Popup Windows

Langkah-langkah
Tambahkan satu modul, selanjutnya gantilah namanya menjadi modForeGround.
Gantilah kode di bawah menjadi:
    If s <> strFromClipboard Then 
ParsingText s, List1
strFromClipboard = s
Text1.Text = strFromClipboard
pSetForegroundWindow hwnd 'ini untuk memanggil aplikasi agar dapat tampil paling depan
End If
Kode diatas terdapat pada:
Private Sub Timer1_Timer() 
Seperti yang telah dijelaskan pada bagian ke-3.

Kode-kode
Option Explicit 

Public Declare Function
FindWindow Lib "user32" Alias "FindWindowA" ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function
AttachThreadInput Lib "user32" ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
Declare Function
GetForegroundWindow Lib "user32" ) As Long
Declare Function
GetWindowThreadProcessId Lib "user32" ByVal hwnd As Long, lpdwProcessId As Long) As Long
Declare Function
IsIconic Lib "user32" ByVal hwnd As Long) As Long
Declare Function
SetForegroundWindow Lib "user32" ByVal hwnd As Long) As Long
Declare Function
ShowWindow Lib "user32" ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Declare Function
BringWindowToTop Lib "user32" ByVal hwnd As Long) As Long

Public Const
SW_SHOW = 5
Public Const SW_RESTORE = 9
Public Const GW_OWNER = 4
Public Const GWL_HWNDPARENT = -8)
Public Const GWL_EXSTYLE = -20)
Public Const WS_EX_TOOLWINDOW = &H80
Public Const WS_EX_APPWINDOW = &H40000

Public Sub
pSetForegroundWindow(ByVal hwnd As Long)

Dim
lForeThreadID As Long
Dim
lThisThreadID As Long
Dim
lReturn As Long

If
hwnd <> GetForegroundWindow() Then
If
IsIconic(hwnd) Then
Call
ShowWindow(hwnd, SW_RESTORE)
Else
Call
ShowWindow(hwnd, SW_SHOW)
End If
lForeThreadID = GetWindowThreadProcessId(GetForegroundWindow, ByVal 0&)
lThisThreadID = GetWindowThreadProcessId(hwnd, ByVal 0&)
If lForeThreadID <> lThisThreadID Then
Call
AttachThreadInput(lForeThreadID, lThisThreadID, True)
lReturn = SetForegroundWindow(hwnd)
BringWindowToTop hwnd
Call AttachThreadInput(lForeThreadID, lThisThreadID, False)
Else
lReturn = SetForegroundWindow(hwnd)
BringWindowToTop hwnd
End If
End If

End Sub
Uji Coba
  • Compile terlebih dahulu projectnya
  • Jalankan aplikasi melalui Windows Explorer
  • Copy sembarang text, dari MSWord, Browser, dsb.
  • Jika prosedurnya benar, maka aplikasi tersebut akan tampil paling depan.

READ MORE - Kamus Inggris - Fasilitas Popup Windows - Bagian ke-6

Thursday, April 14, 2011

Kamus Inggris - Menambahkan Database - Bagian ke-7

Kamus Inggris - Menambahkan Database merupakan kelanjutan dari bagian ke-6.
Database kamus ini, kosakatanya berjumlah 23623 (dua puluh tiga ribu lebih). dalam format text sehingga bisa dengan mudah diakses dan ditambah kosakatanya. Database kamus ini diambil dari gKamus (Kamus Bahasa Inggris Indonesia Open Source). Beberapa modul/kode pada
bagian ke-7 ini diambil dari Putra VB (disitus miliknya Anda dapat belajar VB6 dan VB.Net). Untuk kedua Author situs tersebut saya ucapkan terima kasih. Selanjutnya ...

Pada bagian ke-8 kita akan menambahkan databasenya, dengan demikian project ini sudah bisa kita gunakan, dengan fitur bug disana-sini, sederhana, dan tampilan yang kurang enak dipandang (tentu saja, setidaknya untuk sementara), bagaimana mengenai kecepatan pencariannya? saya kira tidak perlu diragukan.

Tujuan pada bagian ke-
Menambahkan database, sehingga kamus ini sudah bisa kita gunakan.

Langkah-langkah
  • Download terlebih dahulu databasenya [Download Database]
  • Satukan file database (en-id.txt) ke dalam folder database
  • Buatlah module baru dan berinama modData
  • Tambahkan 1 TextBox (Text3) dan 1 ListBox (List2)
  • Tambahkan beberapa kode di bawah ini:
Kode-kode
'tambahkan kode di bawah ke dalam form frmMain 
Private Sub Form_Load()
BukaData App.Path & "\database\en-id.txt", List2
End Sub

Private Sub
List1_Click()
Text3.Text = List1.Text
End Sub

Private Sub
List2_Click()
If List2.ListIndex <> -1 Then
Text2.Text = Replace(DataEn(List2.ListIndex), vbTab, " = ")
End If
End Sub

Private Sub
Text1_DblClick()
Text3.Text = Trim(Text1.SelText)
End Sub

Private Sub
Text3_Change()
Dim i As Integer
If
Text3.Text = "" Then
List2.ListIndex = -1
Text2.Text = ""
Exit Sub
End If
i =
List2.ListIndex
If List2.Text = "" Then List2.ListIndex = i
Dim
retValue As Long
retValue = SendMessage(List2.hWnd, LB_FINDSTRING, -1, ByVal Text3.Text)
If retValue > -1 Then
List2.TopIndex = retValue
Else
List2.TopIndex = i
End If
List2.ListIndex = List2.TopIndex
End Sub

Kode di bawah ini masukan ke dalam module modData
Option Explicit 

Public Declare Function
SendMessage Lib "user32" Alias "SendMessageA" ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const
LB_ADDSTRING = &H180
Public Const LB_FINDSTRING = &H18F
Public Const LB_FINDSTRINGEXACT = &H1A2

Public
DataEn() As String
Public
LokasiData As String

Sub
BukaData(FileName As String, lst As ListBox)
Dim Temp As String
Dim i As Long
lst.Parent.Visible = False
Open
FileName For Binary As #1
Temp = Space$(LOF(1))
Get #1, , Temp
Close #1

Temp = Replace(Temp, vbCrLf & "" & vbCrLf, vbCrLf)
DataEn = Split(Temp, vbCrLf)

lst.Clear

For i =
0 To UBound(DataEn) - 1
SendMessage lst.hWnd, LB_ADDSTRING, 0, ByVal CStr(Split(DataEn(i), vbTab)(0))
Next
lst.ListIndex = 0
lst.Parent.Visible = True
End Sub

Uji Coba
  • Compile terlebih dahulu projectnya
  • Jalankan melalui Windows Explorer
  • Ketikan kosakata inggris pada TextBox pencarian (Text3), Anda lihat sekarang kamus ini dapat mencari kosakata dengan sangat cepatnya
Catatan
Pada bagian download terdapat file .exe, sebagai perbandingan saja.
Sampai disini apakah ada pertanyaan? sepertinya tidak ada, maka kita lanjutkan pada bagian ke-8
READ MORE - Kamus Inggris - Menambahkan Database - Bagian ke-7

Kamus Inggris - Splash Screen, Apakah Kegunaannya - Bagian 8

Kamus Inggris - Splash Screen, Apakah Kegunaannya merupakan kelanjutan dari bagian ke-7.
Dengan ditambahkannya database, maka pada saat dijalankan aplikasi akan memiliki jeda (Time Lag). Hal ini disebabkan aplikasi tersebut harus me-load terlebih dahulu kosakatanya, disinilah kita akan membutuhkan apa yang biasa disebut dalam pemrograman dengan Splash Screen/Form. Splash screen berguna untuk memberitahukan user bahwa aplikasi yang kita buat baik-baik saja, bukan hang. Selain itu splash screen bisa dianggap sebagai ciri khas dari aplikasi yang Anda buat, mengenai hal ini kreatifitas Anda sangat diperlukan.

Tujuan pada Bagian ke-8
Cara menampilkan splash screen dengan benar

Langkah-langkah
  • Klik menu project >> Add Form
  • Pilih Splash Screen, selanjutnya klik OK
  • Tambahkan (ganti) kode yang terdapat dalam modMain, tepat kode yang berada pada method Sub Main()
Kode-kode
Pada bagian modMain seperti yang telah disebutkan pada bagian ke-4 gantilah kode di bawah ini:
Sub Main()   
InitCommonControls
frmMain.Show
End Sub
sehingga menjadi:
Sub Main()   
InitCommonControls 'XP Style inisialisasi
frmSplash.Show 'tampilkan splash form terlebih dahulu
frmSplash.Refresh 'refresh agar tampilannya benar
Load frmMain 'load seluruh kode dalam tampilan utama
frmMain.Show 'tampilkan form utama
Unload frmSplash 'tutup splash form
End Sub
Uji Coba
  • Compile terlebih dahulu
  • Jalankan melalui Windows Explorer
  • Sekarang aplikasi akan menampilkan splash screen terlebih dahulu
READ MORE - Kamus Inggris - Splash Screen, Apakah Kegunaannya - Bagian 8

Kamus Inggris - Advance Form Center - Bagian ke-9

Kamus Inggris - Advance Form Center merupakan kelanjutan dari bagian ke-8.
Pada bagian ke-9 ini kita akan menambahkan modul form center dan module registry. Module form center berguna untuk menyimpan form di tengah layar, dalam hal ini kita akan menggunakan advance form center. Diberi kata advance, karena ia memiliki beberapa keistimewaan, yaitu:
  • Menampilkan form di tengah layar hanya untuk pertama kali saja,
  • Pada kali kedua ditampilkan dan seterusnya, posisi form akan diambil dari nilai yang terdapat pada registry
  • Tidak terpengaruh oleh tingginya taskbar, sehingga ia akan berada benar-benar di tengah layar.
Module registry selain digunakan untuk module form center, ia akan digunakan juga dalam setting-setting, opsi, dan konfigurasi aplikasi ini.

Tujuan pada Bagian ke-9
  • Menambahkan modul form center agar aplikasi ditampilkan tepat di tengah layar.
  • Menambahkan modul registry untuk keperluan setting/konfigurasi, dan opsi.
Langkah-langkah
  • Buatlah modul baru dan beri nama modForm, copy dan pastekan kode ini.
  • Buatlah modul baru dan beri nama modRegistry, copy dan pastekan kode ini.
Kode-kode
Gantilah kode di bawah ini (terdapat pada frmMain):
Private Sub Form_Load()  
BukaData App.Path & "\database\en-id.txt", List2
End Sub
Sehingga menjadi:
Private Sub Form_Load() 
GetPositionsFromRegistry Me 'ini untuk posisi form yang diambil dari registry
BukaData App.Path & "\database\en-id.txt", List2
End Sub
Tambahkan kode di bawah ini pada frmMain:
Private Sub Form_Unload(Cancel As Integer) 
SavePositionsInRegistry Me ' menyimpan posisi ke dalam registry
End Sub
Uji Coba
  • Compile terlebih dahulul projectnya, Jalankan melalui Windows Explorer. Pada saat pertama kali dijalankan aplikasi akan berada tepat di tengah layar. Selanjutnya geser (drag) aplikasi kamus dan tutuplah, buka kembali, maka sekarang ia akan tampil seperti pada posisi terakhir kali ia ditutup.
Sampai disini mungkin tidak ada pertanyaan, baiklah terima kasih. Kita lanjutkan pada bagian yang ke-10.
READ MORE - Kamus Inggris - Advance Form Center - Bagian ke-9

Tuesday, March 22, 2011

Kamus Inggris - Tutorial Cara Membuatnya

Agaknya prosedur-prosedur fungsi yang saya kumpulkan sudah lumayan walaupun tidak bisa disebut banyak, daripada prosedur-prosedur tersebut kurang bermanfaat dan menganggur, lebih baik kita gunakan untuk merakit software-software kecil. Lalu darimana kita memulainya...

Beberapa hal...
Prosedur-prosesedur fungsi yang telah saya tuliskan sebagian kecil berasal dari copy paste (tanpa modifikasi), sebagian kecil ide/dibuat sendiri, dan sebagian besar merupakan hasil copy yang selanjutnya dimodikasi kemudian dijalankan, untuk memastikan apakah ia bisa berjalan dengan baik. Prosedur-prosedur yang telah dimodifiksi tersebut diusahakan agar tidak memiliki dependency (ketergantungan) secara langsung terhadap objek maupun variable-variable yang bersifat publik, tujuan utamanya adalah agar memiliki sifat mudah digunakan kembali, mudah dicopypastekan, mudah di-encapsulate dalam bentuk dll atau ocx. Disamping itu ia akan menjadi prosedur dari pemrograman modular yang baik (jika tidak dijadikan dll atau ocx). Dengan demikian, kita dapat memisahkan bagian demi bagian dengan mudah, dan terhindar dari kerumitan kode karena melihatnya secara keseluruhan.

Untuk siapa tutorial ini?
Pemula, untuk pemula saja, karena saya pun seorang pemula. Jadi, jika seorang pemula bingung melihat kode, kemungkinan saya pun sama, jadi kita sama-sama belajar.

Selanjutnya...
Untuk membuat software-software kecil, ada beberepa tools yang harus kita kumpulkan dan miliki. Beberapa tools tersebut diantaranya memang harus dimiliki seperti InnoSetup (tools installer) dan sebagainya, dan sebagian lagi optional, hanya sebagai pelengkap untuk memudahkan dan mempercepat pekerjaan seperti MZ-Tools dan sebagainya (banyak). kita bahas saja sambil berjalan.

Software kecil apa yang akan kita buat?
Kamus Inggris Indonesia sederhana, karena yang tidak sederhana sudah banyak bertebaran di internet, walaupun sederhana, tetapi saya akan membagikannya menjadi beberapa puluh bagian (part).

Darimana databasenya?
Kebetulan saya memiliki beberapa database kamus inggris berasal dari software-software open source salah satunya dari gkamus, Kambing (bukan hewan) singkatan dari Kamus Bahasa Indonesia Inggris, dan lain sebagainya, terdiri dari puluhan ribu kosakata. Jika Anda ingin memilikinya, silakan kunjungi situsnya.
READ MORE - Kamus Inggris - Tutorial Cara Membuatnya

Monday, March 14, 2011

Kamus Inggris - Membuat Project Baru - Bagian Ke-2

Kamus Inggris - Membuat Project Baru merupakan kelanjutan dari Bagian ke-1.
Selanjutnya untuk membuat software menggunakan VB6, yang harus kita lakukan adalah membuat project baru.

Tujuan:
  • Membuat project baru menggunakan VB6
  • Menambahkan kemampuan copy text yang berasal dari Clipboard
Langkah-langkah:
  • Buat project baru
  • Tambahkan 2 TextBox, 1 ListBox, 1 Timer
  • Rubahlah property Interval pada Timer1 = 1
  • Ganti nama Project1 menjadi prjKamus
  • Ganti nama Form1 menjadi frmMain
  • Modifikasi ukuran-ukurannya, sehingga terlihat seperti gambar di bawah.
  • Simpanlah dalam folder, beri nama folder itu dengan Project Kamus Inggris
Kode-kode:
'simpan (copy dan pastekan) kode di bawah ini dalam frmMain 
Option Explicit

Dim
strFromClipboard As String

Private Sub
Timer1_Timer()
Dim s As String
s =
Clipboard.GetText
If s <> strFromClipboard Then
strFromClipboard = s
Text1.Text = strFromClipboard
End If
End Sub
Uji Coba:
  • Jalankan project yang baru kita buat dengan cara menekan tombol F5 atau mengklik tombol start yang terdapat pada toolbar VB6.
  • Copy sembarang text, maka text yang telah dicopy tadi secara otomatis akan masuk ke dalam Text1


READ MORE - Kamus Inggris - Membuat Project Baru - Bagian Ke-2

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)?
READ MORE - Kamus Inggris - Handle Error 521 dan Parse Text - Bagian 3

Kamus Inggris - XP Style Manifest Dalam EXE - Bagian Ke-4

Kamus Inggris - XP Style Manifest Dalam EXE merupakan sambungan dari bagian ke-3.
Agar aplikasi yang kita buat memiliki theme XP style, maka cara yang termudah adalah menambahkan file manifest. Di antara beberapa cara menambahkan file manifest, maka menambahkannya langsung melalui file exe dianggap cara yang paling elegant, mengapa demikian? karena user tidak akan pernah melihat file manifest tersebut, baik file manifest dengan atribute normal, maupun manifest dengan atribute hidden (hidden file).

Tujuan pada bagian ke-4:
  • Menanam file manifest ke dalam exe, agar aplikasi memiliki theme XP Style.
  • Menjadikan Sub Main sebagai Startup Object
Langkah-langkah:
  • Buatlah manifest resource, jika tidak mau repot membuat manifest resource, Anda bisa mendownloadnya di sini.
  • Pada aplikasi VB6, klik Project >> Add File...
  • Tambahkan manifest resource file yang telah Anda buat atau Anda download tadi.
  • Buat module baru dan beri nama modMain (mod adalah prefix untuk module)
  • Tambahkan fungsi API InitCommonControls (akan dibahas pada bagian kode-kode)
  • Jadikan Sub Main() sebagai Startup Object
Kode-kode:
'simpan kode di bawah pada module modMain 
Option Explicit

Public Declare Sub
InitCommonControls Lib "Comctl32" )

Sub
Main()
InitCommonControls
frmMain.Show
End Sub
Uji Coba:
  • Compile Project (Klik File >> Make Kamus Inggris.exe)
  • Jalankan Kamus Inggris.exe melalui Windows Explorer, sekarang Anda lihat bahwa Kamus Inggris.exe memiliki theme XP Style.
Catatan:
Selain untuk aplikasi ini, menanam resource manifest juga bisa digunakan untuk aplikasi-aplikasi yang dibuat menggunakan Visual Basic 6.0 agar memiliki theme XP Style. Semoga bermanfaat.
READ MORE - Kamus Inggris - XP Style Manifest Dalam EXE - Bagian Ke-4

Saturday, April 17, 2010

Menampilkan Kata Yang Berada Di atas Pointer Mouse - VB6

Ini merupakan fungsi untuk menampilkan kata yang berada tepat di bawah pointer mouse. Fungsi ini hanya berjalan pada object RichTextBox. Bagaimana implementasi dari kodenya? bisa Anda perhatikan di bawah:
Option Explicit 

Private Const
EM_CHARFROMPOS& = &HD7

Private Type
POINTAPI
x As Long
y As Long
End Type

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

' Return the word the mouse is over.
Public Function RichWordOver(rch As RichTextBox, x As Single, y As Single) As String

Dim pt As
POINTAPI
Dim Pos As Integer
Dim
start_pos As Integer
Dim
end_pos As Integer
Dim ch As String
Dim
txt As String
Dim
txtlen As Integer

' Convert the position to pixels.
pt.x = x \ Screen.TwipsPerPixelX
pt.y = y \ Screen.TwipsPerPixelY

' Get the character number
Pos = SendMessage(rch.hWnd, EM_CHARFROMPOS, 0&, pt)
If Pos <= 0 Then Exit Function

' Find the start of the word.
txt = rch.Text
For start_pos = Pos To 1 Step -1
ch = Mid$(rch.Text, start_pos, 1)
' Allow digits, letters, and underscores.
If Not _
ch >= "0" And ch <= "9") Or _
ch >= "a" And ch <= "z") Or _
ch >= "A" And ch <= "Z") Or _
ch = "_" _
) Then Exit For
Next
start_pos
start_pos = start_pos + 1

' Find the end of the word.
txtlen = Len(txt)
For end_pos = Pos To txtlen
ch = Mid$(txt, end_pos, 1)
' Allow digits, letters, and underscores.
If Not _
ch >= "0" And ch <= "9") Or _
ch >= "a" And ch <= "z") Or _
ch >= "A" And ch <= "Z") Or _
ch = "_" _
) Then Exit For
Next
end_pos
end_pos = end_pos - 1

If
start_pos <= end_pos Then RichWordOver = Mid$(txt, start_pos, end_pos - start_pos + 1)
End Function
Contoh penggunaanya:
Option Explicit 

Dim
strWordOver As String

Private Sub
RichTextBox1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
strWordOver = RichWordOver(RichTextBox1, x, y)
If Trim(strWordOver) = "" Then Exit Sub
If
Text1.Text <> strWordOver Then
Text1.Text = strWordOver
End If
End Sub
READ MORE - Menampilkan Kata Yang Berada Di atas Pointer Mouse - VB6

Wednesday, April 14, 2010

Advance Form Center - Bagian Dua

Advance form center - Ini merupakan fungsi untuk menyimpan form di tengah layar, adapun ditambah kata advance, karena ia memiliki beberapa keunggulan, yaitu:menjalankan form dan menempatkannya di tengah layar, ini hanya dilakukan sekali pada saat ia ditampilkan pertama kali, setelah itu form akan mengikuti nilai yang ada pada registry.
'simpan kode di bawah pada module 
Option Explicit

Private Declare Function
GetSystemMetrics Lib "user32" ByVal nIndex As Long) As Long
Private Const
SM_CXFULLSCREEN = 16
Private Const SM_CYFULLSCREEN = 17

Private Const
strKey As String = "HKEY_CURRENT_USER\Software\"

Public Function
SavePositionsInRegistry(frm As Form)

If
frm.WindowState = vbMaximized Or frm.WindowState = vbMinimized Then Exit Function

Dim
KeyReg As String, k As String

KeyReg = strKey & App.Title & "\" & frm.Name & "\"
RegWrite KeyReg & "FormLeft", frm.Left
RegWrite KeyReg & "FormTop", frm.Top
RegWrite KeyReg & "FormWidth", frm.Width
RegWrite KeyReg & "FormHeight", frm.Height

End Function

Public Function
GetPositionsFromRegistry(frm As Form)

If
frm.WindowState = vbMaximized Or frm.WindowState = vbMinimized Then Exit Function

Dim
KeyReg As String
Dim
ileft, itop, iwidth, iheight
Dim lCenterLeft As Long, lCenterTop As Long

GetFormCenter frm, lCenterLeft, lCenterTop
KeyReg = strKey & App.Title & "\" & frm.Name & "\"

ileft = IIf(IsEmpty(RegRead(KeyReg & "FormLeft")), lCenterLeft, RegRead(KeyReg & "FormLeft"))
itop = IIf(IsEmpty(RegRead(KeyReg & "FormTop")), lCenterTop, RegRead(KeyReg & "FormTop"))
iwidth = IIf(IsEmpty(RegRead(KeyReg & "FormWidth")), frm.Width, RegRead(KeyReg & "FormWidth"))
iheight = IIf(IsEmpty(RegRead(KeyReg & "FormHeight")), frm.Height, RegRead(KeyReg & "FormHeight"))

frm.Move ileft, itop, iwidth, iheight

End Function

Private Function
GetFormCenter(frm As Form, lLeft As Long, lTop As Long)
With frm
lLeft = Screen.TwipsPerPixelX * GetSystemMetrics(SM_CXFULLSCREEN) / 2)) - .Width / 2)
lTop = Screen.TwipsPerPixelY * GetSystemMetrics(SM_CYFULLSCREEN) / 2)) - .Height / 2)
End With
End Function
READ MORE - Advance Form Center - Bagian Dua