Senin, 26 April 2010

Tips Visual Basic: Menyimpan dan Mengambil Setting Aplikasi di Registry Windows

 
Setiap aplikasi/program memiliki setting atau konfigurasi yang berhubungan dengan aplikasi itu sendiri, seperti password untuk masuk ke aplikasi, ukuran/size dari form, dan lain-lain. Setting-setting tersebut harus disimpan ke dalam tempat penyimpanan sementara agar bisa diambil kembali. Biasanya setting aplikasi disimpan di tiga tempat, yaitu pada file berekstensi .ini yang terletak di dalam folder yang sama dengan file program, pada database milik program, atau bisa juga disimpan di registry milik Windows. Kali ini, kita akan membahas cara menyimpan dan mengambil setting di registry Windows.

Visual Basic telah menyediakan dua buah fungsi untuk menyimpan dan mengambil data (konfigurasi) di registry, yaitu:

Untuk mengambil data dari registry:

GetSetting(AppName As String, Section As String, Key As String, [Default]) As String

Keterangan:
AppName = nama aplikasi anda.
Section = bagian atau bisa disebut sebagai folder
Key = nama setting
Default = nilai kembalian jika setting tidak ditemukan. Ini bisa dikosongkan.

Untuk menyimpan data ke registry:

SaveSetting(AppName As String, Section As String, Key As String, Setting As String)

Keterangan:
AppName = nama aplikasi anda.
Section = bagian atau bisa disebut sebagai folder
Key = nama setting
Setting = nilai dari setting


Posisi Data di Registry


Posisi data yang disimpan di registry jika menggunakan fungsi-fungsi di atas adalah tersimpan di:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings


Contoh Penggunaan

Berikut ini contoh pengunaan fungsi di atas. Di sini kita akan membuat program yang menyimpan posisi form di layar (ke dalam registry) saat program tersebut ditutup. Kemudian saat program dijalankan kembali, maka form akan dimunculkan ke posisi yang sama saat program ditutup.
Instruksi: Buat program berisi sebuah Form. Kode-kodenya sebagai berikut:

Option Explicit

Private Sub Form_Load()
    Dim X As String
  
    'ambil posisi Left dari Registry
    X = GetSetting("Latihan Registry VB", "form", "Left", "-")
    If X <> "-" Then Me.Left = CInt(X)
   
    'ambil posisi Top 
dari Registry
    X = GetSetting("Latihan Registry VB", "form", "Top", "-")
    If X <> "-" Then Me.Top = CInt(X)
   
End Sub

Private Sub Form_Unload(Cancel As Integer)
    'simpan posisi Left dan Top dari form ke Registry
    SaveSetting "Latihan Registry VB", "
form", "Left", Me.Left
    SaveSetting "Latihan Registry VB", "
form", "Top", Me.Top
   
End Sub
 

Keterangan:
Dari contoh di atas bisa dilihat kita menggunakan dua buah event milik Form, yaitu event Load dan event Unload. Event Load terjadi saat program mulai dijalankan (tetapi Form belum muncul). Sedangkan event Unload terjadi saat program ditutup.
Untuk mengetes contoh diatas, pertama jalankan programnya, lalu pindahkan form ke posisi mana saja di layar monitor anda. Lalu tutup program tersebut. Setelah itu, jalankan kembali program itu dan posisi form akan berada pada posisi saat program ditutup tadi.

Setelah menjalankan contoh di atas, mungkin anda ingin melihat dimana setting yang tersimpan di registry. Caranya: bukalah program Registry Editor (Klik tombol Start, lalu Run. Kemudian ketikkan regedit, lalu ENTER). Lalu bukalah path registry berikut:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings

Nanti akan terlihat kurang lebih seperti ini:

registry windows visual basic
                   

Artikel Lain Yang Berkaitan:

