Monday, December 12, 2016

Bab 6: Visual Basic .NET: Langkah Demi Langkah



MENAMPILKAN KOTAK DIALOG


APA YANG AKAN ANDA PELAJARI PADA BAB INI:
ü  Menciptakan sebuah kotak pesan menggunakan sejumlah tombol dan ikon.
ü  Menciptakan sebuah kotak dialog Open yang memampukan Anda membuka file.
ü  Menciptakan sebuah kotak dilaog Save yang memampukan Anda menyimpan file.
ü Menciptakan sebuah kotak dialog Font yang memampukan Anda untuk menerapkan font terseleksi pada teks.
ü Menciptakan sebuah kotak dialog Color yang memampukan Anda untuk mendefinisikan dan memilih warna.
ü Menciptakan sebuah kotak dialog Print yang memampukan Anda untuk mencetak teks dari aplikasi Anda.
ü  Menciptakan sebuah kotak dialog Browse yang memampukan Anda untuk menjelajah folder.

Visual Basic (sejak versi 2010) menawarkan sejumlah kotak dialog pustaka yang membantu Anda untuk menyediakan sejumlah antarmuka yang kaya pada aplikasi Anda. Kotak-kotak dialog ini menawarkan antarmuka yang sama seperti pada kebanyakan aplikasi Windows. Kotak tersebut juga menyediakan sejumlah properti dan metode yang dapat Anda pakai untuk memodifikasi agar memenuhi kebutuhan Anda.

Bab ini mengeksplorasi kotak-kotak dialog ini secara detil dan menunjukkan bagaimana Anda dapat menggunakannya pada aplikasi Anda untuk membantu Anda membangun aplikasi dengan tampilan profesional.

KOTAK PESAN
MessageBox merupakan salah satu kotak dialog yang akan sering digunakan oleh seorang pengembang piranti lunak. Kotak dialog ini dapat dipakai untuk menampilkan pesan yang dibutuhkan user dan menerima masukan terkait dengan pilihan user. Kotak dialog ini sangat handal; Anda dapat memodifikasinya untuk menampilkan sejumlah ikon pada pesan Anda dan untuk memilih tombol mana yang akan ditampilkan.

Pada operasi komputer sehari-hari, Anda tentu telah sering melihat sejumlah kotak pesan yang menampilkan tiap ikon yang ditunjukkan pada Gambar 6.1. Pada bagian ini, Anda akan belajar bagaimana menciptakan dan menampilkan kotak pesan yang menggunakan ikon-ikon ini.


GAMBAR 6.1

Ikon pertama pada Gambar 6.1 memiliki dua nama: Asterisk dan Information. Ikon kedua juga memiliki dua nama: Exclamation dan Warning. Ikon ketiga memiliki tiga nama: Error, Hand, dan Stop. Ikon terakhir pada Gambar 6.1 hanya memiliki satu nama: Question.

Ketika membangun sebuah aplikasi Windows, pada saat-saat tertentu Anda perlu meminta user untuk memasukkan informasi atau Anda perlu menampilkan peringatan bahwa sesuatu tidak diharapkan untuk terjadi atau bahwa sesuatu yang tidak diharapkan terjadi. Sebagai contoh, dimisalkan bahwa user dari aplikasi Anda memodifikasi data tertentu dan mencoba menutup aplikasi tanpa menyimpan data. Anda dapat menampilkan sebuah kotak pesan yang membawa informasi atau ikon peringatan dan pesan tertentu bahwa data yang tak tersimpan akan hilang. Anda juga dapat menambahkan tombol OK dan Cancel untuk memampukan user untuk melanjutkan atau membatalkan operasi.

Di sini lah dimana kotak dialog MessageBox berguna: Ia dapat dipakai untuk dengan cepat membangun kotak dialog yang meminta user untuk memasukkan keputusan, memilih ikon, dan pilihan tombol. Semua fungsionalitas ini juga dapat Anda pakai untuk menampilkan sebuah kotak pesan yang menginformasikan user tentang validasi error, dan menampilkan error sistem yang terjebak dalam penanganan error.

Sebelum Anda melihat kode, Anda lebih dahulu perlu melihat kelas MessageBox. Metode Show dipanggil untuk menampilkan MessageBox. Judul, pesan, ikon, dan tombol yang ditampilkan ditentukan oleh parameter-parameter yang dilewatkan kepada metode ini. Hal ini tampak rumit, tetapi sebenarnya penggunaan MessageBox sangat sederhana.

Ikon-Ikon Tersedia untuk MessageBox
Anda telah melihat empat ikon tersedia pada Gambar 6.1. Tabel 6.1 mencantumkan ikon-ikon standar yang dapat Anda tampilkan pada sebuah kotak pesan.

TABEL 6.1: Enumerasi Ikon pada Kotak Pesan
Nama Anggota
Penjelasan
Asterisk
Information
Error
Hand
Stop
Exclamation
Warning
Question
None
Menetapkan bahwa kotak pesan menampilkan sebuah ikon informasi.
Menetapkan bahwa kotak pesan menampilkan sebuah ikon informasi.
Menetapkan bahwa kotak pesan menampilkan sebuah ikon error.
Menetapkan bahwa kotak pesan menampilkan sebuah ikon error.
Menetapkan bahwa kotak pesan menampilkan sebuah ikon error.
Menetapkan bahwa kotak pesan menampilkan sebuah ikon eksklamasi.
Menetapkan bahwa kotak pesan menampilkan sebuah ikon eksklamasi.
Menetapkan bahwa kotak pesan menampilkan sebuah ikon tanda tanya.
Menetapkan bahwa kotak pesan tidak menampilkan ikon apapun.

Tombol-Tombol Tersedia untuk MessageBox
Tabel 6.2 mencantumkan beberapa kombinasi tombol yang dapat Anda tampilkan pada sebuah kotak pesan.

TABEL 6.2: Enumerasi Tombol pada Kotak Pesan
Nama Anggota
Penjelasan
AbortRetryIgnore

OK
OKCancel
RetryCancel
YesNo
YesNoCancel
Menetapkan bahwa kotak pesan menampilkan tombol Abort, Retry, dan Ignore.
Menetapkan bahwa kotak pesan menampilkan tombol OK.
Menetapkan bahwa kotak pesan menampilkan tombol OK dan Cancel.
Menetapkan bahwa kotak pesan menampilkan tombol Retry dan Cancel.
Menetapkan bahwa kotak pesan menampilkan tombol Yes dan No.
Menetapkan bahwa kotak pesan menampilkan tombol Yes, No, dan Cancel.

Mengatur Tombol Default
Ketika menampilkan tombol-tombol, Anda dapat menginstruksikan kotak dialog untuk mengatur tombol default bagi Anda. Ini dapat memampukan user untuk membaca pesan dan menekan kunci Enter untuk memanggil aksi untuk tombol default tanpa perlu mengklik tombol itu dengan mouse. Tabel 6.3 mencantumkan opsi-opsi tombol default yang disediakan.

TABEL 6.3: Enumerasi Tombol Default pada Kotak Pesan
Nama Anggota
Penjelasan
Button1

Button2
Button3
Menetapkan bahwa tombol pertama pada kotak pesan adalah tombol default.
Menetapkan bahwa tombol kedua pada kotak pesan adalah tombol default.
Menetapkan bahwa tombol ketiga pada kotak pesan adalah tombol default.

Anda menetapkan tombol default relatif terhadap tombol-tombol MessageBox, dari kiri ke kanan. Oleh karena itu, jika Anda memiliki tombol Yes, No, dan Cancel ditampilkan dan Anda memilih tombol ketiga sebagai tombol default, maka Cancel akan menjadi tombol default. Sama halnya, jika Anda memilih tombol ketiga sebagai tombol default dan Anda hanya memiliki dua tombol OK dan Cancel, maka tombol pertama menjadi tombol default. Tombol default akan disorot sampai Anda menempatkan mouse di atas tombol lain.

Opsi-Opsi Lainnya
Sejumlah opsi lain tersedia pada enumerasi MessageBoxOptions dan dapat dipakai pada kotak pesan. Opsi-opsi tersebut ditunjukkan pada Tabel 6.4.

TABEL 6.4: Opsi-opsi lain pada kotak pesan

Nama Anggota
Penjelasan
DefaultDesktopOnly

RightAlign



RtlReading


ServiceNotification
Menetapkan bahwa kotak pesan akan ditampilkan pada desktop aktif.

Menetapkan bahwa teks pada sebuah kotak pesan akan disejajarkan ke kanan, berlawanan dengan penyajajaran kiri, yang merupakan penyejajaran default.

Menetapkan bahwa teks pada sebuah kotak pesan akan ditampilkan dengan tatanan RTL (right to left) atau dari kanan ke kiri.

Menetapkan bahwa kotak pesan akan ditampilkan pada desktop aktif. Pemanggil adalah sebuah layanan Windows yang memberitahukan event kepada user.


Sintaksis Metode Show
Anda memanggil metode Show untuk menampilkan kotak pesan. Kode berikut menampilkan kotak pesan yang ditampilkan pada Gambar 6.2. Perhatikan bahwa kode menetapkan teks yang ditampilkan pada kotak pesan sebagai argumen pertama, yang diikuti dengan teks yang ditampilkan pada batang judul. Kemudian Anda menetapkan tombol-tombol yang akan ditampilkan, yang diikuti dengan jenis ikon yang ditampilkan di samping teks. Terakhir, Anda menetapkan tombol yang ingin Anda tetapkan sebagai tombol default, pada kasus ini Button1.

GAMBAR 6.2


MessageBox.Show("Teksku", "Kapsionku",
                MessageBoxButtons.OKCancel, MessageBoxIcon.Information,
                MessageBoxDefaultButton.Button1)


Setelah Anda melihat ikon, tombol, dan bidang tombol default yang tersedia, sekarang Anda perlu melihat metode Show dari kelas MessageBox. Anda dapat menetapkan metode Show dalam sejumlah cara; sintaksis-sintaksis umum ditunjukkan berikut:
a. MessageBox.Show(teks pesan)
b. MessageBox.Show(teks pesan, kapsion)
c. MessageBox.Show(teks pesan, kapsion, tombol-tombol)
d. MessageBox.Show(teks pesan, kapsion, tombol-tombol, ikon)
e.  MessageBox.Show(teks pesan, kapsion, tombol-tombol, ikon, tombol default)

Pada contoh-contoh terdahulu, teks pesan merepresentasikan pesan yang ditampilkan pada kotak pesan. Teks ini dapat berupa teks statis (sebuah nilai string literal) atau disuplai dari bentuk variabel string. Parameter-parameter lain bersifat opsional:
a.  kapsion merepresentasikan teks statis atau variabel string yang akan dipakai untuk menampilkan teks pada batang judul dari kotak pesan. Jika parameter ini diabaikan, maka tidak ada teks yang ditampilkan pada batang judul.

b.  tombol-tombol merepresentasikan sebuah nilai dari enumerasi MessageBoxButtons. Parameter ini dapat dipakai untuk menetapkan tombol-tombol yang ditampilkan pada kotak pesan. Jika Anda mengabaikan parameter ini, maka tombol OK akan menjadi tombol satu-satunya pada kotak.

c.  ikon merepresentasikan sebuah nilai dari enumerasi MessageBoxIcon. Parameter ini dipakai untuk menetapkan ikon-ikon yang ditampilkan pada kotak pesan. Jika Anda mengabaikan parameter ini, maka tidak ada ikon yang ditampilkan.

d. tombol default merepresentasikan sebuah nilai dari enumerasi MessageBoxDefaultButton. Parameter ini dapat dipakai untuk menetapkan tombol mana yang ditetapkan sebagai tombol default pada kotak pesan. Jika Anda mengabaikan parameter ini, maka tombol pertama yang ditampilkan menjadi tombol default.

Semua contoh sintaksis yang ditunjukkan pada bagian sebelumnya menghasilkan sebuah nilai dari enumerasi DialogResult, yang mengindikasikan tombol mana pada kotak pesan yang dipilih. Tabel 6.5 menampilkan nilai-nilai yang tersedia pada enumerasi DialogResult.

