Lingkungan Pemrograman Visual (LPV)

Dimulai oleh Èxsharaèn, 06 April 2008, 12:23:27

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

Èxsharaèn

#15
Nah, kadang-kadang aplikasi kita cukup kompleks sehingga kita perlu lebih dari satu form. Seperti pertanyaan stash, suatu saat kita perlu memanggil form lain dari suatu form. Bagaimana caranya?

Ini agak beda dengan VB 6 dan VB setelahnya (.NET 2002, 2003, 2005, 2008), jadi aku berikan keduanya. Pertama-tama untuk prioritas tertinggi dulu, VB 2008 ;)

Silakan buat projek baru atau gunakan saja projek sebelumnya.

VB 2008

1. Jika hanya ada satu form, buat saja dulu. Caranya, pilih menu Project > Add Windows Form..., atau klik kanan di nama solution kita dan pilih Add > Windows Form.... Pada jendela yang terbuka, pastikan yang terpilih adalah Windows Form. Beri nama form baru ini dan klik OK.

Diasumsikan dua form yang tersedia adalah Form1 dan Form2. Untuk menyeragamkan diri dengan yang menggunakan projek sebelumnya, saat aplikasi dimulai Form2 yang akan jalan duluan alih-alih Form1. Waduh, gimana caranya?

2. Untuk mengubah form yang akan dibuka duluan saat aplikasi pertama kali berjalan (istilahnya startup form):
a. Klik kanan pada nama solution dan pilih Properties. Tab baru berjudul nama solution kita akan terbuka.
b. Buka tab Application yang ada di sebelah kiri (seharusnya otomatis terpilih).
c. Cari pilihan Startup form dan ganti pilihannya dari Form1 menjadi Form2.
d. Simpan. Sampai tahap ini, coba jalankan. Form2 akan terbuka alih-alih Form1.

3. Buat Form2 menjadi seperti permintaan stash:
a. Berikan satu Button bertuliskan "Mulai." Misalkan namanya kubiarkan Button1.
b. Berikan event Click (masih ingat ya caranya?).
c. Tuliskan kode berikut:
Dim frmNext As New Form1 ' ganti Form1 dengan nama form yang akan dibuka
frmNext.Show()
Me.Hide() ' Opsional, kalau mau menyembunyikan Form2


Sampai di tahap ini, coba jalankan. Form2 akan muncul dulu. Saat kita mengeklik tombol Mulai, Form2 akan bersembunyi (kalau baris terakhir kode di atas disertakan) dan Form1 akan muncul. Mudah kan?

Tapi tunggu, saat Form1 ditutup, kenapa seakan-akan IDE VB 2008 hang? Bukannya harusnya keluar dari mode Debugging? Sayangnya, aplikasi kita memang belum ditutup. Ingat Form2 kita? Form itu masih sembunyi dan belum dibebaskan dari memori. Lalu, bagaimana caranya?

4. Untuk memaksa aplikasi keluar saat Form1 ditutup, tambahkan event FormClosed untuk Form1. Caranya:
a. Pindah ke Code View dan pilih Form1.
b. Pada combo box kiri (combo box adalah kotak yang ada panahnya, kalau diklik akan terbuka banyak pilihan; Combobox juga merupakan Common Controls), pilih (Form1 Events). Di sebelahnya, pilih FormClosed.

Sebentar, kok ada event FormClosing? Mungkin ada yang bertanya-tanya demikian. Apa bedanya? Bedanya, FormClosed akan dijalankan setelah form ditutup. FormClosing dijalankan tepat saat form menutup, jadi kita bisa melakukan sesuatu saat form menutup, misalnya memberi pesan, bahkan membatalkan penutupan form (nanti kita akan lihat bagaimana caranya). Untuk sekarang, kita pakai FormClosed.

c. Pada event FormClosed, ketikkan kode berikut:
Application.Exit()

Wah, hanya satu baris? Coba saja jalankan. Begitu Form1 ditutup, VB 2008 akan keluar dari mode Debugging.

Selesai! Sekarang giliran VB 6...