43 komentar:

  1. kak ,kalau untuk menyimpan sebuah command button gimana?
    contohnya saya membuat setting "Matikan Command button 1"
    setelah kita tekan "Matikan Command button 1" kan otomatis command button 1 mati,lalu kita keluar dari aplikasi nya lalu kita masuk lagi dan command button nya harus mati
    gimana tuh caranya ?
    viandwicyber@yahoo.com

    BalasHapus
    Balasan
    1. Halo Vian, mungkin yang Vian maksud 'matikan tombol' sama dengan 'disabled'. Caranya kurang lebih sbb:

      - Saat tombol diklik, ada dua proses terjadi: 1. tombol dibuat jadi disabled. 2. simpan ke registry bahwa status tombol adalah disabled.
      - Saat program mulai dijalankan, yaitu saat even 'Form Load', ambil kembali status tombol dari registry lalu terapkan ke tombol tersebut.

      Kira-kira scriptnya seperti begini (maaf di laptop saya tdk terinstall vb) :

      Private Sub CommandButton1_Click()
      CommandButton1.Enabled = false
      SaveSetting "Nama program", "tombol1", "enable", 0
      End Sub

      Private Sub Form_Load()
      Dim X As String
      X = GetSetting("Nama program", "tombol1", "enable", "1")
      If x = "1" then
      CommandButton1.Enabled = true
      Else
      CommandButton1.Enabled = false
      End if
      End Sub

      Hapus
  2. kk plsss help me
    kalo saya ingin setting save pada combo gimana

    artikel doatas kan command dan form
    nah klo di combo gimana apakah
    savesetting app.exename, "options", "bahasa", combo.text ???? apa combo.itemdata ???

    x_X plssss ka help me
    dah panas nih pala
    mohon contoh codinganya yah kk

    BalasHapus
    Balasan
    1. Halo Rizki, ini contoh codingnya, tapi sekedar info, saya sudah lama tdk buka vb, dan dulunya vb yg saya pakai adalah vb6. Jadi mungkin codingnya perlu disesuaikan dgn versi vb yg Rizki pakai saat ini:

      Disini nilai dari combobox saya gunakan adalah nilai indexnya (SelectedIndex).
      Kalau tdk berfungsi, boleh coba pakai 'combobox.SelectedItem' atau 'combobox.Text'.

      Private Sub Form_Unload(Cancel As Integer)
      SaveSetting "Nama Program", "comboBox1", "nilai", comboBox1.SelectedIndex
      End Sub

      Private Sub Form_Load()
      Dim X As String
      X = GetSetting("Nama Program", "comboBox1", "nilai", "-")
      If X == "-" Then
      comboBox1.SelectedIndex = 0
      Else
      comboBox1.SelectedIndex = CInt(X)
      EndIf
      End Sub

      Hapus
  3. makasih nih Sebelumnya nanti ane cba
    namun
    masih kurang fahan tentang

    GetSetting(AppName As String, Section AsString, Key As String, [Default]) As String
    Keterangan:AppName = nama aplikasi
    # nama aplikasi kita contoh semacam project 1 ( saat kita baru membuat projet ) atau pas pada kita jadikan exe ??


    Section = bagian atau bisa disebut sebagai folder
    # letak dimana kita menaruh project / exe. nya


    Key = nama setting
    # tuh pada regitrinya ??

    Default = nilai kembalian jika setting tidak ditemukan. Ini bisa dikosongkan.

    klo bisa tolong gan masih newbi

    Apaakh Ini menggunakan moddule ??

    BalasHapus
    Balasan
    1. Halo Rizki, mudah2an jawaban ini memuaskan.

      AppName bagusnya adalah nama project, tapi sebenarnya bisa bebas. Bisa nama title form, atau nama file exe.

      Section = bagian dari aplikasi. bisa nama form (semua setting yg ada di sebuah form), atau yg lainnya. Tergantung dari kita mengatur dan mengelompokkan semua setting yg ada.

      Key = nama variabel setting. mirip seperti variabel biasa seperti :
      Dim S As String
      S = "tes"
      S adalah key-nya. "tes" adalah value-nya.

      Perintah GetSetting dan SaveSetting bisa dipakai dimana saja, bisa didalam form, module, atau class.

      Hapus
  4. bug pada = clnt (x)

    ntuh combo1 atau combobox1 yg bener yg mana ???

    BalasHapus
    Balasan
    1. - nama combobox disesuakan dgn yg digunakan.
      - cInt ganti dgn: Int32.TryParse

      Dim i As Integer
      Int32.TryParse(X, i)
      comboBox1.SelectedIndex = i

      Hapus
    2. ane dah sukses pada saat saveserting namun pas getnya gak mau ngeload dri regist


      ok ok gan , namu hehhe sorry nih , arti dri clnt itu apa yah ,asing soalnya
      and int.tryparse itu apa ???

      sebelumnya makasih arsi (y)
      ada gmail gak ??

      Hapus
  5. ane dah sukses pada saat saveserting namun pas getnya gak mau ngeload dri regist


    ok ok gan , namu hehhe sorry nih , arti dri clnt itu apa yah ,asing soalnya
    and int.tryparse itu apa ???

    sebelumnya makasih arsi (y)
    ada gmail gak ??

    BalasHapus
  6. gan int32 tuh jga debug contoh project aja gan korim ke rizkiadityavt@gmail.com

    ini vb 6.0 kan

    BalasHapus
    Balasan
    1. sekarang saya pakai visual basic 2010 express -- gratis 100% !!!
      jadi tdk perlu pakai bajakan.

      Hapus
  7. ane masalahnya cman pas getsetting . apa mungkin salah di situ ( "-" ) ??

    BalasHapus
    Balasan
    1. bisa paste kodenya dan juga informasi tentang errornya gan.

      Hapus
  8. Dim x As String


    Private Sub Form_Load()


    x = GetSetting("latihan", "form", "combo", "-")
    If x = "-" Then
    Combo1.Text = 0
    Else
    Combo1.Text = CInt(x)
    End If
    End Sub
    Private Sub form_unload(cancel As Integer)
    SaveSetting "latihan", "form", "combo", Combo1.Text
    End Sub

    BalasHapus
  9. Option Explicit
    Dim x As String


    Private Sub Form_Load()


    x = GetSetting("latihan", "form", "combo", "-")
    If x = "-" Then
    Combo1.Text = 0
    Else
    Combo1.Text = CInt(x) ' =============== Eror Di sini
    End If
    End Sub
    Private Sub form_unload(cancel As Integer)
    SaveSetting "latihan", "form", "combo", Combo1.Text
    End Sub

    BalasHapus
    Balasan
    1. ini saya sdh coba, mdah2an sesuai:

      Private Sub Form_Load()
         Dim X As String
         X = GetSetting("latihan", "form", "combo", "-")
         If X = "-" Then
            Combo1.SelectedIndex = 0
         Else
            Combo1.Text = X
         End If
      End Sub

      Private Sub form_unload(cancel As Integer)
         SaveSetting("latihan", "form", "combo", Combo1.Text)
      End Sub

      Hapus
    2. thankssssssssssssssssssssssssssssss

      gan Work nih
      Tpi sempet bug karena program ane gak ada selectindex ane make text

      thanksssssssssss yah gannnnnnnn

      Hapus
    3. kira kira tuh kodingan ane salah dimananya ??
      Ane subscribe nanti dah gan

      Hapus
  10. gini aja Gan Niat ane lagi bikin software
    nah ane butuh pengaturan pastinya
    nah ane bingung untuk menyimpan setiingan itu

    APA CUMAN INI UNTUK MENYIMPAN FORM DI VB
    ex mau simpan text , option , combo dll

    BalasHapus
    Balasan
    1. setahu saya Gan, ini cara yg paling mudah dan praktis menyimpan berbagai setting didalam program/form. Cara lain: menyimpan kedalam file berekstensi (.INI) lebih rumit lagi karena menggunakan fungsi API. Apalagi kalau disimpan ke database, itu lebih panjang lagi kodenya !!! :-)

      Hapus
  11. owh ya gan satu lagi bisa gak program vb seperti dxdiag yg membaca ram , hardisk windows
    ada gak ??

    BalasHapus
    Balasan
    1. Semua kodenya bisa didapat dgn mudah. cukup lewat google.
      Contoh: untuk membaca ram, masukkan kata kunci ke google : visual basic get ram

      Hapus
  12. tpi gan sebelumnya makasih nih , namun apakah bisa letak di regist bisa di ubah ( selain pada regist vb and vba program setting ??

    BalasHapus
  13. tpi gan sebelumnya makasih nih , namun apakah bisa letak di regist bisa di ubah ( selain pada regist vb and vba program setting ??

    BalasHapus
    Balasan
    1. Kalau menggunakan fungsi "GetSetting" dan "SaveSetting", letaknya otomatis ada di vb and vba program setting.

      Kalau ingin menyimpan/mengambil setting di tempat lain di dalam registry, kodenya lumayan panjang dan rumit. contohnya bisa dilihat di url ini:
      https://support.microsoft.com/en-us/kb/145679

      Hapus
  14. jika text1 sama sajakan cman ganti caption1 diganti dgn text1 kan ??

    BalasHapus
  15. nah satu lagi nih gak sorry klo gak repot klo yg image1 tuh gmana

    BalasHapus
    Balasan
    1. mungkin PictureBox ya? Kalau tdk salah PictureBox bisa langsung ditentukan gambarnya dari jendela properties. Saat loading form, akan muncul dgn sendirinya. kecuali kalau filenya diubah lewat kode.

      PictureBox1.Picture = LoadPicture(App.Path & "\gambar.jpg")
      ..atau..
      PictureBox1.Image = System.Drawing.Bitmap.FromFile( _
      My.Application.Info.DirectoryPath & "\gambar.jpg")

      Hapus
  16. ok gan masih bisa diakalin dengan cara agan pake url dituju ke text and txt tsb yg ane save thanks

    klo kita bikin form terlalu banyak timer and misalkan ada windows media player tuh ada pengaruhnya gak ??

    BalasHapus
  17. harus dites Gan, dilihat apa berat atau tidak jalannya.

    BalasHapus
  18. cara test nya gmana dirun gtu ??/ apa harus dijadiin exe ???

    SORRY GAN KLO BIKIN SPAM

    BalasHapus
    Balasan
    1. boleh di-build (exe). tapi kalau dirun trus jalannya ringan, berarti lancar-lancar saja.

      Hapus
  19. Kalau penggunaan dll yg disediakan vb 6 / net tuh untuk apa yah ??

    BalasHapus
    Balasan
    1. halo, dll dipakai sama programmer yg sdh berpengalaman. dll isinya kumpulan fungsi-fungsi siap pakai, supaya saat membuat program/project lain, kita tinggal memanfaatkan fungsi yg ada didalamnya tanpa perlu membuatnya dari awal lagi. jadi program bisa lebih cepat selesai.
      fungsi dll yg lain supaya mudah mengupgrade program tanpa memperbarui keseluruhan program. contohnya antivirus, selalu harus diupdate baik database virusnya maupun engine (berisi file2 dll dan lainnya utk mendeteksi virus).
      kira2 begitu. lebih jelasnya bisa cari di google banyak penjelasannya :)

      Hapus
    2. Nah kebetulan tuh gan ane dah buat , hosting + server namun pas updaternya yg terbaru harus buat ulang /ada cara lain
      Mohon Bantuannya Yah

      Hapus
  20. Mass tolong ya....
    Cara mematikan funsi tombol window,alt tab control esc dengan vb itu gmn mas. Apakah memakai savesetting juga... Minta solusinya ya mas.... Thanks....

    BalasHapus
    Balasan
    1. coba mas lihat di url ini:

      http://www.codeproject.com/Questions/438722/Disable-Control-keys-and-windows-key

      btw, mas mau buat program apa ya? kok sampai harus disable tombol windows dll.

      Hapus
  21. permisi gan, boleh numpang tanya??

    BalasHapus
  22. bagaimana cara membuat file txt yang sudah tersimpan oleh vb itu bisa enter, yang saya coba ini datanya sejajar trus. yang saya inginkan data yang tersimpan pada file txt ini bisa rapi dan ada enternya gitu, jadi runtut kebawah.
    terima kasih gan

    BalasHapus
    Balasan
    1. mungkin maksud agan textbox bisa lebih dari 1 baris jadi ada enternya. kalau itu yg agan maksud, klik textboxnya lalu cari property "Multiline". setel menjadi true.
      property lain yg juga bisa diterapkan: 'WordWrap' untuk mengatur supaya paragraf bisa ditampilkan semua dan 'Scrollbars' untuk memunculkan scrollbar vertikal dan horizontal.

      Hapus
  23. gan gmna caranya agar text di textbox tidak hilang ketika aplikasi nya dikeluarkan/dimatikan

    BalasHapus
    Balasan
    1. kurang lebih sama dengan contoh penggunaan di atas, hanya saja perintah menyimpan text (SaveSetting) diletakkan di event keypress atau keydown dari textbox. Jadi setiap selesai mengetikkan huruf akan langsung tersimpan, dan saat load aplikasi akan mengambil teks tersimpan dan meletakkannya kembali ke dalam textbox. kira2 seperti itu alur programnya :)

      Hapus