TABEL 6.5: Anggota-anggota dari enumerasi DialogResult
Nama Anggota
Penjelasan
Abort
Cancel
Ignore
No
None

OK
Retry
Yes
Nilai balik adalah Abort dan merupakan hasil dari pengklikan tombol Abort.
Nilai balik adalah Cancel dan merupakan hasil dari pengklikan tombol Cancel.
Nilai balik adalah Ignore dan merupakan hasil dari pengklikan tombol Ignore.
Nilai balik adalah No dan merupakan hasil dari pengklikan tombol No.
Tidak ada nilai balik yang dihasilkan, yang berarti bahwa kotak dialog tetap ditampilkan sampai sebuah tombol diklik.
Nilai balik adalah OK dan merupakan hasil dari pengklikan tombol OK.
Nilai balik adalah Retry dan merupakan hasil dari pengklikan tombol Retry.
Nilai balik adalah Yes dan merupakan hasil dari pengklikan tombol Yes.

Contoh Kotak Pesan
Karena sejumlah tombol dapat ditampilkan pada suatu kotak pesan, ada pelbagai cara dalam menampilkan kotak dialog dan memeriksa hasilnya. Tentu, jika Anda menampilkan hanya satu tombol menggunakan kotak pesan untuk notifikasi, Anda tidak perlu memeriksa hasil sama sekali.



LATIHAN
Menciptakan Kotak Pesan Dua-Tombol
Latihan ini mendemonstrasikan bagaimana menampilkan dua tombol pada sebuah kotak pesan dan kemudian memeriksa hasil dari kotak pesan untuk menentukan tombol mana yang diklik.

1.   Awali Visual Studio dan pilih File kemudian pilih New Project dari menut. Pada dialog New Project, pilih Windows Forms Application pada panel Template dan masukkan nama projek Tombol MessageBox pada bidang Name. Klik OK untuk menciptakan projek ini.

2.   Klik form pada mode Designer dan kemudian tetapkan properti Text menjadi Tombol MessageBox.

3. Tambahkan sebuah kontrol Label pada form untuk menampilkan hasil yang sesuai dengan tombol mana pada kotak pesan yang diklik oleh user. Tetapkan properti Name menjadi labelHasil dan properti Text menjadi Tidak ada yang diklik.

4. Sekarang tambahkan sebuah kontrol Button dari Toolbox ke dalam form yang akan menampilkan sebuah kotak pesan. Tetapkan properti Name menjadi tombol2Tombol dan properti Text menjadi 2 Tombol.

5. Klik ganda pada tombol tersebut dan tambahkan kode yang ditebalkan pada event handler Click berikut:

Private Sub tombol2Tombol_Click(sender As Object, e As EventArgs) Handles tombol2Tombol.Click
    If MessageBox.Show("Koneksi Internet Anda akan ditutup.",
                       "Pemberitahuan Jaringan", MessageBoxButtons.OKCancel,
                       MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) _
                       = Windows.Forms.DialogResult.OK Then
        labelHasil.Text = "OK Diklik"
        'Memanggil suatu metode di sini
    Else
        labelHasil.Text = "Cancel Diklik"
        'Memanggil suatu metode di sini
    End If
End Sub

GAMBAR 6.3

6.   Simpan projek Anda dengan mengklik tombol Save All pada toolbar.

7.   Jalankan projek dan kemudian klik tombol 2 Tombol. Anda akan melihat sebuah kotak pesan seperti yang ditampilkan pada Gambar 6.3.


Penjelasan
Kode menggunakan metode Show dari kelas MessageBox dan menggunakan statemen If.End If untuk menentukan apakah user mengklik tombol OK atau tidak:

If MessageBox.Show("Koneksi Internet Anda akan ditutup.",
                   "Pemberitahuan Jaringan", MessageBoxButtons.OKCancel,
                   MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) _
                   = Windows.Forms.DialogResult.OK Then

Kode ini menetapkan bahwa tombol OK dan Cancel ditampilkan pada kotak dialog dan bahwa tombol OK akan menjadi tombol default.

Anda perlu menetapkan sesuatu untuk parameter ikon, karena ini diperlukan ketika Anda ingin menetapkan parameter tombol default. Jika Anda tidak ingin menampilkan ikon, Anda dapat menggunakan katakunci Nothing untuk parameter itu.

Selain itu perhatikan bahwa Anda memeriksa hasil dari MessageBox menggunakan Windows.Forms.DialogResult.OK. Anda bisa saja memeriksa Windows.Forms.DialogResult. Cancel dan menuliskan statemen If.End If untuk itu.

Ini merupakan hal yang penting diketahui ketika Anda ingin menguji hasil dari salah satu atau dua tombol, tetapi bagaimana jika Anda ingin menguji hasil dari sebuah kotak pesan yang memuat tiga tombol? Latihan berikut mendemonstrasikannya.


LATIHAN
Menguji Kotak Pesan Tiga-Tombol
Latihan ini mendemonstrasikan bagaimana menampilkan tiga tombol pada sebuah kotak pesan dan kemudian mencaritahu tombol mana yang diklik.

1.    Hentikan projek jika ia masih dijalankan dan buka mode Designer untuk Form1.

2. Tambahkan kontrol Button lain dan tetapkan properti Name menjadi tombol3Tombol dan properti Text menjadi 3 Tombol. Klik ganda pada tombol tersebut dan tambahkan kode yang ditebalkan pada event handler Click:

Private Sub tombol3Tombol_Click(sender As Object, e As EventArgs) Handles tombol3Tombol.Click
    'Mendeklarasikan variabel lokal
    Dim intHasil As DialogResult

    'Mendapatkan hasil dari tombol yang diklik
    intHasil = _
        MessageBox.Show("Apakah Anda ingin menyimpan ke dokumen baru?", _
                        "Pengolah Kata", MessageBoxButtons.YesNoCancel, _
                        MessageBoxIcon.Warning, MessageBoxDefaultButton.Button3)

    'Memproses hasil dari tombol yang diklik
    Select Case intHasil
        Case Windows.Forms.DialogResult.Yes
            labelHasil.Text = "Yes Diklik"
            'Lakukan pemrosesan yes di sini
        Case Windows.Forms.DialogResult.No
            labelHasil.Text = "No Diklik"
            'Lakukan pemrosesan no di sini
        Case Windows.Forms.DialogResult.Cancel
            labelHasil.Text = "Cancel Diklik"
            'Lakukan pemrosesan cancel di sini
    End Select
End Sub

3.  Jalankan projek dan klik tombol 3 Tombol. Kotak dialog pesan akan ditampilkan pada Gambar 6.4, menunjukkan sebuah ikon dan tiga tombol. Perhatikan bahwa tombol ketiga tombol default.

GAMBAR 6.4

Penjelasan
Pada kode berikut, hal pertama yang Anda lakukan adalah mendeklarasikan sebuah variabel sebagai sebuah DialogResult untuk menangkap DialogResult yang dihasilkan dari kotak pesan. Ingat bahwa nilai yang dihasilkan dari kotak pesan adalah salah satu nilai Integer dari enumerasi. Selanjutnya, Anda menetapkan DialogResult dalam variabel:

'Mendeklarasikan variabel lokal
Dim intHasil As DialogResult

'Mendapatkan hasil dari tombol yang diklik
intHasil = _
        MessageBox.Show("Apakah Anda ingin menyimpan ke dokumen baru?", _
                        "Pengolah Kata", MessageBoxButtons.YesNoCancel, _
                        MessageBoxIcon.Warning, MessageBoxDefaultButton.Button3)


Terakhir, Anda menguji nilai dari intHasil pada sebuah statemen Select Case dan bertindak sesuai dengan hasil tersebut.

'Memproses hasil dari tombol yang diklik
Select Case intHasil
    Case Windows.Forms.DialogResult.Yes
         labelHasil.Text = "Yes Diklik"
         'Lakukan pemrosesan yes di sini
    Case Windows.Forms.DialogResult.No
         labelHasil.Text = "No Diklik"
         'Lakukan pemrosesan no di sini
    Case Windows.Forms.DialogResult.Cancel
         labelHasil.Text = "Cancel Diklik"
         'Lakukan pemrosesan cancel di sini
End Select

Pada tiap statemen Case, Anda menuliskan nama tombol yang diseleksi pada label untuk mengindikasikan tombol mana yang diklik.

Sekarang Anda telah memiliki pemahaman yang lebih baik tentang bagaimana kotak dialog MessageBox diterapkan dan bagaimana sintaksis dalam menggunakannya. Untuk lebih memfamiliarkan MessageBox, coba mengubah nilai dari parameter teks pesan, kapsion, tombol, ikon, dan tombol default.



KONTROL OPENFILEDIALOG
Banyak aplikasi Windows memproses data dari file, jadi Anda memerlukan suatu antarmuka untuk memilih file untuk dibuka dan disimpan. Pustaka .NET menyediakan kelas OpenFileDialog dan SaveFileDialog untuk melakukannya. Pada bagian ini, Anda akan mempelajari kontrol OpenFileDialog, dan pada bagian selanjutnya Anda akan mempelajari kontrol SaveFileDialog.

Ketika Anda menggunakan aplikasi Windows, seperti Microsoft Word atau Paint, Anda akan melihat kotak dialog Open dasar yang sama. Ini tidak terjadi secara kebetulan. Tersedia bagi semua pengembang adalah sejumlah antarmuka pemrograman standar (API, application programming interfaces) yang dapat dipakai untuk menyediakan antarmuka standar ini. Namun, penggunaan API merupakan pekerjaan rumit dan sulit bagi pemula. Untungnya, semua fungsionalitas ini telah tersedia pada .NET Framework, jadi Anda dapat menggunakannya ketika Anda mengembangkan piranti lunak menggunakan Visual Basic.

Kontrol OpenFileDialog
Anda dapat menggunakan OpenFileDialog sebagai sebuah kelas .NET dengan mendeklarasikan suatu variabel dengan tipe data itu di dalam kode Anda dan memodifikasi properti-propertinya di dalam kode, atau sebagai sebuah kontrol dengan menggeretnya dari jendela Toolbox ke dalam form saat perancangan. Pada kedua kasus tersebut, objek yang dihasilkan akan memiliki metode-metode, properti-properti, dan event-event yang sama.

Anda bisa menemukan kontrol OpenFileDialog pada jendela Toolbox di bawah tab Dialogs, dimana Anda dapat menggeret dan menjatuhkannya pada form Anda. Kemudian, apa yang perlu Anda lakukan adalah menetapkan properti-propertinya dan mengeksekusi metode yang dibutuhkan. Untuk menggunakan OpenFileDialog sebagai sebuah kelas, Anda mendeklarasikan objek sendiri dengan tipe data ini untuk menggunakan kotak dialog. Kemudian Anda akan memiliki kendali atas skop dari kotak dialog dan dapat mendeklarasikan sebuah objek untuknya bila diperlukan, dan kemudian menghancurkan atau menghapusnya.

Bagian ini akan fokus pada OpenFileDialog sebagai sebuah kontrol. Begitu Anda memiliki pemahaman yang lebih baik atas kotak dialog ini dan merasa nyaman dalam menggunakannya, Anda kemudian dapat mengekspansi keterampilan Anda ini dan menggunakan OpenFileDialog sebagai sebuah kelas dengan mendeklarasikan objek sendiri dengan tipe data OpenFileDialog.

Anda dapat menggunakan OpenFileDialog dengan memanggil metode ShowDialog, yang menghasilkan dialog seperti ditunjukkan pada Gambar 6.5.