VB 6
Caranya berbeda cukup jauh dengan VB 2008. Kita akan lakukan pelan-pelan tahap per tahap.

1. Buat projek baru atau gunakan projek yang sudah ada.
Untuk menambah form baru, pilih menu Project > Add Form... atau klik kanan pada nama projek atau Forms (pada jendela Project) dan pilih Add > Form....

Dengan kondisi yang sama, kita akan buat Form2 sebagai startup form.

2. Untuk mengubah startup form:
a. Klik kanan pada nama projek dan pilih Properties....
b. Pilih tab General.
c. Pada Startup Object, ganti ke Form2.

Coba jalankan dulu. Berhasil?

3. Buat Form2 menjadi seperti permintaan stash:
a. Tambahkan kontrol CommandButton. Asumsi namanya tetap CommandButton1.
b. Berikan event Click.
c. Tuliskan kode berikut:
Form1.Show
Me.Hide ' opsional, untuk menyembunyikan Form2


Coba jalankan. Berhasil?

Sama kasusnya seperti VB 2008, saat Form1 ditutup, VB tidak keluar dari mode Debug karena aplikasi kita belum keluar sepenuhnya. Lalu, bagaimana?

4. Untuk menutup aplikasi:
a. Pindah ke Code View untuk Form1.
b. Berikan event Unload. Caranya sama seperti pada VB 2008: di combo box kiri pilih Form dan di kanan pilih Unload.
c. Ketikkan kode berikut:
Unload Form2

Coba jalankan. Apa aplikasi menutup saat Form1 ditutup?
Kelemahan cara ini, kalau ada beberapa form yang belum ditutup, kita harus meng-unload-nya manual. Coba cari cara paling efektif untuk mengatasi kelemahan ini.

Bagaimana? Bisa menggunakan lebih dari satu form? Kalau bisa, berarti kalian sudah siap membuat aplikasi yang lebih kompleks. Berikutnya, jika tidak ada pertanyaan, kita akan berkenalan pada beberapa Common Controls yang paling sering digunakan.

Kalau ada pertanyaan, tanyakan sekarang :)

ERRATA
Tadi sempat tertulis:

Dim frmNext As New Form2 ' ganti Form2 dengan nama form tempat Button1 berada

Yang benar adalah:

Dim frmNext As New Form1 ' ganti Form1 dengan nama form yang akan dibuka
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen

Stash

Sekarang misal, ada 2 tombol. Kalau tekan tombol A, buka form 3, kalau tekan tombol B, buka gorm 5. Bagaimana caranya?
Twitter ID : stefano1003
Facebook : http://www.facebook.com/stefano.ariestasia
Google+ : stefano.ariestasia
Blog : http://catatanstefano.wordpress.com

Èxsharaèn

Caranya ya sama persis :)

VB 2008:
Private Sub ButtonA_Click(...) Handles ButtonA.Click
  Dim frmKu As New Form3
  frmKu.Show()
End Sub

Private Sub ButtonB_Click(...) Handles ButtonB.Click
  Dim frmKu As New Form5
  frmKu.Show()
End Sub


Jadi, intinya untuk membuka form baru, gunakan format ini:

VB 2008:
Dim var_bantu As New namaFormYangAkanDibuka
var_bantu.Show()
var_bantu.ShowModal() ' dengan ShowModal, fokus akan tetap pada form yang terbuka


VB 6:
namaFormYangAkanDibuka.Show
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen

Stash

OK deh, beruntung dierrata, kalau gak, aku bisa pusing 100 keliling... :D

Btw, ajarin dong cara buat tabel, grafik, dan cara ngambil data dari excel. Sori nih mungkin gak ngurut urutan teori yang seharusnya, tapi kebetulan ada program yang mau aku buat, jadi mending langsung loncat ke situ saja :D

Btw, tulis ulang dong cara membuat alignment label jadi center, dan cara membuat teksnya jadi bold, seperti yang tadi aku tanyakan pas chat, untuk pembelajaran member yang lain.
Twitter ID : stefano1003
Facebook : http://www.facebook.com/stefano.ariestasia
Google+ : stefano.ariestasia
Blog : http://catatanstefano.wordpress.com

