Rabu, 17 Oktober 2012

10 Hal Dasar Belajar Migrasi VB6 Ke VBNET

Berdasarkan pengalman saya, berikut ini saya tulis beberapa hal (penting) tentang belajar migrasi vb6 ke vbnet :

1.Index di VBNET selalu mulai dari 0, sedangkan VB6 ada yang dari 1 (contoh : listview.items), jadi jangan kaget klo nanti ada error :
"InvalidArgument=Value of '1' is not valid for 'index'. Parameter name: index"
maka dari itu anda harus mengubah sintak looping untuk additem listview, harus mulai dari 0

2.Jika anda mengubah nama object (rename), maka di VB6 anda harus mengubah ke sintak-nya juga apa
apa yang berkaitan dengan object itu, karena klo tidak anda akan mengalami error :
"Run-time error '424', Object required"
sedangkan di VBNET sekali anda me-rename object (termasuk form) pada jendela property, maka semua sintak yang berhubungan dengan object tersebut akan otomatis berubah/menyesuaikan.

3.Semua object yang mempunyai property Item (contoh listivew,combobox, listvox, dll) di VBNET selalu menggunakan property Item.Add, sedangkan VB6 ada yang Combo1.AddItem, ListView1.ListItems.Add, List1.AddItem , jadi di VBNET sudah sangat seragam dan terstruktur (mudah diingat)
4.Jika anda menggunakan Frame dan ingin menambahkan object2 lain kedalamnya, di VBNET tidak perlu Cut/Copy-Paste object ke frame itu seperti di VB6, cukup drag/seret saja object-nya ke dalam frame
5.Jika di VB6 anda melakukan add form (existing) misalnya dari folder lain (tidak 1 folder dengan project), maka jika anda cut/copy folder project anda dan jalankan di komputer lain atau anda cut/rename folder form yang di-add itu (yang bukan dalam 1 folde project), maka akan error :
"Path Not Found : '...\form_name.frm'--Continua Loading Project ?"
sedangkan di VBNET dia akan mengcopy kedalam 1 folder yang sama, bukan url pathnya melainkan formnya akan dicopy otomatis oleh VBNET kedalam folder project
6.Jika anda ingin me-remove form/module/class dll, di VB6 anda cukup remove saja, tetapi di VBNET ada tiga istilah : Exclude dan Include (bisa di remove dan add kembali dengan mudah) serta Delete (hapus ke Recycle Bin).
7.Ini merupakan kelanjutan dari Nomor 6, Perhatikan sintak VB6 berikut :
Private Sub Command1_Click()
End Sub
jika anda me-rename menjadi object menjadi Command2, maka sintak itu harus diubah menjadi :
Private Sub Command2_Click()
End Sub
sedangkan di VBNET anda harus INGAT Handles, contoh :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
jika anda me-rename menjadi object menjadi Command2, maka HANDLES akan berubah secara otomatis, tetapi TIDAK nama SUB-nya :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End Sub
Jadi jangan sampai terkecoh ya,,,
8.jika anda ingin memanggil fungsi (contoh) Command1_Click maka si VB6 anda cukup menulis seperti ini:
Call Command1_Click
tetapi di VBNET anda harus menulisnya seperti ini:
Call Button1_Click(Button1, New System.EventArgs)
9.Jika anda add object yang tidak terliat/visible-false seperti (timer,common dialog, menu, dll), di VB6 akan ikut masuk ke form, tetapi di VBNET akan terpisah dengan form sehingga kita tahu mana object yang visible dan tidak (lebih teratur)
10.VBNET menyediakan property .ToString pada semua object/methode/property/variable dari object, sehingga anda akan dengan mudah mengconvert dan mengetahui isi lengkap/detail-nya. contoh:
jika saya mengetik ListView1.ToString, maka hasilnya = "System.Windows.Forms.ListView, Items.Count: 1, Items[0]: ListViewItem: {ID}"
jika saya deklarasi dim nilai As Integer, maka saya bisa kombinasikan dengan string lain dengan cara : "Nilai Ke " + nilai.ToString + " Dari Total" 

11.Jika anda terbiasa dengan sintak SET di VB6, maka di VBNET tidak akan ada. Contoh  : "Set Con = New ADODB.Connection" atau "Set DataGrid1.DataSource = RecBarang" dan sebagainya, maka di VBNET anda tidak usah menggunakan SET, cukup dengan "con = New ADODB.Connection"

12.Jika di VB6 anda meggunakan sintak dibawah ini untuk clear object/textbox, contoh :
Dim iObject As Object
     For Each iObject In Me.Controls
             If TypeOf iObject Is TextBox Then
                iObject.Text = ""
            End If
   Next 
Maka jika di jalakan di VBNET Tidak akan ada masalah JIKA anda tidak menggunakan frame/panel/group/tabcontrol dan container lainnya. Kalau anda menempatkan TextBox itu pada salah satu container, maka textbox itu tidak bersih/clear karena di VBNET tidak mengecek/loop semua object secara global, tapi hanya cek/loop sebatas container-nya saja, jadi contohnya jika anda menempatkan textbox1 di sebuah frame dan textbox2 di panel dan textbox3 di form (langsung) maka sintak clear object nya seperti ini (VBNET) :
        Dim v_container() As Object = {Frame1, Panel1, Me}
        For i As Integer = 0 To v_container.Length - 1
            For Each obj As Object In v_container(i).Controls
                If TypeOf obj Is TextBox Then
                    obj.Text = ""
                End If
            Next
        Next

Tidak ada komentar:

Posting Komentar