GAMBAR 6.5
Properti-Properti dari OpenFileDialog
Meskipun kotak dialog yang ditampilkan pada Gambar 6.5 merupakan kotak dialog Open standar yang ditampilkan pada Windows 7, ia tidak memiliki penapisan. Semua jenis file dicantumkan pada jendela dan Anda tidak bisa menetapkan jenis file untuk penapisan karena tidak ada penapisan. Inilah dimana properti-properti dari OpenFileDialog dapat dipakai. Anda dapat menetapkan sejumlah properti sebelum kotak dialog Open ditayangkan, jadi Anda dapat memodifikasi kotak dialog sesuai dengan kebutuhan Anda.

Tabel 6.6 mencantumkan sejumlah properti yang tersedia untuk kontrol OpenFileDialog.

TABEL 6.6: Sejumlah properti dari kontrol OpenFileDialog
Properti
Penjelasan
AddExtension



AutoUpgradeEnabled


CheckFileExists


CheckPathExists


DefaultExt

DereferenceLinks



FileName

FileNames


Filter


FilterIndex

InitialDirectory

Multiselect

ReadOnlyChecked

SafeFileName

SafeFileNames


ShowHelp

ShowReadOnly

SupportMultiDotted
Extensions

Title

ValidateNames
Mengindikasikan apakah sebuah ekstensi secara otomatis ditambahkan pada sebuah nama file jika user mengabaikan ekstensi. Ini umumnya digunakan pada SaveFileDialog, yang akan dijelaskan pada bagian selanjutnya.

Mengindikasikan apakah dialog ini secara otomatis memperbarui tampilan dan wataknya ketika dijalankan pada versi Windows yang berbeda.

Mengindikasikan apakah kotak dialog menampilkan peringatan jika user menetapkan nama file yang tidak ada.

Mengindikasikan apakah kotak dialog menampilkan peringatan jika user menetapkan path yang tidak ada.

Mengindikasikan ekstensi nama file default.

Digunakan untuk jalan pintas. Mengindikasikan apakah dialog menghasilkan lokasi file yang direferensi oleh jalan pintas (True) atau apakah ia hanya menghasilkan jalan pintas itu sendiri (False).

Mengindikasikan path dan nama file dari file terseleksi pada kotak dialog.

Mengindikasikan path dan nama file dari semua file terseleksi pada kotak dialog. Ini merupakan sebuah properti read-only.

Mengindikasikan string filter nama file, yang menentukan opsi-opsi yang ditampilkan pada kotak combol Files of Type pada kotak dialog.

Mengindikasikan indeks file yang terseleksi pada kotak dialog.

Mengindikasikan direktori awal yang ditampilkan pada kotak dialog.

Mengindikasikan apakah kotak dialog membolehkan seleksi terhadap multi file.

Mengindikasikan apakah kotak periksa read-only diseleksi.

Mengindikasikan nama file dari file terseleksi pada kotak dialog.

Mengindikasikan nama file dari semua file terseleksi pada kotak dialog. Ini merupakan properti read-only.

Mengindikasikan apakah tombol Help ditampilkan pada kotak dialog.

Mengindikasikan apakah kotak dialog memuat sebuah kotak periksa read-only.

Mengindikasikan apakah kotak dialog mendukung penampilan dan penyimpanan file yang memiliki beberapa ekstensi nama file.

Mengindikasikan judul yang ditampilkan pada batang judul dari kotak dialog.

Mengindikasikan apakah kotak dialog hanya bisa menerima namafile WIN32 yang valid.


Metode-Metode OpenFileDialog
Meskipun banyak metode yang disediakan di dalam kelas OpenFileDialog, Anda hanya akan berkonsentrasi pada metode ShowDialog pada contoh-contoh ini. Berikut merupakan beberapa metode yang tersedia di dalam kelas OpenFileDialog:
a. Dispose membebaskan memori yang digunakan oleh kotak dialog Open.
b. OpenFile membuka file yang diseleksi oleh user dengan ijin operasi pembacaan. File ini ditetapkan oleh properti FileName.
c. Reset mengatur ulang ke pengaturan default semua properti dari kotak dialog Open.
d. ShowDialog menampilkan kotak dialog.

Metode ShowDialog cukup sederhana, karena ia bisa saja tidak memiliki parameter atau atau bisa saja menggunakan katakunci Me. Oleh karena itu, sebelum pemanggilan metode ShowDialog dilakukan, Anda perlu menetapkan semua properti yang ingin Anda atur. Setelah kotak dialog memberikan hasil (nilai balik), Anda dapat memeriksa properti-properti untuk menentukan file mana yang diseleksi, direktori dan tipe file apa yang diseleksi. Salah satu contoh metode ShowDialog ditampilkan pada fragmen kode berikut:

OpenFileDialog1.ShowDialog()

Kontrol OpenFileDialog menghasilkan sebuah nilai OK atau Cancel yang bertipe DialogResult, dengan OK berkaitan dengan tombol Open pada kotak dialog. Kontrol ini tidak membukakan dan membaca file untuk Anda; ia hanyalah sebuah antarmuka yang memampukan user untuk mencari dan menetapkan file atau file-file yang akan dibuka oleh aplikasi. Anda perlu memeriksa properti-properti dari OpenFileDialog yang telah ditetapkan oleh kontrol setelah user mengklik tombol Open untuk menentukan file mana yang akan dibuka.

Menggunakan Kontrol OpenFileDialog

Setelah Anda mempelajari kontrol OpenFileDialog, Anda dapat menggunakan pengetahuan ini untuk digunakan menuliskan sebuah program yang memakai kontrol ini.


LATIHAN
Menggunakan OpenFileDialog
Program pada latihan ini menggunakan kontrol OpenFileDialog untuk menampilkan kotak dialog Open File. Anda menggunakan kotak dialog ini untuk mencari dan memilih sebuah file teks, dan kemudian Anda akan membaca isi dari file tersebut ke dalam sebuah kotak teks pada form Anda menggunakan namespace My.Computer.FileSystem.

1.  Ciptakanlah sebuah projek Windows Forms Application dengan nama Dialog Windows Forms.

2. Untuk memberikan nama baru, pada jendela Solution Explorer, klik kanan pada Form1.vb dan pilih Rename dari menu konteks. Kemudian masukkan nama baru Dialog.vb. Tetapkan properti-properi dari form sebagai berikut:
          Tetapkan Size menjadi 460, 300.
          Tetapkan StartPosition menjadi CenterScreen.
          Tetapkan Text menjadi Dialog.

3. Karena Anda akan membaca isi dari sebuah file ke dalam kotak teks, Anda perlu menambahkan sebuah kotak teks pada form. Anda juga akan menambahkan sebuah tombol pada form sehingga Anda dapat memanggil kotak dialog Open File. Tambahkan kedua kontrol ini pada form dan tetapkan properti-propertinya berikut:
           Namai kotak teks dengan teksFile dan tetapkan properti-properti berikut: 
           Anchor = TopBottom, Left, Right; Location = 13, 13
           MultiLine = True; ScrollBars = Vertical; Size = 330,332.
           
           Namai kontrol Button dengan tombolBuka dan tetapkan properti-properti berikut:      Anchor = Top, Right; Location = 349, 13; Text = Buka.

4. Ketika selesai menempatkan kontrol-kontrol pada form dan menetapkan properti-propertinya, form akan tampak seperti pada Gambar 6.6.


GAMBAR 6.6

5.  Pada Toolbox, gulung ke bawah sampai Anda melihat kontrol OpenFileDialog pada tab Dialogs dan kemudian geret kontrol itu ke form Anda dan jatuhkan. Kontrol akan ditempatkan di bawah dari form.
Pada titik ini, Anda dapat mengklik kontrol tersebut dan menetapkan sejumlah properti untuk kontrol ini pada jendela Properties. Namun, untuk sekarang Anda bisa menerima nama default dan properti-propertinya. Anda akan menetapkan properti-properti dari kontrol ini nanti dari kode.

6.  Tukar ke editor kode untuk form. Deklarasikan sebuah variabel string yang akan memuat nama file. Anda menetapkan variabel ini nanti pada kode Anda untuk memuat path dan nama file dari kotak dialog Open File:

Public Class Dialog
    'Mendeklarasikan variabel
    Private strNamaFile As String

7.  Sekarang Anda perlu menuliskan kode pada event Click untuk tombolBuka. Pada kotak combo Class Name di atas dari editor kode, pilih tombolBuka, dan pada kotak combo Method Name pilih event Click. Tambahkan kode yang ditebalkan berikut pada event handler Click:

Private Sub tombolBuka_Click(sender As Object, e As EventArgs) Handles tombolBuka.Click
    'Membuka properti-properti dialog Open
    With OpenFileDialog1
        .Filter = "Dokumen Teks (*.txt)|*.txt|Semua File (*.*)|*.*"
        .FilterIndex = 1
        .Title = "Demo Dialog Open File"
    End With
    'Menampilkan dialog Open dan jika user mengklik tombol Open,
    'muat file
    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        Try
            'Simpan path dan nama file
            strNamaFile = OpenFileDialog1.FileName

        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, _
            MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End If
End Sub

8.  Sekarang saatnya untuk menggunakan kode snippet yang ada di dalam Visual Studio. Klik kanan pada ruang kosong di dalam statemen blok Try tepat sebelum statemen blok Catch dan pilih Insert Snippet dari menu konteks. Pada menu yang ditampilkan, klik ganda pada Fundamentals-Collections, Data Types, File System, Math dan kemudian pada list baru klik ganda File System-Processing Drives, Folders, and Files. Terakhir, gulung ke bawah list dan klik ganda pada Read Text from a File. Kode akan akan tampak seperti ini, dan Anda akan memerhatikan bahwa nama file C:\Test.txt disorot, yang mengindikasikan bahwa kode ini perlu diganti:

Try
    'Simpan path dan nama file
     strNamaFile = OpenFileDialog1.FileName
     Dim fileContents As String
     fileContents = My.Computer.FileSystem.ReadAllText("C:\Test.txt")
Catch ex As Exception

9. Modifikasi kode di dalam blok Try seperti ditunjukkan di sini. Ganti “C:\Test.txt” dengan strNamaFile dan tambahkan kode berikut untuk menampilkan isi dari file teks:

Try
    'Simpan path dan nama file
     strNamaFile = OpenFileDialog1.FileName
     Dim fileContents As String
     fileContents = My.Computer.FileSystem.ReadAllText("C:\Test.txt")

    'Menampilkan isi file pada kotak teks
    teksFile.Text = fileContents
Catch ex As Exception

10. Simpan projek Anda dengan mengklik tombol Save All pada toolbar.

11. Jalankan projek Anda. Ketika form ditampilkan, klik tombol Open untuk menampilkan dialog Open File. Perhatikan kapsion pada batang judul dari kotak dialog; Anda telah menetapkan ini pada kode Anda. Jika Anda mengklik kotak combol filter File, Anda akan melihat dua filter. Klik pada filter kedua untuk melihat semua file pada direktori tersebut.

12. Sekarang cari sebuah file teks pada komputer Anda dan pilih file itu. Kemudian klik tombol Open untuk membukanya dan isi file akan ditempatkan pada kotak teks, seperti ditunjukkan pada Gambar 6.7.

13. Sebagai uji terakhir tutup aplikasi Anda dan kemudian ulangi lagi. Klik tombol Open pada form dan perhatikan bahwa kotak dialog Open File telah membuka direktori yang sama dari mana Anda membuka terakhir kali. Anda tidak perlu menuliskan kode apapun untuk melakukannya.


GAMBAR 6.7

Penjelasan
Sebelum menampilkan kotak dialog Open File, Anda perlu menetapkan beberapa properti dari OpenFileDialog1 sehingga kotak dialog disesuaikan untuk aplikasi Anda. Anda dapat melakukannya menggunakan statemen With…End. Statemen ini dapat dipakai untuk melakukan referensi berulang ke sebuah objek tanpa perlu secara berulang menetapkan nama objek. Anda menetapkan nama objek sekali saja pada baris dengan statemen With dan kemudian menambahkan semua referensi ke properti objek sebelum statemen End With.

With OpenFileDialog1