Èxsharaèn

Wah, sori, tapi berhubung yang kamu minta itu sudah tingkat sangat lanjut, sementara aku pending dulu. Kasihan yang lain, tiba-tiba loncat ke materi yang susah :)

Untuk pertanyaan yang lain aku masih bisa jawab.

A. Mengubah alignment label jadi center:

1. Pastikan properti AutoSize diset ke False, atau alignment-nya tidak akan tampak.

2a. Melalui Designer View:
Ubah properti TextAlign menjadi yang diinginkan (ada 9 posisi, pilih sendiri).
2b. Melalui Code View:
namaLabel.TextAlign = ContentAlignment.TopCenter ' ada 9 konstanta, pilih sendiri

B. Membuat teks label menjadi cetak tebal (termasuk style lainnya):

Melalui Designer View:
Perluas properti Font. Silakan set sendiri :)

Melalui Code View:
labelku.Font = new System.Drawing.Font(labelku.Font, FontStyle.Bold)
' Untuk lebih banyak style:
labelku.Font = new System.Drawing.Font(labelku.Font, FontStyle.Bold Or FontStyle.Italic)

Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen

Stash

Hmm... kalau gitu, topik berikutnya apa nih? Cara membuat label dan textbox tersembunyi saat suatu tombol diklik?
Twitter ID : stefano1003
Facebook : http://www.facebook.com/stefano.ariestasia
Google+ : stefano.ariestasia
Blog : http://catatanstefano.wordpress.com

Èxsharaèn

Itu gampang :)

labelku.Visible = False

Hampir semua kontrol punya properti Visible.

Sebenarnya, kalau mau utak-atik sendiri, berarti artikel ini selesai sampai di sini :) tapi aku berbaik hati mengenalkan beberapa kontrol yang paling umum digunakan, dan terakhir adalah cara menghubungkan basis data ke aplikasi kita (ini sebenarnya harus masuk artikel Basis Data, tapi aku berikan yang sangat sederhana saja sebagai pengenalan).

Yang penasaran akan jawaban pertanyaan stash yang aku anggap sulit bisa membuka artikel VB 2008 lebih lanjut.
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen

Èxsharaèn

#22
Kontrol yang paling umum digunakan adalah sebagai berikut. Aku urutkan sesuai abjad.

Button
Ini sudah kita gunakan sebelumnya.

CheckBox
Berguna untuk memberikan pengguna pilihan yang jawabannya bisa lebih dari satu (misalkan hobi). Untuk mendapatkan apakah checkbox ini ditandai atau tidak, gunakan properti Checked.

ComboBox
Ini adalah kotak yang punya panah di sebelah kanan, kalau diklik muncul pilihan. Untuk mengisi pilihan, lewat Designer View pilih saja properti Items. Kalau lewat Code View, gunakan perintah namaComboBox.Items.Add(). Untuk mencegah supaya pengguna tidak bisa mengetik pilihan sendiri, ubah properti DropDownStyle. Untuk mendapatkan item yang sedang dipilih, gunakan properti ComboBox.SelectedItem.

DateTimePicker
Pernah kan pakai aplikasi yang bisa memilih tanggal dengan memunculkan kalender? Kontrol inilah yang digunakan untuk maksud tersebut. Tanggal yang bisa dipilih bisa dibatasi dengan properti MaxDate dan MinDate. Untuk mendapatkan tanggal yang dipilih pengguna, gunakan properti Value. Awas, Value bertipe data Date!

Label
Juga sudah kita gunakan :)

LinkLabel
Bentuk khusus dari Label, biasanya dibuat untuk hyperlink.

ListBox
Kontrol ini mirip sekali dengan ComboBox, bedanya kontrol ini berupa daftar. Karena itu, propertinya pun mirip dengan ComboBox. Yang beda mungkin ListBox mengizinkan pemilihan jawaban lebih dari satu (diatur di properti SelectionMode), sehingga kalau item yang terpilih lebih dari satu, gunakan properti SelectedItems. Awas, properti ini berupa array Object, jadi mungkin diperlukan iterasi.