Properti pertama yang Anda tetapkan adalah properti Filter. Properti ini memampukan Anda untuk mendefinisikan filter-filter yang akan ditampilkan pada kotak combol filter File di pojok kanan bawah dari dialog. Ketika Anda mendefinisikan sebuah filter ekstensi file, Anda menetapkan deskripsi filter yang diikuti oleh sebuah batang vertikal (|) yang diikuti oleh ekstensi file. Ketika Anda ingin properti Filter untuk memuat beberapa ekstensi file, seperti ditunjukkan berikut, Anda memisahkan setiap filter file dengan sebuah batang vertikal sebagai berikut:

.Filter = "Dokumen Teks (*.txt)|*.txt|Semua File (*.*)|*.*"

Properti berikutnya yang Anda tetapkan adalah FilterIndex. Properti ini menentukan filter mana yang ditampilkan pada kotak combol filter File. Nilai defaultnya untuk properti ini adalah 1, yang merupakan filter pertama:

.FilterIndex = 1

Terakhir, Anda menetapkan properti Title. Ini merupakan kapsion yang ditampilkan pada batang judul dari kotak dialog:

.Title = "Demo Dialog Open File"

Untuk membuka kotak dialog Open File, Anda menggunakan metode ShowDialog. Ingat bahwa metode ini menghasilkan sebuah DialogResult, dimana hanya terdapat dua nilai yang mungkin, dan Anda dapat membandingkan hasil dari metode ShowDialog dengan Windows.Forms.DialogResult.OK dan Windows.Forms.DialogResult.Cancel. Jika user mengklik tombol Open pada kotak dialog, maka ShowDialog akan menghasilkan nilai OK; jika user mengklik tombol Cancel pada kotak dialog, maka ShowDialog akan menghasilkan nilai Cancel:

If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

Selanjutnya, Anda menambahkan sebuah blok Try.Catch untuk menangani setiap error yang berpotensi terjadi. Di dalam blok Try, Anda membaca path dan nama file yang dipilih oleh user pada kotak dialog Open File dan menetapkannya pada variabel strNamaFile. Path dan nama file dimuat di dalam properti FileName dari kontrol OpenFileDialog:

strNamaFile = OpenFileDialog1.FileName

Selanjutnya, Anda menggunakan snippet yang disediakan oleh Visual Studio untuk menyederhanakan pekerjaan pemrograman menggunakan snippet kode Read Text from a file. Snippet kode ini memuat kode yang diperlukan untuk membaca isi dari sebuah file teks dan menempatkan isinya ke dalam sebuah variabel string.

Kemudian, Anda memodifikasi kode dari snippet, yang menyediakan variabel strNamaFile. Kode ini akan membaca keseluruhan isi file ke dalam variabel fileContents:

Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(strNamaFile)

Baris kode terakhir yang Anda tuliskan mengambil isi dari variabel fileContents dan menugaskannya kepada properti Text dari kontrol TextBox:

'Menampilkan isi file pada kotak teks
teksFile.Text = fileContents


Kode di dalam blok Catch menggunakan kelas MessageBox untuk menampilkan isi dari properti Message dari eksepsi yang dilemparkan bila error terjadi. Parameter caption