MaskedTextBox
Varian kontrol TextBox, ini digunakan untuk memaksa pengguna memasukkan teks sesuai dengan pola (mask) yang sudah dimasukkan sebelumnya. Misalnya, untuk nomor KTP, formatnya harus 00.0000.000000.0000. Dengan MaskedTextBox, kode untuk memaksa input ini sudah dibuatkan otomatis. Untuk mendefinisikan mask, ubah properti Mask. Nilainya dapat diakses dan diubah dengan properti Value.

MonthCalendar
Varian DateTimePicker, ini cuma kalender bulanannya saja. Kurang lebihnya sama dengan DateTimePicker.

NotifyIcon
Penasaran bagaimana sebuah aplikasi bisa membuat ikon sendiri di sebelah jam di taskbar? Atau memunculkan pesan dalam balon teks? Ini kontrolnya :) Berbeda dengan kontrol visual, kontrol ini (dan beberapa kontrol lain) tidak diletakkan di dalam form, tapi di wadah khusus (coba saja masukkan satu ke form). Setting-nya sederhana, coba diutak-atik sendiri :)

NumericUpDown
Pernah lihat kotak yang punya dua panah di sebelah kanan? Kalau diklik, angkanya naik atau turun? Kontrol ini digunakan untuk maksud tersebut. Penambahan (increment) tiap kali panah diklik bisa diatur di properti Increment, sementara nilainya didapat dari properti Value.

PictureBox
Yang ingin mempercantik tampilan dengan menggunakan gambar bisa menggunakan kontrol ini. Gambar bisa diset pada properti Image.

ProgressBar
Sering kan melihat progress bar selagi kita menunggu sesuatu? Gunakan kontrol ini untuk mendapatkan efek yang sama. Nilai maksimum dan minimum, bisa ditebak, ada di properti Maximum dan Minimum. Pada runtime, jangan lupa ubah selalu nilai ProgressBar dengan properti Value.

RadioButton
Sering juga kan melihat kontrol ini? Ada banyak pilihan, tapi yang bisa dipilih hanya satu? Walaupun terdengar aneh, ini adalah bentuk khusus kontrol CheckBox, jadi tahunya kontrol ini dipilih atau tidak ada di properti Checked. Nah, kalau radio button-nya kebetulan ada banyak, kita harus cek satu per satu. Dari namanya? Tentu repot! Tapi, kalau kebetulan hanya ada satu grup radio button pada form, kita bisa gunakan cara ini:
For Each control In Me.Controls
   If TypeOf control Is RadioButton Then
       If control.checked Then
           MessageBox.Show(control.text)
       End If
   End If
Next


Waduh, apa itu??? Bahasa manusianya begini:
Untuk setiap kontrol di kontrol form ini (Me.Controls)
   Jika tipe kontrol adalah RadioButton Maka
       Jika kontrol dicek Maka
           ' Mau ngapain di sini? ;)
       Akhir Jika
   Akhir Jika
Lanjut


Sementara itu dulu, selanjutnya kita akan masuk ke Toolbox grup Containers.

Perlu contoh penggunaan kah? Aku harap nggak usah yah, contohnya banyak sekali :P
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen

Èxsharaèn

Aku terpaksa kembali ke sintaks dasar VB karena baru ingat ada beberapa perbedaan dengan bahasa lain, seperti yang baru saja ditanyakan stash:

Kutip dari: stashMisalkan aku punya array arrData(3). Di C++ (dan nyaris semua bahasa pemrograman), elemen terakhir yang bisa aku akses adalah arrData[2]. Di VB, kenapa arrData(3) masih boleh diakses?

Jawabannya:

Kutip dari: MSDN, Array Bounds for Visual Basic 6.0 UsersThe number you specify for each dimension in the declaration is the upper bound, and the initial element count is equal to the upper bound plus one.

Bahasa sederhananya, jika ada arrData(3), maka jumlah elemennya adalah 3 + 1 = 4, dan elemen terakhir yang bisa diakses adalah batas atas itu sendiri, yaitu arrData(3). Tentu saja, elemen pertama yang dapat diakses tetap arrData(0).