Catch ex As Exception
    MessageBox.Show(ex.Message, My.Application.Info.Title, _
         MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

KONTROL SAVEFILEDIALOG
Sekarang setelah Anda dapat membuka file dengan kontrol OpenFileDialog, saatnya bagi Anda mengenal kontrol SaveFileDialog agar Anda bisa menyimpan file. Seperti OpenFileDialog, SaveFileDialog dapat dipakai sebagai kontrol maupun kelas. Setelah Anda memahami SaveFileDialog sebagai kontrol, Anda tidak akan memiliki masalah dalam menggunakan SaveFileDialog sebagai kelas.

Setelah Anda membuka file, Anda bisa jadi memerlukan modifikasi pada file itu dan kemudian menyimpannya. Kontrol SaveFileDialog menawarkan fungsionalitas yang sama dengan kontrol OpenFileDialog. Kontrol ini memampukan Anda untuk memilih lokasi dan nama file ketika Anda menyimpan file. Penting diketahui bahwa kontrol SaveFileDialog sebenarnya tidak menyimpan file Anda; ia hanya menyediakan sebuah kotak dialog yang memampukan user mencari lokasi file yang akan disimpan.

Properti-Properti dari SaveFileDialog
Tabel 6.7 mencantumkan sejumlah properti yang tersedia pada kontrol SaveFileDialog. Seperti yang dapat Anda lihat, kontrol ini, atau kelas ini, memuat banyak properti yang dapat dipakai untuk memodifikasi bagaimana kotak dialog berperilaku.

TABEL 6.7: Sejumlah properti dari kontrol SaveFileDialog
Properti
Penjelasan
AddExtension


AutoUpgradeEnabled


CheckFileExists


CheckPathExists


CreatePrompt


DefaultExt

DereferenceLinks



FileName

FileNames


Filter


FilterIndex

InitialDirectory

OverwritePrompt


ShowHelp

ShowReadOnly

SupportMultiDotted
Extensions

Title

ValidateNames
Mengindikasikan apakah sebuah ekstensi secara otomatis ditambahkan pada sebuah nama file jika user mengabaikan ekstensi.

Mengindikasikan apakah dialog ini secara otomatis memperbarui tampilan dan wataknya ketika dijalankan pada versi Windows yang berbeda.

Mengindikasikan apakah kotak dialog menampilkan peringatan jika user menetapkan nama file yang tidak ada.

Mengindikasikan apakah kotak dialog menampilkan peringatan jika user menetapkan path yang tidak ada.

Mengindikasikan apakah kotak dialog akan meminta ijin dari user dalam menciptakan sebuah file jika user menetapkan sebuah file yang tidak ada.

Mengindikasikan ekstensi nama file default.

Digunakan untuk jalan pintas. Mengindikasikan apakah dialog menghasilkan lokasi file yang direferensi oleh jalan pintas (True) atau apakah ia hanya menghasilkan jalan pintas itu sendiri (False).

Mengindikasikan path dan nama file dari file terseleksi pada kotak dialog.

Mengindikasikan path dan nama file dari semua file terseleksi pada kotak dialog. Ini merupakan sebuah properti read-only.

Mengindikasikan string filter nama file, yang menentukan opsi-opsi yang ditampilkan pada kotak combol Files of Type pada kotak dialog.

Mengindikasikan indeks file yang terseleksi pada kotak dialog.

Mengindikasikan direktori awal yang ditampilkan pada kotak dialog.

Mengindikasikan apakah kotak dialog menampilkan peringatan bila user menetapkan nama file yang telah ada.

Mengindikasikan apakah tombol Help ditampilkan pada kotak dialog.

Mengindikasikan apakah kotak dialog memuat sebuah kotak periksa read-only.

Mengindikasikan apakah kotak dialog mendukung penampilan dan penyimpanan file yang memiliki beberapa ekstensi nama file.

Mengindikasikan judul yang ditampilkan pada batang judul dari kotak dialog.

Mengindikasikan apakah kotak dialog hanya bisa menerima namafile WIN32 yang valid.


Metode-Metode SaveFileDialog
Kontrol SaveFileDialog memiliki metode-metode yang sama seperti OpenFileDialog. Jika Anda ingin membacanya kembali, silahkan ke bagian “Metode-Metode OpenFileDialog”. Semua contoh di sini akan menggunakan metode ShowDialog untuk menampilkan dialog Save File.

Menggunakan Kontrol SaveFileDialog
Pada latihan ini, Anda akan menyimpan isi dari kotak teks ke dalam sebuah file. Anda menggunakan kontrol SaveFileDialog untuk menampilkan sebuah kotak dialog Save File yang dapat Anda pakai untuk menetapkan lokasi dan nama file. Kemudian Anda menuliskan isi dari kotak teks pada form Anda ke dalam file, dengan menggunakan kembali snippet yang telah disediakan oleh Visual Studio.

LATIHAN
Menggunakan SaveFileDialog
Untuk melihat bagaimana mencantumkan kontrol SaveFileDialog pada projek Anda, Anda memulainya dengan projek Dialog Windows Forms dari latihan sebelumnya sebagai titik awal.
1.    Kembali ke mode Designer pada projek Dialog Windows Forms.

2.  Geret kontrol Button lain dari Toolbox dan jatuhkan di bawah tombol Buka dan tetapkan properti-propertinya sebagai berikut:
           Tetapkan Name menjadi tombolSimpan.
           Tetapkan Anchor menjadi Top, Right.
           Tetapkan Location menjadi 349, 43.
           Tetapkan Text menjadi Simpan.

3. Pada Toolbox, gulung ke bawah sampai Anda melihat kontrol SaveFileDialog dan kemudian geret kontrol itu dan jatuhkan pada form Anda. Kontrol tersebut akan ditambahkan di bawah form.

4. Klik ganda pada tombol Simpan untuk menciptakan event handler Click dan tambahkan kode yang ditebalkan berikut:

Private Sub tombolSimpan_Click(sender As Object, e As EventArgs) Handles tombolSimpan.Click
    'Menetapkan properti-properti dialog Save
    With SaveFileDialog1
        .DefaultExt = "txt"
        .FileName = strNamaFile
        .Filter = "Dokumen Teks (*.txt)|*.txt|Semua File (*.*)|*.*"
        .FilterIndex = 1
        .OverwritePrompt = True
        .Title = "Demo Dialog Save File"
    End With

    'Menampilkan dialog Save dan jika user mengklik tombol Save,
    'hal itu akan menyimpan file
    If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        Try
            'Menyimpan path dan nama file
            strNamaFile = SaveFileDialog1.FileName

        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, _
            MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End If
End Sub

5.  Sekarang saatnya untuk menggunakan kode snippet yang ada di dalam Visual Studio. Klik kanan pada ruang kosong di dalam statemen blok Try tepat sebelum statemen blok Catch dan pilih Insert Snippet dari menu konteks. Pada menu yang ditampilkan, klik ganda pada Fundamentals-Collections, Data Types, File System, Math dan kemudian pada list baru klik ganda File System-Processing Drives, Folders, and Files. Terakhir, gulung ke bawah list dan klik ganda pada Write Text to a File. Kode akan akan tampak seperti ini, dan Anda akan memerhatikan bahwa nama file C:\Test.txt disorot, yang mengindikasikan bahwa kode ini perlu diganti:

'Menampilkan dialog Save dan jika user mengklik tombol Save,
'hal itu akan menyimpan file
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    Try
        'Menyimpan path dan nama file
        strNamaFile = SaveFileDialog1.FileName
        My.Computer.FileSystem.WriteAllText("C:\Test.txt", "Text", True)
    Catch ex As Exception
        MessageBox.Show(ex.Message, My.Application.Info.Title, _
           MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End If

6.  Modifikasi kode di dalam blok Try seperti ditunjukkan di sini. Ganti “C:\Test.txt” dengan strNamaFile dan tambahkan kode berikut untuk menampilkan isi dari file teks:

'hal itu akan menyimpan file
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    Try
        'Menyimpan path dan nama file
        strNamaFile = SaveFileDialog1.FileName
        My.Computer.FileSystem.WriteAllText(strNamaFile, teksFile.Text, False)
    Catch ex As Exception
        MessageBox.Show(ex.Message, My.Application.Info.Title, _
           MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End If

7.  Pada titik ini, Anda siap untuk menguji kode ini, jadi jalankan projek Anda. Awali dengan pengujian sederhana. Ketikkan teks tertentu ke dalam kotak teks pada form dan kemudian klik tombol Simpan. Kotak dialog Save akan ditampilkan. Perhatikan bahwa kotak combo File name telah memiliki path dan nama file di dalamnya. Ini merupakan path yang telah ditetapkan pada variabel strNamaFile ketika Anda mendeklarasikannya pada latihan sebelumnya.

8.  Masukkan nama file baru tetapi jangan berikan ekstensi pada file itu. Kemudian klik tombol Save dan file akan disimpan. Untuk memverifikasinya, klik tombol Buka pada form untuk memanggil kotak dialog Open File; Anda akan melihat file baru Anda itu.

9.  Untuk menguji properti OverwritePrompt dari kontrol SaveFileDialog, masukkan teks tertentu ke dalam kotak teks pada form dan kemudian klik tombol Simpan. Pada kotak dialog Save File, pilih sebuah nama file yang telah ada dan kemudian klik tombol Save. Anda akan diminta untuk mengkonfirmasi penggantian file yang telah ada tersebut seperti ditunjukkan pada Gambar 6.8. Jika Anda memilih Yes, kotak dialog ini akan menghasilkan nilai DialogResult.OK, dan kode di dalam statemen If.End If akan dieksekusi. Jika Anda memilih No, Anda akan dibawa kembali ke kotak dialog Save File sehingga Anda bisa menentukan nama file lain.



GAMBAR 6.8

Penjelasan
Sebelum menampilkan kotak dialog Save File, Anda perlu menetapkan beberapa properti untuk memodifikasi dialog pada aplikasi Anda. Properti pertama yang Anda tetapkan adalah properti DefaultExt. Properti ini secara otomatis menetapkan ekstensi file jika user belum menetapkannya. Sebagai contoh, jika Anda menetapkan sebuah nama file dengan nama fileBaru tanpa ekstensi, maka kotak dialog secara otomatis akan menambahkan ekstensi .txt pada file tersebut, sehingga Anda akan memiliki sebuah nama file dengan nama fileBaru.txt.

.DefaultExt = "txt"

Properti FileName ditetapkan menjadi path dan nama file yang dihasilkan dari dialog Open File. Ini memampukan Anda untuk membuka file, mengeditnya, dan kemudian menampilkan nama file yangsama ketika Anda menampilkan kotak dialog Save File.

.FileName = strNamaFile

Dua properti selanjutnya sama dengan kontrol OpenFileDialog. Keduanya menetapkan filter ekstensi file yang akan ditampilkan pada kotak combol Save as Type: dan menetapkan filter awal:

.Filter = "Dokumen Teks (*.txt)|*.txt|Semua File (*.*)|*.*"
.FilterIndex = 1

Properti OverwritePrompt menerima sebuah nilai Boolean: True atau False. Ketika ditetapkan True, properti ini menampilkan sebuah kotak dialog MessageBox bila Anda memilih nama file yang telah ada. Jika Anda pilih Yes, kotak dialog Save File akan menghasilkan DialogResult.OK; jika Anda pilih No, Anda akan dibawa kembali ke kotak dialog Save File untuk memilih nama file lain. Ketika properti OverwritePrompt ditetapkan False, kotak dialog Save File tidak akan mengingatkan Anda bahwa Anda akan mengganti file yang telah ada, dan koda Anda akan melakukannya tanpa ijin dari user.

.OverwritePrompt = True

Properti Title menetapkan kapsion di batang judul dari kotak dialog Save File:

.Title = "Demo Dialog Save File"

Setelah Anda menetapkan sejumlah properti, Anda ingin menampilkan kotak dialog itu. Metode ShowDialog dari kontrol SaveFileDialog juga menghasilkan nilai balik bertipe data DialogResult, jadi Anda dapat menggunakan kontrol SaveFileDialog di dalam sebuah statemen If.End If untuk menguji nilai balik.

Jika use mengklik tombol Save pada kotak dialog Save File, maka kotak dialog itu akan menghasilkan nilai OK yang bertipe data DialogResult. Jika user mengklik tombol Cancel pada kotak dialog, maka ia akan menghasilkan nilai Cancel yang bertipe data DialogResult. Kode berikut menguji Windows.Forms.DialogResult.OK:

If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

Hal pertama yang Anda lakukan di sini adalah menyimpan path dan nama file yang dipilih oleh user pada variabel strNamaFile. Ini dilakukan ketika user telah memilih nama file baru pada kotak dialog:

Try
    'Menyimpan path dan nama file
    strNamaFile = SaveFileDialog1.FileName

Kemudian Anda memodifikasi snipper yang dihasilkan oleh Visual Studio dengan mengganti kode dengan variabel-variabel Anda. Pertama, Anda mengganti teks “C:\Test.txt” dengan variabel Anda, strNamaFile. Bagian ini membuka file untuk keluaran. Kemudian Anda mengganti teks “Text” dengan properti Text dari kotak teks pada form Anda. Bagian kode ini membaca isi dari kotak teks Anda dan menuliskannya ke dalam file. Parameter False di akhir kode ini mengindikasikan apakah teks akan ditempatkan ke belakang file. Sebuah nilai False mengindikasikan bahwa isi file akan ditulis menggantikan keseluruhan isi file sebelumnya.

My.Computer.FileSystem.WriteAllText(strNamaFile, teksFile.Text, False)

Kode terakhir pada blok If.End If ini hanyalah merupakan bagian akhir dari blok Try.Catch:

    Catch ex As Exception
        MessageBox.Show(ex.Message, My.Application.Info.Title, _
        MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End If


KONTROL FONTDIALOG
Kadangkala Anda bisa saja perlu menuliskan sebuah aplikasi yang membolehkan user untuk memilih font yang diinginkannya. Atau bisa jadi Anda ingin melihat semua font yang tersedia pada sistem tertentu. Di sinilah kontrol FontDialog dapat digunakan; ia menampilkan semua font yang terpasang pada komputer Anda pada sebuah dialog standar yang sering dilihat oleh user.

Seperti kontrol OpenFileDialog dan SaveFileDialog, kelas FontDialog dapat dipakai sebagai sebuah kontrol dengan menggeretnya ke dalam form, atau sebagai sebuah kelas dengan mendeklarasikannya di dalam kode.

Kontrol FontDialog mudah untuk digunakan; Anda hanya perlu menetapkan sejumlah properti, menampilkan kotak dialog, dan kemudian memeriksa properti-properti yang Anda perlukan.

Properti-Properti dari FontDialog
Tabel 6.8 mencantumkan sejumlah properti yang tersedia pada FontDialog.

Tabel 6.8: Sejumlah properti dari kontrol FontDialog
Properti
Penjelasan
AllowScriptChange



Color

Font

FontMustExist


MaxSize

MinSize

ShowApply

ShowColor

ShowEffects


ShowHelp
Mengindikasikan apakah user dapat mengubah himpunan karakter yang disediakan di dalam kotak drop-down untuk menampilkan himpunan karakter selain yang sedang ditampilkan.

Mengindikasikan warna font terseleksi.

Mengindikasikan font terseleksi.

Mengindikasikan apakah kotak dialog menetapkan sebuah kondisi error jika user mencoba memasukkan font yang tidak ada.

Mengindikasikan ukuran maksimum (dalam point) yang dapat dipilih user.

Mengindikasikan ukuran minimum (dalam point) yang dapat dipilih user.

Mengindikasikan apakah kotak dialog memuat sebuah tombol Apply.

Mengindikasikan apakah kotak dialog menampilkan pilihan warna.

Mengindikasikan apakah kotak dialog memuat kontrol-kontrol yang dapat dipakai user untuk menetapkan opsi strikethrough, underline, dan warna teks.

Mengindikasikan apakah kotak dialog menampilkan sebuah tombol Help.



Metode-Metode dari FontDialog
Anda hanya akan menggunakan satu metode (ShowDialog) dari FontDialog pada latihan berikut. Metode lain yang tersedia adalah Reset, yang dapat Anda pakai untuk mengatur semua properti menjadi nilai defautnya.

Menggunakan Kontrol FontDialog
Anda dapat menampilkan kontrol FontDialog tanpa menetapkan properti apapun:

FontDialog1.ShowDialog()

Kotak dialog akan ditampilkan seperti pada Gambar 6.9.

GAMBAR 6.9

Perhatikan bahwa kotak dialog memuat bagian Effects yang dapat Anda pakai untuk mencentang opsi Strikeout dan Underline. Namun, seleksi warna dari font tidak disediakan secara default. Jika Anda menginginkannya, Anda perlu menetapkan properti ShowColor sebelum memanggil metode ShowDialog pada kotak dialog:

FontDialog1.ShowColor = True
FontDialog1.ShowDialog()

Metode ShowDialog dari kotak dialog ini, sama seperti sebelumnya, menghasilkan sebuah nilai bertipe data DialogResult. Nilai tersebut berupa DialogResult.OK atau DialogResult.Cancel.

Ketika user selesai menggunakan kotak dialog ini, Anda dapat memeriksa properti Font dan Color untuk melihat font dan warna yang digunakan oleh user. Anda kemudian dapat memeriksa properti-properti lain dan menyimpannya pada sebuah variabel.

LATIHAN
Menggunakan FontDialog
Setelah Anda mengetahui tampilan dari kotak dialog Font dan bagaimana cara memanggilnya, Anda dapat menggunakannya pada latihan berikut. Dengan menggunakan program dari dua latihan terakhir, Anda akan bisa menempatkan isi file yang dibaca ke dalam kotak teks pada form. Anda kemudian dapat menggunakan kontrol FontDialog untuk menampilkan kotak dialog Font, yang dapat Anda pakai untuk memilih font. Kemudian Anda dapat mengubah font pada kotak teks menjadi font yang telah Anda pilih.

1.  Kembali ke mode Designer pada projek Dialog Windows Forms.

2.  Tambahkan tombol lain dari Toolbox dan tetapkan properti-propertinya sesuai dengan nilai-nilai berikut:
          Tetapkan Name menjadi tombolFont.
          Tetapkan Anchor menjadi Top, Right.
          Tetapkan Location menjadi 349, 73.
          Tetapkan Text menjadi Font.

3.  Anda akan perlu menambahkan kontrol FontDialog pada projek Anda, jadi cari kontrol ini dari jendela Toolbox dan geret dan tempatkan pada form Anda; kontrol tersebut akan ditempatkan di bawah form secara otomatis.

4.  Anda akan menambahkan kode berikut pada event handler Click dari tombol Font, jadi klik ganda pada tombol tersebut dan tambahkan kode yang ditebalkan berikut:

Private Sub tombolFont_Click(sender As Object, e As EventArgs) Handles tombolFont.Click
    'Menetapkan properti-properti dari dialog Font
    FontDialog1.ShowColor = True

    'Menampilkan dialog Font dan jika user mengklik tombol OK,
    'perbarui font dan warna pada kotak teks
    If FontDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        teksFile.Font = FontDialog1.Font
        teksFile.ForeColor = FontDialog1.Color
    End If
End Sub

5. Jalankan projek Anda. Ketika form Anda telah ditampilkan, klik tombol Font untuk menampilkan kotak dialog Font seperti ditunjukkan pada Gambar 6.10. Pilih font baru dan warna lain dan kemudian klik OK.

GAMBAR 6.10

6.  Ketikkan teks tertentu pada kotak teks pada form Anda. Teks akan ditampilkan dengan font dan warna yang telah Anda pilih.

7.  Font dan warna yang sama ini juga akan diterapkan pada teks yang dimuat dari sebuah file. Untuk mendemonstrasikannya, klik tombol Buka pada form dan buka sebuah file teks. Teks dari file tersebut akan ditampilkan dengan font dan warna yang telah Anda pilih pada kotak dialog Font.

Penjelasan
Anda mengetahui bahwa kotak dialog Font tidak menampilkan kotak Color secara default, jadi Anda perlu menetapkan properti ShowColor dari kontrol FontDialog menjadi True, sehingga kotak Color ditampilkan:

'Menetapkan properti-properti dari dialog Font
FontDialog1.ShowColor = True

Selanjutnya, Anda akan menampilkan kotak dialog Font. Ingat bahwa DialogResult akan menghasilkan sebuah nilai berupa OK atau Cancel, jadi Anda dapat membandingkan nilai balik dari kontrol FontDialog dengan Windows.Forms.DialogResult.OK. Jika tombol yang diklik user adalah OK, maka Anda mengeksekusi kode di dalam statemen If.End If:

'Menampilkan dialog Font dan jika user mengklik tombol OK,
'perbarui font dan warna pada kotak teks
If FontDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    teksFile.Font = FontDialog1.Font
    teksFile.ForeColor = FontDialog1.Color
End If

Anda menetapkan properti Font dari kotak teks (teksFile) sama dengan properti Font dari kontrol FontDialog. Ini adalah font yang dipilih user. Kemudian Anda menetapkan properti ForeColor dari kotak teks sama dengan properti Color dari kontrol FontDialog, karena ini adalah warna yang dipilih user. Setelah properti-properti ini diubah untuk kotak teks, teks yang ada pada kotak teks secara otomatis akan diperbarui untuk merefleksikan font dan warna baru. Jika kotak teks tidak memuat teks apapun, maka semua teks baru yang diketikkan atau dimuat ke kotak teks akan ditampilkan dengan font dan warna baru.


KONTROL COLORDIALOG
Kadangkala Anda perlu membolehkan user untuk memodifikasi warna pada form. Ini bisa jadi warna dari form itu sendiri, sebuah kontrol, atau teks pada sebuah kotak teks. Visual Basic menyediakan kontrol ColorDialog untuk kebutuhan itu. Sekali lagi, kontrol ColorDialog dapat dipakai sebagai sebuah kelas yang dideklarasikan di dalam kode tanpa menggeret sebuah kontrol dari jendela Toolbox.

Kontrol ColorDialog, seperti ditunjukkan pada Gambar 6.11, dapat dipakai user untuk memilih 48 warna dasar. Perhatikan bahwa user dapat mendefinisikan warna sendiri, menambahkan fleksibilitas warna pada aplikasi Anda. Ketika user mengklik tombol Define Custom Colors pada kotak dialog Color, kotak itu akan memperbarui warna untuk memenuhi kebutuhan Anda (lihat Gambar 6.12).

GAMBAR 6.11


GAMBAR 6.12

Dengan kesempatan modifikasi dan fleksibilitasn ini pada aplikasi Anda, Anda dapat memiliki form dengan tampilan profesional.


Properti-Properti dari ColorDialog
Sebelum Anda mempelajari kode, pelajari lebih dahulu properti-properti yang tersedia untuk kontrol ColorDialog, yang ditunjukkan pada Tabel 6.9.

TABEL 6.9: Sejumlah properti dari kontrol ColorDialog
Properti
Penjelasan
AllowFullOpen


AnyColor


Color

CustomColors

FullOpen


ShowHelp

SolidColorOnly
Mengindikasikan apakah user dapat menggunakan kotak dialog untuk mendefinisikan warna sendiri.

Mengindikasikan apakah kotak dialog menampilkan semua warna yang tersedia pada himpunan warna dasar.

Mengindikasikan warna yang diseleksi oleh user.

Mengindikasikan himpunan warna sendiri pada kotak dialog.

Mengindikasikan apakah kontrol-kontrol yang dipakai untuk menciptakan warna sendiri visibel ketika kotak dialog dibukan.

Mengindikasikan apakah tombol Help ditampilkan pada kotak dialog.

Mengindikasikan apakah kotak dialog akan membatasi user dalam memilih hanya warna-warna yang solid.


Tidak banyak properti yang perlu Anda khawatirkan untuk kotak dialog ini, yang membuatnya jauh lebih sederhana digunakan daripada kotak-kotak dialog lain yang telah Anda uji sejauh ini.

Sama seperti kotak dialog lainnya, ColorDialog memuat sebuah metode ShowDialog. Karena Anda telah menggunakan metode ini pada contoh-contoh sebelumnya, ia tidak perlu didiskusikan kembali.


Menggunakan Kontrol ColorDialog
Apa yang Anda perlu lakukan untuk menampilkan kotak dialog Color adalah mengeksekusi metode ShowDialog:

ColorDialog1.ShowDialog()

Kontrol ColorDialog akan menghasilkan nilai OK atau Cancel yang keduanya bertipe DialogResult.

Untuk membaca warna yang dipilih user, Anda dapat membaca himpunan nilai di dalam properti Color dan menugaskannya kepada sebuah variabel, seperti properti ForeColor dari sebuah kotak teks:

teksFile.ForeColor = ColorDialog1.Color


LATIHAN
Menggunakan Kontrol ColorDialog
Pada latihan ini, Anda akan melanjutkan penggunakan projek yang sama dan membuat kontrol ColorDialog menampilkan kotak dialog Color. Kemudian, jika kotak dialog menghasilkan OK (sebuah DialogResult), Anda dapat mengubah warna latar belakang dari form.

1.  Kembali ke mode Designer pada projek Dialog Windows Forms.

2. Pada form, tambahkan kontrol Button lain dari jendela Toolbox dan tetapkan properti-propertinya sesuai dengan nilai-nilai berikut:
          Tetapkan Name menjadi tombolWarna.
          Tetapkan Anchor menjadi Top, Right.
          Tetapkan Location menjadi 349, 103.
          Tetapkan Text menjadi Warna.

3. Tambahkan sebuah kontrol ColorDialog pada projek Anda dari jendela Toolbox. Ia akan ditambahkan secara otomatis ke bawah form.

4. Klik ganda pada tombol Warna untuk menciptakan event handler Click dan tambahkan kode yang ditebalkan berikut:

Private Sub tombolWarna_Click(sender As Object, e As EventArgs) Handles tombolWarna.Click
    'Menampilkan dialog Color dan jika user mengklik tombol OK,
    'perbarui warna latar dari form
    If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        Me.BackColor = ColorDialog1.Color
    End If
End Sub

5.   Hanya itu kode yang perlu Anda tambahkan. Mulai projek Anda untuk mengujinya.

6. Ketika form ditampilkan, klik pada tombol Warna untuk menampilkan kotak dialog Color. Pilih warna yang Anda sukai, atau ciptakan warna sendiri dengan mengklik tombol Define Custom Colors. Setelah Anda memilih warna, klik tombol OK pada kotak dialog Color. Warna latar dari form akan diubah sesuai warna yang Anda pilih.

7. Sama seperti kotak dialog Font, Anda tidak perlu menetapkan properti Color dari kontrol ColorDialog sebelum menampilkan kotak dialog Color kembali. Ia secara otomatis mengingat warna yang dipilih, dan ini akan menjadi warna yang diseleksi ketika kotak dialog ditampilkan kembali. Untuk mengujinya, klik tombol Warna kembali; warna yang Anda pilih sebelumnya merupakan warna terseleksi.

Penjelasan
Kali ini Anda tidak perlu menetapkan properti apapun dari kontrol ColorDialog, jadi Anda langsung menampilkannya di dalam sebuah statemen If.End If untuk memeriksa nilai DialogResult yang dihasilkan oleh metode ShowDialog pada kotak dialog ini:

If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

Di dalam statemen If.End If, Anda menambahkan kode yang diperlukan untuk mengubah properti BackColor dari form. Jika user mengklik tombol OK pada kotak dialog Color, warna latar dari form akan diubah menggunakan baris kode berikut:

Me.BackColor = ColorDialog1.Color




KONTROL PRINTDIALOG
Kebanyakan aplikasi akan memiliki kapabilitas pencetakan, baik itu pencetakan sederhana maupun pencetakan kompleks, seperti mengijinkan user untuk mencetak hanya bagian teks yang terseleksi atau rentang halaman tertentu. Pada bagian ini, Anda akan mengeksplorasi pencetakan dasar, melihat beberapa kelas yang dapat membantu Anda mencetak teks dari sebuah file.

Visual Basic menyediakan kontrol PrintDialog. Ia sebenarnya tidak melakukan pencetakan, tetapi memampukan Anda menyeleksi printer yang ingin Anda gunakan dan menetapkan properti-properti printer seperti arah halaman dan kualitas pencetakan. Anda juga dapat menggunakannya untuk menetapkan rentang halaman. Anda tidak akan menggunakan fitur-fitur ini pada contoh berikutnya, tetapi Anda perlu mengetahuinya bahwa fungsionalitas ini tersedia pada kontrol PrintDialog, seperti ditunjukkan pada Gambar 6.13.

GAMBAR 6.13

Sama seperti kotak dialog sebelumnya, dialog Print menyediakan tombol Print (yang berkaitan dengan tombol OK pada dialog lain) dan tombol Cancel; jadi, metode ShowDialognya menghasilkan sebuah nilai OK atau Cancel bertipe data DialogResult. Anda kemudian dapat menggunakan hasil ini di dalam sebuah statemen If.End If dan mengujinya.

Properti-Properti dari PrintDialog
Tabel 6.10 menunjukkan properti-properti yang disediakan dalam kontrol PrintDialog. Sama seperti kotak dialog lain, PrintDialog memiliki sebuah metode ShowDialog.

Tabel 6.10: Properti-properti dari kontrol PrintDialog
Properti
Penjelasan
AllowCurrentPage

AllowPrintToFile

AllowSelection

AllowSomPages

Document


PrinterSettings

PrintToFile

ShowHelp

ShowNetwork
Mengindikasikan apakah tombol opsi Current Page diaktifkan.

Mengindikasikan apakah kotak periksa Print to File diaktifkan.

Mengindikasikan apakah tombol opsi Selection diaktifkan.

Mengindikasikan apakah tombol opsi Pages diaktifkan.

Mengindikasikan dokumen cetak dipakai untuk mendapatkan pengaturan printer.

Mengindikasikan pengaturan printer yang akan dimodifikasi oleh kotak dialog.

Mengindikasikan apakah kotak periksa Print to File dicentang.

Mengindikasikan apakah tombol Help ditampilkan.

Mengindikasikan apakah tombol Network ditampilkan.


Menggunakan Kontrol PrintDialog
Satu-satunya metode yang akan Anda gunakan adalah metode ShowDialog, yang akan menampilkan kotak dialog Print yang ditampilkan pada Gambar 6.13 dengan hanya tombol opsi All page range diaktifkan. Seperti disebutkan sebelumnya, kontrol PrintDialog hanya menampilkan kotak dialog Print; ia tidak melakukan pencetakan. Kode berikut menunjukkan bagaimana Anda menampilkan kotak dialog Print:

PrintDialog1.ShowDialog()

Kelas PrintDocument
Sebelum Anda dapat memanggil metode ShowDialog dari kontrol PrintDialog, Anda perlu menetapkan properti Document dari kelas PrintDialog. Properti ini menerima sebuah kelas PrintDocument, yang dipakai untuk mendapatkan pengaturan printer dan dapat mengirimkan keluaran ke printer. Kelas ini memerlukan namespace System.Drawing.Printing, sehingga Anda perlu mencantumkan namespace ini sebelum mencoba mendefinisikan sebuah objek yang menggunakan kelas PrintDocument.

Properti-Properti dari Kelas PrintDocument

Sebelum melanjutkan, Anda perlu melihat properti-properti penting dari kelas PrintDocument, yang dicantumkan pada Tabel 6.11.

Tabel 6.11: Sejumlah properti dari kelas PrintDocument
Properti
Penjelasan
DefaultPageSettings

DocumentName



PrintController

PrinterSettings
Mengindikasikan pengaturan halaman default untuk dokumen.

Mengindikasikan nama dokumen yang ditampilkan saat pencetakan dokumen. Ini juga merupakan nama yang ditampilkan pada kotak dialog Print Status dan antrian pencetakan.

Mengindikasikan pengendali pencetakan yang memandu proses pencetakan.

Mengindikasikan printer yang mencetak dokumen.


Mencetak Dokumen
Metode Print dari kelas PrintDocument mencetak sebuah dokumen menggunakan printer yang ditetapkan pada properti PrinterSettings. Ketika Anda memanggil metode Print dari kelas PrintDocument, event PrintPage dipicu untuk tiap halaman yang dicetak. Oleh karena itu, Anda perlu menciptakan sebuah metode untuk event itu dan menambahkan event handler untuknya. Metode yang akan Anda ciptakan untuk event PrintPage akan melakukan pembacaan aktual atas data yang akan dicetak.

Pencetakan menggunakan kelas PrintDocument memerlukan banyak kode dan pengetahuan bagaimana pencetakan aktual dilakukan. Untungnya, dokumentasi help menyediakan sejumlah kode contoh pada kelas PrintDocument. Ini dapat dipakai sebagai titik awal untuk membantu Anda dalam memahami dasar-dasar pencetakan. Perhatikan bahwa kode contoh pada dokumentasi help mengasumsikan bahwa satu baris di dalam file yang akan dicetak tidak melebihi lebar dari halaman tercetak. Kode contoh pada dokumentasi help mendemonstrasikan bagaimana mencetak dari sebuah file.

LATIHAN
Menggunakan Kontrol PrintDialog
Pada latihan ini, Anda akan memeriksa bagaimana mencetak isi dari sebuah kotak teks.
1.   Kembali ke mode Designer pada projek Dialog Windows Forms.

2. Geret sebuah kontrol Button dari jendela Toolbox. Posisikan kontrol ini di bawah tombol Warna dan tetapkan properti-properti dari tombol baru ini:
          Tetapkan Name menjadi tombolCetak.
          Tetapkan Anchor menjadi Top, Right.
          Tetapkan Location menjadi 349, 133.
          Tetapkan Text menjadi Cetak.

3.  Tambahkan sebuah kontrol PrintDialog pada projek, geret dan jatuhkan kontrol ini dari Toolbox ke form. Ia secara otomatis akan ditambahkan ke bawah form.

4.   Tukar ke editor kode sehingga Anda dapat menambahkan namespace untuk pencetakan. Tambahkan namespace ini di atas kelas Anda:

Imports System.Drawing.Printing
Public Class Dialog

5.  Tambahkan deklarasi-deklarasi variabel berikut di atas kelas Anda:

'Mendeklarasikan variabel
Private strNamaFile As String
Private strRekamanCetak As String
Private WithEvents DialogPD As PrintDocument

6. Pilih DialogPD di dalam kotak combo Class Name dan event PrintPage di dalam kotak combo Method Name. Tambahkan kode yang ditebalkan pada event handler DialogPD_PrintPage:

Private Sub DialogPD_PrintPage(sender As Object, e As PrintPageEventArgs)
Handles DialogPD.PrintPage
    'Mendeklarasikan variabel-variabel
    Dim intKarakterCetak As Integer
    Dim intBarisPerHalaman As Integer
    Dim strCetakData As String
    Dim objStringFormat As New StringFormat
    Dim objCetakFont As New Font("Arial", 10)
    Dim objBatasHalaman As RectangleF
    Dim objLuasanCetak As SizeF

    'Mendapatkan batas-batas halaman
    objBatasHalaman = New RectangleF(e.MarginBounds.Left, _
    e.MarginBounds.Top, e.MarginBounds.Width, e.MarginBounds.Height)

    'Mendapatkan luasan cetak berdasarkan margin halaman dan font
    objLuasanCetak = New SizeF(e.MarginBounds.Width, _
    e.MarginBounds.Height - objCetakFont.GetHeight(e.Graphics))

    'Memecah antar kata pada sebuah baris
    objStringFormat.Trimming = StringTrimming.Word

    'Mendapatkan banyak karakter yang dicetak
    e.Graphics.MeasureString(strRekamanCetak, objCetakFont, objLuasanCetak, _
    objStringFormat, intKarakterCetak, intBarisPerHalaman)

    'Mendapatkan data cetak dari rekaman cetak
    strCetakData = strRekamanCetak.Substring(0, intKarakterCetak)

    'Mencetak halaman
    e.Graphics.DrawString(strCetakData, objCetakFont, Brushes.Black, _
    objBatasHalaman, objStringFormat)

    'Jika masih ada baris-baris, cetak halaman lain
    If intKarakterCetak < strRekamanCetak.Length Then
        'Hapus teks tercetak dari rekaman cetak
        strRekamanCetak = strRekamanCetak.Remove(0, intKarakterCetak)
        e.HasMorePages = True
    Else
        e.HasMorePages = False
    End If
End Sub

7.  Pilih tombolCetak di dalam kotak combo Class Name dan event Click pada kotak combo Method Name. Tambahkan kode yang ditebalkan berikut pada event handler tombolCetak_Click:

Private Sub tombolCetak_Click(sender As Object, e As EventArgs) Handles tombolCetak.Click
    'Menginstansiasi sebuah objek dari kelas PrintDocument
    DialogPD = New PrintDocument

    'Menetapkan properti-properti PrintDialog
    With PrintDialog1
        .AllowCurrentPage = False
        .AllowPrintToFile = False
        .AllowSelection = False
        .AllowSomePages = False
        .Document = DialogPD
        .PrinterSettings.DefaultPageSettings.Margins.Top = 25
        .PrinterSettings.DefaultPageSettings.Margins.Bottom = 25
        .PrinterSettings.DefaultPageSettings.Margins.Left = 25
        .PrinterSettings.DefaultPageSettings.Margins.Right = 25
    End With
    If PrintDialog1.ShowDialog = DialogResult.OK Then
        'Menetapkan pengaturan printer terseleksi pada PrintDocument
        DialogPD.PrinterSettings = PrintDialog1.PrinterSettings

        'Mendapatkan data cetak
        strRekamanCetak = teksFile.Text

        'Memanggil metode Print pada objek PrintDocument
        DialogPD.Print()
    End If
End Sub

8.  Anda sekarang siap untuk menguji kode Anda, jadi jalankan projek.

9.  Klik tombol Buka untuk membuka sebuah file, dan kemudian klik tombol Cetak untuk menampilkan kotak dialog yang ditampilkan pada Gambar 6.14. Jika Anda memiliki lebih dari satu printer terinstal, Anda dapat memilih nama printer yang Anda inginkan.

10. Klik tombol Print pada kotak dialog Print untuk mencetak teks Anda.

GAMBAR 6.14

Penjelasan
Anda memulai dengan mengimpor namespace System.Drawing.Printing, yang diperlukan untuk mendukung pencetakan. Ini adalah namespace dimana di dalamnya kelas PrintDocument didefinisikan.

Anda kemudian mendeklarasikan sebuah variabel dan objek yang diperlukan untuk pencetakan. Variabel strRekamanCetak adalah sebuah variabel string yang akan memuat data dari kotak teks yang akan dicetak. Objek DialogPD akan bertanggung jawab untuk mencetak teks tersebut.

Perhatikan katakunci WithEvents. Katakunci ini dipakai untuk mengacu ke sebuah kelas yang dapat memacu event-event, dan akan menyebabkan Visual Basic untuk mencantumkan event-event tersebut di dalam kotak combo Method Name di atas dari editor kode:

Private strRekamanCetak As String
Private WithEvents DialogPD As PrintDocument

Event handler DialogPD_PrintPage menangani pencetakan sebuah halaman keluaran. Event ini awalnya dipanggil setelah Anda memanggil metode Print pada objek yang didefinisikan sebagai kelas PrintDocument, pada kasus ini, DialogPD.

Event handler ini lah tempat dimana Anda menyediakan kode untuk pencetakan aktual dari sebuah dokumen, dan Anda perlu menentukan apakah masih ada halaman yang akan dicetak. Metode ini mengawalinya dengan sejumlah deklarasi variabel. Dua variabel pertama adalah tipe data Integer dan memuat banyak karakter yang akan dicetak pada sebuah halaman dan banyak baris yang dapat dicetak pada sebuah halaman.

Variabel strCetakData adalah sebuah tipe data String yang memuat semua data yang akan dicetak pada satu halaman. Variabel objStringFormat dideklarasikan sebagai sebuah kelas StringFormat, dan kelas ini mengenkapsulasi informasi tataletak teks yang dipakai untuk memformat data yang akan dicetak. Kelas StringFormat dipakai untuk memangkas data pada batas-batas kata sehingga teks tidak melewati luasan pencetakan dari sebuah halaman.

Objek objCetakFont didefinisikan sebagai sebuah kelas Font dan menetapkan font yang dipakai untuk teks tercetak, sedangkan objek objBatasHalaman didefinisikan sebagai sebuah struktur RectangleF. Struktur RectangleF memuat empat nilai titik-mengambang yang mendefinisikan lokasi dan ukuran dari sebuah persegi-panjang dan dipakai untuk mendefinisikan koordinat atas dan kiri dari sebuah halaman, berikut dengan lebar dan tingginya. Objek objLuasanCetak didefinisikan sebagai sebuah struktur SizeF dan memuat tinggi dan lebar dari luasan cetakan dari sebuah halaman. Ini merupakan luasan aktual yang dapat Anda cetak, bukan ukuran aktual dari halaman:

Private Sub DialogPD_PrintPage(sender As Object, e As PrintPageEventArgs) Handles DialogPD.PrintPage
    'Mendeklarasikan variabel-variabel
    Dim intKarakterCetak As Integer
    Dim intBarisPerHalaman As Integer
    Dim strCetakData As String
    Dim objStringFormat As New StringFormat
    Dim objCetakFont As New Font("Arial", 10)
    Dim objBatasHalaman As RectangleF
    Dim objLuasanCetak As SizeF

Kode di dalam metode ini mengawali dengan mendapatkan batas-batas halaman. PrintPageEventArgs yang dilewatkan kepada metode ini di dalam parameter e memuat koordinat atas dan kiri dari halaman berikut dengan tinggi dan lebar halaman. Nilai-nilai ini dipakai untuk menetapkan data pada objek objBatasHalaman.

Luasan pencetakan dari halaman dimuat di dalam properti Width dan Height dari PrintPageEventArgs. Tinggi aktual dari halaman dihitung menggunakan metode GetHeight dari kelas Font di dalam objek objCetakFont, karena tiap ukuran font memerlukan ruang vertikal tersendiri pada sebuah halaman:

'Mendapatkan batas-batas halaman
objBatasHalaman = New RectangleF(e.MarginBounds.Left, _
    e.MarginBounds.Top, e.MarginBounds.Width, e.MarginBounds.Height)

'Mendapatkan luasan cetak berdasarkan margin halaman dan font
objLuasanCetak = New SizeF(e.MarginBounds.Width, _
    e.MarginBounds.Height - objCetakFont.GetHeight(e.Graphics))

Anda sekarang menetapkan properti Trimming dari objek objStringFormat untuk menginstruksikannya memecah data pada sebuah baris menggunakan batas-batas kata. Ini dilakukan menggunakan enumerasi StringTrimming, yang memuat konstanta Word. Ini memastikan bahwa satu baris cetak tidak melebihi batas-batas dari sebuah halaman cetak.

Anda kemudian perlu menentukan banyak karakter yang akan cukup pada sebuah halaman berdasarkan luasan cetak dari halaman, ukuran font yang digunakan, dan data yang akan dicetak. Ini dilakukan menggunakan metode MeasureString dari kelas Graphics. Metode ini akan mengambil data yang akan dicetak, font yang digunakan pada halaman, dan luasan cetak dari halaman dan pemformatan yang akan diterapkan, dan kemudian menentukan banyak karakter yang dapat dicetak dan banyak baris yang cukup pada sebuah halaman cetak. Banyak karakter cetak dan banyak baris akan ditetapkan pada variabel intKarakterCetak dan intBarisPerHalaman, yang dilewatkan kepada metode MeasureString.

Setelah Anda mengetahui banyak karakter yang cukup pada sebuah halaman, Anda mendapatkan data itu dari variabel strRekamanCetak dan menetapkan data yang akan dicetak pada variabel strCetakData. Ini adalah variabel yangakan memuat data yang secara aktual dicetak:

'Memecah antar kata pada sebuah baris
objStringFormat.Trimming = StringTrimming.Word

'Mendapatkan banyak karakter yang dicetak
e.Graphics.MeasureString(strRekamanCetak, objCetakFont, objLuasanCetak, _
    objStringFormat, intKarakterCetak, intBarisPerHalaman)

'Mendapatkan data cetak dari rekaman cetak
strCetakData = strRekamanCetak.Substring(0, intKarakterCetak)

Setelah Anda memiliki data yang akan dicetak pada variabel strCetakData, Anda siap untuk mengirim data ke printer. Kali ini Anda akan menggunakan metode DrawString dari kelas Graphics. Metode ini akan memformat dan mengirimkan data ke printer.

Parameter-parameter yang Anda lewatkan kepada metode DrawString adalah data yang akan dicetak, font yang akan dipakai dalam pencetakan, sebuah objek Brushes yang merepresentasikan warna font dari teks yang akan dicetak, batas-batas halaman, dan sebuah objek StringFormat yang dipakai untuk memformat keluaran tercetak:

'Mencetak halaman
e.Graphics.DrawString(strCetakData, objCetakFont, Brushes.Black, _
    objBatasHalaman, objStringFormat)

Bagian terakhir dari kode di dalam metode ini menentukan apakah masih ada data yang akan dicetak. Anda membandingkan nilai yang dimuat di dalam variabel intKarakterCetak dengan panjang dari variabel strRekamanCetak menggunakan properti Length dari kelas String. Properti Length menghasilkan banyak karakter di dalam string.

Jika nilai yang dimuat di dalam variabel intKarakterCetak kurang dari panjang dari variabel strRekamanCetak, maka akan masih ada data yang akan dicetak. Pada kasus ini, Anda lebih dulu menghapus data dari strRekamanCetak yang telah dicetak menggunakan metode Remove dari kelas String. Metode Remove menerima posisi awal untuk menghapus data dan banyak data yang akan dihapus. Banyak data yang akan dihapus dimuat di dalam variabel intKarakterCetak, data yang telah dicetak.

Terakhir, Anda menetapkan properti HasMorePages dari parameter PrintPageEventArgs menjadi True, yang mengindikasikan bahwa masih ada data yang akan dicetak. Pengaturan properti ini menjadi True akan menyebabkan event PrintPage dari objek DialogPD dipicu sekali lagi, dan event handler ini akan dieksekusi kembali untuk melanjutkan pencetakan sampai semua data dicetak.

Jika tidak ada data lagi yang akan dicetak, Anda menetapkan properti HasMorePages menjadi False:

'Jika masih ada baris-baris, cetak halaman lain
    If intKarakterCetak < strRekamanCetak.Length Then
        'Hapus teks tercetak dari rekaman cetak
        strRekamanCetak = strRekamanCetak.Remove(0, intKarakterCetak)
        e.HasMorePages = True
    Else
        e.HasMorePages = False
End If

Kode di dalam event Click dari tombol Cetak kurang kompleks bila dibandingkan dengan kode di dalam event handler DialogPD_PrintPage. Metode ini mengawali dengan menginstansiasi sebuah objek baru dari kelas PrintDocument di dalam objek DialogPD.

Anda kemudian menetapkan properti-properti dari kontrol PrintDialog sebelum menampilkannya. Karena Anda hanya memiliki satu metode untuk menampilkan semua halaman, Anda akan menonaktif-kan fitur-fitur yang mengijinkan pencetakan hanya untuk halaman terkini, pencetakan ke sebuah file, pencetakan seleksi teks, dan pencetakan halaman tertentu. Ini semua dilakukan dengan menetapkan empat properti pertama di dalam kode menjadi False.

Selanjutnya, Anda perlu menetapkan properti Document dari PrintDialog menjadi objek PrintDocument Anda sehingga dialog tersebut dapat memuat pengaturan printer. Pengaturan printer diatur dan dibaca di dalam objek PrintDocument dan dapat diubah melalui properti PrinterSettings dari PrintDialog.

Terakhir, Anda menetapkan margin-margin default yang akan dipakai ketika mencetak dokumen di dalam properti PrinterSettings. Ini dapat dilakukan sebelum PrinterDialog ditampilkan:

'Menginstansiasi sebuah objek dari kelas PrintDocument
DialogPD = New PrintDocument

'Menetapkan properti-properti PrintDialog
    With PrintDialog1
        .AllowCurrentPage = False
        .AllowPrintToFile = False
        .AllowSelection = False
        .AllowSomePages = False
        .Document = DialogPD
        .PrinterSettings.DefaultPageSettings.Margins.Top = 25
        .PrinterSettings.DefaultPageSettings.Margins.Bottom = 25
        .PrinterSettings.DefaultPageSettings.Margins.Left = 25
        .PrinterSettings.DefaultPageSettings.Margins.Right = 25
End With

Hal terakhir yang ingin Anda lakukan pada metode ini adalah menampilkan PrintDialog dan memeriksa nilai OK bertipe DialogResult. Jika user mengklik tombol Print, PrintDialog akan menghasilkan nilai OK bertipe DialogResult dan Anda memanggil pencetakan data.

Hal pertama yang Anda lakukan pada blok If…Then adalah membaca pengaturan printer dari PrintDialog dan menetapkannya pada DialogPD. Jika user mengubah margin atau pengaturan printer lain, Anda dapat melewatkannya kepada PrintDocument yang dipakai untuk mencetak data.

Anda juga akan menetapkan data yang akan dicetak dari kotak teks pada variabel strRekamanCetak. Terakhir, Anda memanggil metode Print pada objek DialogPD untuk mengawali proses pencetakan. Pemanggilan metode Print akan memicu event PrintPage pada objek DialogPD, yang menyebabkan kode di dalam event handler DialogPD_PrintPage dieksekusi:

If PrintDialog1.ShowDialog = DialogResult.OK Then
    'Menetapkan pengaturan printer terseleksi pada PrintDocument
    DialogPD.PrinterSettings = PrintDialog1.PrinterSettings

    'Mendapatkan data cetak
    strRekamanCetak = teksFile.Text

    'Memanggil metode Print pada objek PrintDocument
    DialogPD.Print()
End If

KONTROL FOLDERBROWSERDIALOG
Kadangkala, Anda perlu membolehkan user untuk menyeleksi folder. Kontrol FolderBrowserDialog menampilkan kotak dialog Browse For Folder, yang memampukan user untuk memilih folder. Kotak dialog ini tidak menampilkan file, hanya folder-folder, yang menyediakan cara agar user dapat memilih folder yang diperlukan oleh aplikasi Anda.

GAMBAR 6.15

Sama seperti kotak dialog lain yang telah Anda pelajari sejauh ini, kontrol FolderBrowserDialog dapat pula digunakan sebagai sebuah kelas di dalam kode. Kotak dialog Browse For Folder, yang ditunjukkan pada Gambar 6.15 tanpa modifikasi apapun, memampukan user untuk menjelajah dan memilih folder. Perhatikan bahwa terdapat tombol Make New Folder yang dapat dipakai untuk menciptakan folder baru.

Properti-Properti dari FolderBrowserDialog
Sebelum Anda melanjutkan, Anda perlu menengok properti-properti yang tersedia untuk kontrol FolderBrowserDialog, yang ditampilkan pada Tabel 6.12.

Tabel 6.12: Sejumlah properti dari kontrol FolderBrowserDialog
Properti
Penjelasan
Description

RootFolder

SelectedPath

ShowNewFolderButton
Menyediakan pesan deskriptif pada kotak dialog.

Mengindikasikan folder akar dari mana kotak dialog mulai menjelajah.

Mengindikasikan folder yang diseleksi oleh user.

Mengindikasikan apakah tombol Make New Folder ditampilkan pada kotak dialog.

Sama seperti kontrol dialog lainnya, FolderBrowserDialog memuat sebuah metode ShowDialog. Anda telah melihat metode ini pada contoh-contoh sebelumnya, jadi tidak perlu dijelaskan kembali.


Menggunakan Kontrol FolderBrowserDialog
Sebelum manampilkan kotak dialog Browse For Folder, Anda perlu menetapkan beberapa properti dasar. Tiga properti utama yang perlu Anda tetapkan ditampilkan pada snippet kode beriku. Properti pertama adalah properti Description. Properti ini dipakai untuk menyediakan penjelasan atau instruksi bagi user Anda.

Properti berikutnya adalah RootFolder, yang menetapkan folder awal dari mana kotak dialog Browse For Folder menjelajah. Properti ini menggunakan salah satu konstanta dari enumerasi Environment.SpecialFolder.
Umumnya, Anda akan menggunakan konstanta MyComputer untuk menetapkan bahwa penjelajahan akan diawali pada level MyComputer, atau Anda akan menggunakan konstanta MyDocuments untuk menetapkan bahwa penjelajahan akan diawali pada level My Documents.

Properti terakhir yang ditunjukkan pada snippet kode ini adalah properti ShowNewFolderButton. Properti ni memiliki nilai default True, yang mengindikasikan bahwa tombol Make New Folder selalu ditampilkan. Namun, jika Anda tidak menginginkan tombol ini ditampilkan, Anda bisa menetapkannya menjadi False:

With FolderBrowserDialog1
   .Description = "Pilih folder"
   .RootFolder = Environment.SpecialFolder.MyComputer
   .ShowNewFolderButton = False
End With

Setelah Anda menetapkan properti-properti yang diperlukan, Anda mengeksekusi metode ShowDialog untuk menampilkan kotak dialog:

FolderBrowserDialog1.ShowDialog()

Kontrol FolderBrowserDialog akan menghasilkan nilai OK atau Cancel, yang keduanya bertipe data DialogResult. Di sini, Anda dapat menggunakan statemen yang ada di dalam statemen If.End If sebelumnya dan menguji apakah dihasilkan nilai OK atau tidak.

Untuk membaca folder yang dipilih oleh user, Anda cukup membaca nilai yang ditetapkan pada properti SelectedPath dan menugaskannya kepada sebuah variabel. Folder yang dihasilkan merupakan nama path lengkap. Sebagai contoh, jika Anda memilih sebuah folder dengan nama Temp di drive C akan, maka path yang akan dihasilkan adalah C:\Temp:

strFolder = FolderBrowserDialog1.SelectedPath

LATIHAN
Menggunakan Kontrol FolderBrowserDialog
Pada latihan ini, Anda akan melanjutkan projek Dialog Windows Forms dan menggunakan kontrol FolderBrowserDialog untuk menampilkan kotak dialog Browse For Folder. Kemudian, jika kotak dialog menghasilkan nilai OK, yang bertipe data DialogResult, maka Anda akan menampilkan folder terseleksi pada kotak teks pada form Anda.

1.   Kembali ke projek Dialog Windows Forms.

2. Tambahkan kontrol Button lain dari Toolbox ke form di bawah tombol Cetak dan tetapkan properti-propertinya sebagai berikut:
          Tetapkan Name menjadi tombolJelajah.
          Tetapkan Anchor menjadi Top, Right.
          Tetapkan Location menjadi 349, 163.
          Tetapkan Text menjadi Jelajah.

3.  Tambahkan sebuah kontrol FolderBrowserDialog pada projek Anda dari Toolbox. Ia akan ditambahkan secara otomatis ke bawah form.

4. Klik ganda pada tombol Jelajah untuk menciptakan event handler Click, dan tambahkan kode yang ditebalkan berikut:

Private Sub tombolJelajah_Click(sender As Object, e As EventArgs) Handles tombolJelajah.Click
    'Menetapkan properti-properti dialog FolderBrowser
    With FolderBrowserDialog1
        .Description = "Pilih folder"
        .RootFolder = Environment.SpecialFolder.MyComputer
        .ShowNewFolderButton = False
    End With
    'Menampilkan dialog FolderBrowser dan jika user mengklik
    'tombol OK, tampilkan folder terseleksi
    If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        teksFile.Text = FolderBrowserDialog1.SelectedPath
    End If
End Sub

5.  Ketika form ditampilkan, klik tombol Jelajah, dan Anda akan melihat dialog Browse For Folder seperti ditunjukkan pada Gambar 6.16.

GAMBAR 6.16

6.  Sekarang jelajah komputer Anda dan pilih sebuah folder. Ketika Anda mengklik tombol OK, folder terseleksi akan ditampilkan pada kotak teks pada form Anda. Perhatikan bahwa folder yang dihasilkan memuat nama path utuh.










No comments:

Post a Comment