Lainnya akan kuberikan kalau ingat :P makanya tanya ya kalau ada yang bingung ;)
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen

Èxsharaèn

Aku tambahkan satu topik baru untuk mendukung permintaan stash di topik Basis Data.

Pernah nemu program yang bisa menampung banyak jendela? Ingat dengan Word 2003? Gimana caranya kita bisa bikin penampung jendela? Nah, VB punya satu form khusus yang disebut Multiple-Document Interface Form, atau lebih sering dipanggil MDI Form. Form ini biasanya memiliki menu, dan di VB yang lebih baru bisa ada toolbar dan status bar. Lalu, gimana cara pakainya?

VB 2008

Tambahkan form baru seperti biasa, tapi kali ini pilih MDI Parent Form. Beri nama sesukanya, lalu klik Add.
Satu form baru akan terbuka, sudah lengkap dengan menu bar beserta "The Six Brothers" (File, Edit, View, Tools, Windows, dan Help), toolbar, dan status bar. Asyiknya, kode untuk menu-menu yang umum dipakai (terutama di menu Windows) sudah dibuatkan :D

Lha kalau mau bikin menu baru? Klik saja di menu bar, lalu ketikkan nama menu yang diinginkan di kotak yang muncul. Lakukan sesukanya sampai didapat susunan menu yang diinginkan. Kalau mau bikin submenu, klik dulu menu yang akan punya submenu, nanti muncul kotak baru.

Misalkan aku mau menu Tambah Barang, yang akan membuka form frmTambahBarang. Buat menunya, lalu ketikkan kode untuk membuka form baru (masih ingat ya?). Apa yang terjadi? Form frmTambahBarang memang terbuka, tapi kok di luar MDI form kita? Itu karena kita tidak menyuruh frmTambahBarang agar terbuka di dalam MDI form. Lalu bagaimana caranya? Tambahkan saja kode berikut sebelum membuka form yang diinginkan:

formYangAkanDibukaDiDalamMDIForm.MdiParent = Me ' diasumsikan kode ini dipanggil dalam MDI Form

Jalankan ulang. Sekarang form itu pasti akan muncul di dalam MDI form kita. Asyik kan? Silakan berkreasi sendiri dengan menggunakan MDI form ini :D
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen

faart

 :o ada pembelajaran LPV juga yah ternyata  ;)

sayang telat taunya sih >.< untung lulus  :P

btw knp yah crystal report sering hang tanpa sebab  ???  :'(

Èxsharaèn

CR berapa? Digabung sama VS berapa? OS?
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen

faart

Wah CR brp lupa.. VS 2003, OS winXP..

archcorner

Tolong bantu ane dong sob... :(
Lagi pusing nih, gmn caranya memasukkan data dari form lain ke form utama? Contohnya isi listview dari form A bila di klik 2 kali maka isi fieldnya akan masuk ke dalam textbox form B....
God bless always.... :D

Èxsharaèn

#29
Um kebetulan di komputer tidak ada VB (dan memang sudah pindah ke C#), tapi harusnya cara kerjanya sama (asumsi aplikasinya bukan MDI):

1. Buat satu variabel di tingkat form (istilahnya field) di form pertama.
1a. Kalau ingin menjaga keamanan variabel tersebut, deklarasikan Private, kemudian buatkan properti.
1b. Kalau memang data yang dikirim tidak krusial, deklarasikan Public.
Misalkan saja nama variabelnya x.

2. Ambil data dari form pertama, masukkan ke variabel yang baru saja dibuat.

3. Di form kedua, tinggal panggil form pertama dan akses variabelnya. Ini hanya berlaku kalau form kedua adalah anak dari form pertama. Agak lupa kode-nya, mungkin kira-kira begini:

Dim myParent As Form1 ' atau apapun nama form pertama
myParent = Me.Parent
' Dari myParent ini variabel x bisa diakses


Mudah-mudahan bisa (nyobanya di C# sih) :)
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
About.me https://about.me/hoshiro.exsharaen