File dan Struktur
Bab ini menunjukkan pada
Anda bagaimana menyimpan data ke dalam file teks sekuensial dan kemudian
membacanya kembali ke dalam sebuah aplikasi. Anda akan belajar bagaimana
menggunakan kontrol OpenFileDialog, SaveFileDialog, ColorDialog, dan FontDialog.
Anda dapat menggunakan kontrol-kontrol ini untuk melengkapi aplikasi Anda
dengan kotak-kotak dialog Windows
standar untuk membuka dan menyimpan file dan untuk memilih warna dan jenis
font. Anda akan mempelajari kontrol PrintDocument
dan bagaimana mencetak laporan dari aplikasi Anda. Terakhir, Anda akan belajar
bagaimana memaketkan unit-unit data ke dalam struktur.
7.1 Menggunakan File
KONSEP: File adalah sekumpulan data yang disimpan di disk penyimpanan
komputer. Data dapat disimpan di dalam file dan kemudian dibaca kembali.
Aplikasi-aplikasi yang
telah Anda ciptakan sejauh ini mensyaratkan Anda untuk memasukkan kembali data
setiap kali program dijalankan karena data yang disimpan di dalam
kontrol-kontrol dan variabel-variabel disimpan di dalam RAM, dan data tersebut
akan hilang begitu program berakhir.
Data dapat disimpan di
dalam sebuah file, pada disk penyimpanan komputer. Setelah disimpan, data tetap
ada meskipun program berhenti dijalankan dan dapat dibaca kembali saat
dibutuhkan. Pada bab ini, Anda akan menuliskan aplikasi-aplikasi yang
menciptakan file-file untuk menyimpan data. Aplikasi-aplikasi ini tidak
mensyaratkan user untuk memasukkan kembali data setiap kali aplikasi-aplikasi
tersebut dijalankan.
Proses Penggunaan
File
Langkah-langkah berikut
harus dilakukan ketika file digunakan oleh aplikasi:
1.
File harus dibuka. Jika file belum ada, pembukaan
file berarti juga penciptaan file baru.
2.
Data dituliskan ke dalam file atau dibaca dari
file.
3.
Ketika aplikasi selesai menggunakan file, file
tersebut akan ditutup.
Ketika sebuah aplikasi
Visual Basic secara aktif bekerja dengan data, data tersebut ditempatkan di
dalam memori, biasanya di dalam variabel-variabel dan/atau properti-properti
kontrol. Ketika data dituliskan ke dalam file, data itu disalin dari
variabel-variabel dan/atau properti-properti kontrol, seperti ditunjukkan pada
Gambar 7.1.
Gambar 7.1 Menuliskan data ke dalam
sebuah file
Ketika data dibaca dari
file, ia disalin dari file ke variabel dan/atau properti kontrol, seperti
ditunjukkan pada Gambar 7.2.
Gambar 7.2 Membaca dari sebuah file
Istilah file masukan dan
file keluaran sering digunakan. File
masukan adalah sebuah file dari mana sebuah program membaca data. Dikatakan
file masukan karena data yang disimpan di dalamnya berperan sebagai masukan ke
program. File keluaran adalah sebuah
file ke mana sebuah program menuliskan data. Dikatakan file keluaran karena
program menyimpan keluarannya ke dalam file. Pada buku ini, Anda akan
mempelajari tipe paling sederhana dari file data, yang dikenal sebagai file akses-sekuensial. Kadangkala tipe
file ini disebut pula dengan file teks karena ia dapat dengan mudah diciptakan
dan dimodifikasi menggunakan editor teks seperti Windows Notepad.
Menuliskan ke
File dengan Objek StreamWriter
Ada dua cara dalam
membuka file teks sehingga Anda dapat menuliskan data ke dalamnya: Anda dapat
menciptakan sebuah file baru atau Anda dapat membuka sebuah file yang telah ada
sehingga data ditempelkan (ditempatkan di belakang data yang ada) di dalam file.
Penulisan ke dalam file dilakukan oleh objek StreamWriter. Ada dua langkah yang perlu dilakukan:
1.
Deklarasikan sebuah variabel StreamWriter.
2. Jika Anda ingin menciptakan sebuah file baru,
panggil File.CreateText dan tugaskan
nilai baliknya kepada variabel StreamWriter.
Atau, jika Anda ingin menempelkan data ke file teks yang telah ada, panggil File.AppendText dan tugaskan nilai
baliknya kepada variabel StreamWriter.
Sebelum menggunakan objek
StreamWriter, Anda harus menyisipkan
statemen Imports di atas kode file form Anda. Ini akan membuat kelas-kelas StreamWriter tersedia bagi program
Anda:
Imports
System.IO
CATATAN: Adalah dimungkinkan untuk mengabaikan statemen Imports System.IO, tetapi setiap referensi ke kelas StreamWriter harus menggunakan nama
utuhnya, yaitu System.IO.StreamWriter.
Menciptakan File
Teks
Pertama, Anda akan
menciptakan sebuah file teks baru. Diawali dengan mendeklarasikan sebuah
variabel StreamWriter, gunakan
bentuk umum berikut:
Dim
VarObjek As StreamWriter
VarObjek adalah nama dari variabel objek. Anda bisa menggunakan Private atau Public menggantikan Dim
jika Anda mendeklarasikan variabel objek pada level-kelas atau level-modul.
Berikut adalah contohnya:
Dim
fileTelp As StreamWriter
Selanjutnya, Anda
memanggil metode File.CreateText,
lewatkan kepadanya nama dari file. Sebagai contoh:
fileTelp
= File.CreateText("daftarTelp.txt")
Perhatikan bagaimana
nilai balik dari File.CreateText
ditugaskan kepada variabel StreamWriter
dengan nama fileTelp.
Nama file yang Anda
lewatkan kepada metode File.CreateText
dapat memuat path lengkap, seperti C:\data\filevb\daftarTelp.txt.
Jika Anda hanya menggunakan nama file tanpa path, file yang akan diciptakan
berada di lokasi yang sama dengan file eksekutabel dari aplikasi, yang secara
default berada di dalam folde \bin\Debug
pada projek Anda.
Jika file tidak dapat
diciptakan, metode File.CreateText
akan melemparkan sebuah eksepsi. Ini bisa terjadi jika Anda menetapkan path
yang salah, atau jika aplikasi Anda tidak memiliki ijin untuk menciptakan file
pada lokasi tertentu.
Membuka File yang
Telah Ada dan Menempelkan Data ke dalamnya
Di sini, diasumsikan
bahwa file teks telah ada, dan Anda ingin menambahkan data ke akhir file
tersebut. Pertama, Anda mendeklarasikan sebuah variabel StreamWriter:
Dim
fileTelp As StreamWriter
Kemudian Anda memanggil
metode File.AppendText,
melewatkannya nama dari file yang telah ada. Sebagai contoh:
fileTelp =
File.AppendText("daftarTelp.txt")
Setiap data yang
dituliskan ke dalam file akan dituliskan ke akhir dari isi file yang telah ada.
Jika file yang Anda tetapkan sebagai argumen kepada metode File.AppendText
tidak ada, file itu akan diciptakan. Jika file tersebut tidak dapat dibuka atau
diciptakan, maka metode akan melemparkan eksepsi. Sebagai contoh, eksepsi akan
terjadi jika Anda menetapkan path yang salah, atau jika aplikasi Anda tidak
memiliki ijin untuk menciptakan file pada lokasi tertentu.
Menuliskan Data
ke dalam File
Metode WriteLine dari kelas StreamWriter menuliskan sebaris data ke
dalam sebuah file. Bentuk umum dari metode ini adalah:
VarObjek.WriteLine(Data)
VarObjek adalah nama dari sebuah variabel objek StreamWriter. Data merepresentasikan konstanta-konstanta atau
variabel-variabel yang isinya akan dituliskan ke dalam file. Metode WriteLine menuliskan data ke file dan
kemudian menuliskan sebuah karakter garis-bari (newline) setelah data itu. Karakter garis-baru adalah sebuah
karakter yang tak terlihat yang memisahkan teks.
Untuk lebih memahami
bagaimana metode WriteLine bekerja,
perhatikan contoh berikut. Asumsikan bahwa sebuah aplikasi membuka suatu file
dan menuliskan tiga nama siswa dan skor ujiannya ke dalam file dengan kode
berikut:
Dim
fileSiswa As StreamWriter
Try
'membuka file
fileSiswa = File.CreateText("DataSiswa.txt")
'menuliskan data ke dalam file
fileSiswa.WriteLine("John")
fileSiswa.WriteLine(95)
fileSiswa.WriteLine("Krista")
fileSiswa.WriteLine(98)
fileSiswa.WriteLine("Bob")
fileSiswa.WriteLine(82)
Catch
MessageBox.Show("Error: File tidak
dapat diciptakan.")
End try
Anda dapat memvisualisasi
data yang sedang dituliskan ke dalam file dengan cara berikut:
John<newline>95<newline>Krista<newline>98<newline>Bob<newline>82<newline>
Karakter newline direpresentasikan di sini
sebagai <newline>. Anda sebenarnya tidak bisa melihat karakter newline, tetapi ketika file dibuka pada
sebuah editor teks seperti Notepad, isinya ditampilkan seperti pada Gambar 7.3.
Seperti yang dapat Anda lihat dari gambar, setiap karakter newline menyebabkan data yang mengikutinya ditampilkan pada garis
baru.
Gambar 7.3 Isi file ditampilkan
pada Notepad
Selain memisahkan isi
dari sebuah file pada baris-baris, karakter newline juga berperan sebagai
pemisah atau delimiter. Delimiter adalah sebuah item yang memisahkan item lain.
Ketika Anda menuliskan data ke dalam sebuah file menggunakan metode WriteLine, karakter newline berperan
sebagai delimiter. Nanti, Anda akan melihat bahwa data perlu dipisahkan agar ia
dapat dibaca dari file.
Menuliskan Baris
Kosong ke dalam File
Metode WriteLine dapat menuliskan sebuah baris
kosong ke dalam file dengan memanggil metode ini tanpa argumen:
teksFile.WriteLine()
Metode Write
Metode Write, sebuah anggota dari kelas StreamWriter, menuliskan sebuah item
data ke dalam file tanpa menuliskan karakter newline. Bentuk umumnya adalah berikut:
VarObjek.Write(Data)
VarObjek adalah nama dari sebuah variabel objek StreamWriter. Data
merepresentasikan isi dari konstanta atau variabel yang akan dituliskan ke
dalam file. Metode ini dapat dipakai untuk menuliskan data ke dalam sebuah file
tanpa menghentikan baris dengan karakter newline.
Sebagai contoh, diasumsikan bahwa sebuah aplikasi memiliki sebuah variabel
objek StreamWriter dengan nama fileKeluaran, berikut dengan
variabel-variabel berikut:
Dim
strNama As String = "John Kristoff"
Dim
intId As Integer = 47895
Dim
strTelp As String = "555–7864"
Isi dari ketiga variabel
dituliskan ke dalam satu baris di dalam file:
fileKeluaran.Write(strNama)
fileKeluaran.Write("
")
fileKeluaran.Write(intId)
fileKeluaran.Write("
")
fileKeluaran.WriteLine(strTelp)
Statemen pertama
menuliskan variabel strNama ke dalam
file. Statemen kedua menuliskan sebuah karakter spasi (“ “), statemen ketiga
menuliskan variabel intId, dan
statemen keempat menuliskan spasi lain. Statemen terakhir menggunakan metode WriteLine untuk menuliskan nomor
telepon, yang diikuti dengan sebuah karakter newline. Berikut adalah contoh keluaran yang dihasilkan:
John
Kristoff 47895 555—7864
Menutup File
Kebalikan dari pembukaan
file adalah penutupan file. Kelas StreamWriter
memiliki sebuah metode dengan nama Close
untuk menutup file. Berikut adalah bentuk umum dari metode ini:
StreamWriter.Close()
Setelah metode ini
dieksekusi, file yang direferensi oleh VarObjek
akan ditutup. Sebagai contoh, dimisalkan bahwa filePenjualan adalah sebuah variabel objek yang mereferensi sebuah
objek StreamWriter. Statemen berikut
menutup file yang berkaitan dengan filePenjualan:
filePenjualan.Close()
Untuk menghindari
hilangnya data, aplikasi Anda sebaiknya selalu menutup file ketika Anda selesai
menggunakannya. Komputer umumnya menciptakan satu atau lebih buffer (area
memori) ketika sebuah file dibuka. Ketika sebuah aplikasi menuliskan data ke
dalam file, data itu lebih dahulu dituliskan ke buffer. Ketika buffer terisi,
semua data yang disimpan di sana dituliskan ke dalam file. Teknik ini memperbaiki
kinerja sistem karena penulisan data ke memori jauh lebih cepat daripada
penulisannya ke dalam file. Metode Close
menuliskan semua informasi yang tidak tersimpan yang tersisa di dalam buffer
dan membebaskan memori yang dialokasikan oleh objek StreamWriter.
Tutorial 7.1: Menyempurnakan Aplikasi
Yang Menuliskan Data Ke File
Langkah 1: Buka projek Demo WriteLine File.
Form aplikasi ditunjukkan pada Gambar 7.4.
Gambar 7.4 Form aplikasi Demo WriteLine File
Langkah 2: Sempurnakan kode untuk dua event handler pada form seperti ditunjukkan
berikut. (Jangan ketika nomor baris, karena ia hanya untuk referensi). Pastikan
untuk menuliskan statemen Imports
yang ditunjukkan pada baris 1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
Imports
System.IO
Public Class Form1
Private
Sub tombolCiptakan_Click(…) Handles tombolCiptakan.Click
'konstanta untuk banyak teman
Const intBANYAK_TEMAN As Integer = 3
'variabel-variabel lokal
Dim strNamaFile As String 'nama file
Dim strTeman As String 'nama teman
Dim strTelp As String 'untuk memuat nomor telepon
Dim intHitung As Integer 'pencacah loop
Dim fileTeman As StreamWriter 'variabel objek StreamWriter
'membaca nama file dari user
strNamaFile = InputBox("Masukkan
nama file.")
Try
'membuka file
fileTeman = File.CreateText(strNamaFile)
'membaca data dan menuliskannya
ke dalam file
For intHitung = 1 To
intBANYAK_TEMAN
'membaca nama teman
strTeman =
InputBox("Masukkan nama teman " &
"nomor " &
intHitung.ToString())
'membaca nomor telepon teman
strTelp =
InputBox("Masukkan nomor telepon " &
"teman.")
'menuliskan data ke dalam
file
fileTeman.WriteLine(strTeman)
fileTeman.WriteLine(strTelp)
Next
'menutup file
fileTeman.Close()
Catch
'pesan error
MessageBox.Show("File tidak
dapat diciptakan.")
End Try
End Sub
Private
Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
'menutup form
Me.Close()
End Sub
End Class
|
Periksa event handler tombolCiptakan_Click. Berikut adalah
simpula dari deklarasi-deklarasi yang ada pada baris 7 sampai baris 14:
·
Baris 7: Konstanta intBANYAK_TEMAN ditetapkan 3. Ini adalah banyak teman yang datanya
akan disimpan.
·
Baris 10: Variabel strNamaFile akan memuat path dan nama file yang akan diciptakan
oleh aplikasi.
·
Baris 11: Variabel strTemen akan memuat nama dari teman.
·
Baris 12: Variabel strTelp akan memuat nomor telepon teman.
·
Baris 13: Variabel intHitung akan dipakai sebagai pencacah loop.
·
Baris 14: Variabel fileTeman adalah sebuah variabel objek yang akan dipakai untuk
membuka file dan menuliskan data ke dalamnya.
Baris 17 menggunakan
sebuah kotak masukan untuk meminta user memasukkan nama file. Nama file
kemudian ditugaskan kepada variabel strNamaFile.
Statemen Try-Catch yang diawali pada baris 19
akan menangkap sembarang eksepsi yang dilemparkan. Baris 21 mencoba menciptakan
file yang ditetapkan oleh path dan nama file yang dimasukkan oleh user. Jika
file tidak bisa diciptakan, sebuah eksepsi akan dilemparkan dan program
melompat ke klausa Catch pada baris 40. Jika file berhasil diciptakan, loop
For…Next pada baris 24 akan dieksekusi.
Ketika loop dieksekusi,
ia akan beriterasi tiga kali, dengan variabel intHitung mengambil nilai 1 sampai 3.
Di dalam loop, statemen
pada baris 26 sampai baris 27 menggunakan sebuah kotak masukan untuk meminta
user memasukkan nama teman. Nama yang dimasukkan oleh user ditugaskan kepada
variabel strTeman. Kemudian statemen
pada baris 30 sampai baris 31 menggunakan sebuah kotak masukan untuk meminta
user memasukkan nomor telepon teman. Nomor telepon yang dimasukkan user
ditugaskan kepada variabel strTelp.
Baris 34 menuliskan nama teman ke dalam file, dan baris 35 menuliskan nomor
telepon ke dalam file. Kemudian, loop diulangi lagi. Ketika loop selesai
dieksekusi, baris 39 menutup file.
Langkah 3: Simpan projek.
Jalankan aplikasi dan klik tombol Ciptakan File. Ketika diminta untuk
memasukkan nama file, sediakan path dari lokasi disk. Sebagai contoh, jika Anda
menuliskan C:\TemanKu.txt, maka
aplikasi akan menciptakan file TemanKu.text
di direktori akar dari drive C. Jika Anda memasukkan C:\Temp\TemanKu.txt, maka aplikasi akan menciptakan file TemanKu.txt di dalam folder C:\Temp. Masukkan path dan nama file
yang tepat karena Anda akan menggunakan file yang sama kembali pada Tutorial 7.2.
Langkah 4: Masukkan tiap nama dan nomor telepon berikut:
Nama: Telepon:
John Kristoff 555-1234
Vivian Siahaan 222-3456
Patricia Joy 888-6789
Langkah 5: Pada Windows Explorer, cari
file yang diciptakan ketika Anda menjalankan aplikasi. Klik ganda pada file
tersebut untuk membukanya pada editor teks. Isi file ditampilkan pada Gambar 7.5.
Seperti yang dapat Anda lihat, setiap item dituliskan pada baris terpisah
karena karakter newline memisahkan tiap item.
Langkah 6: Tutup jendela Notepad yang menampilkan file teks.
Menempelkan Data
ke dalam File
Ketika Anda menempelkan
data ke dalam sebuah file, Anda menuliskan data baru di tempat setelah data
yang sebelumnya ada di dalam file tersebut. Jika file yang telah ada dibuka
dengan metode AppendText, data yang
dituliskan ke dalam file ditempelkan ke belakang file. Jika file tidak ada,
file baru akan diciptakan. Sebagai contoh, diasumsikan bahwa file TemanKu.txt telah ada dan memuat data
berikut, dari Tutorial 7.1:
John Kristoff
555-1234
Vivian Siahaan
222-3456
Patricia Joy
888-6789
Statemen-statemen berikut
membuka file dengan mode append dan menuliskan data ke belakang file:
'mendeklarasikan
sebuah variabel objek
Dim
fileTeman As StreamWriter
'membuka
file
fileTeman
= File.AppendText("TemanKu.txt")
'menulis
data
fileTeman.WriteLine("Krista
Simanungkalit")
fileTeman.WriteLine("555–4545")
'menutup
file
fileTeman.Close()
Setelah kode ini
dieksekusi, file TemanKu.txt akan
memuat data berikut:
John Kristoff
555-1234
Vivian Siahaan
222-3456
Patricia Joy
888-6789
Krista
Simanungkalit
555–4545
Membaca File
dengan Objek StreamReader
Untuk membaca data dari
sebuah file teks sekuensial, Anda menggunakan objek StreamReader. Kelas StreamReader
menyediakan metode-metode untuk membaca data dari file. Proses penciptaan objek
StreamReader sama dengan penciptaaan
objek StreamWriter, yang telah
didiskusikan. Pertama, Anda mendeklarasikan sebuah variabel objek dengan
statemen deklarasi dengan bentuk umum berikut:
Dim
VarObjek As StreamReader
VarObjek adalah nama dari variabel objek. Sama seperti variabel biasa, Anda bisa
menggunakan penspesifikasi akses Private
atau Public jika Anda
mendeklarasikan variabel objek pada level-kelas atau level-modul.
Selanjutnya, Anda
memanggil metode File.OpenText, yang
menciptakan sebuah instansi dari objek StreamReader
dan menyimpan alamatnya di dalam variabel objek. Bentuk umum dari metode ini
adalah berikut:
File.OpenText(Namafile)
NamaFile adalah sebuah string atau variabel string yang menetapkan path dan/atau
nama file yang akan dibuka. Metode ini membuka file dengan menetapkan Namafile dan menghasilkan sebuah objek StreamReader yang dapat dipakai untuk
membaca data dari file. Jika file tidak ada, atau file tidak dapat dibukan,
sebuah eksepsi akan dilemparkan. Kode berikut menunjukkan proses dua-langkah
dalam membuka file dan menugaskan objek StreamReader:
Dim
fileKonsumen As StreamReader
fileKonsumen
= File.OpenText("konsumen.txt")
Statemen pertama
mendeklarasikan sebuah variabel objek dengan nama fileKonsumen. Statemen kedua membuka file konsumen.txt dan menghasilkan alamat dari sebuah objek StreamReader yang dapat dipakai membaca
data dari file. Alamat dari objek StreamReader
ditugaskan kepada variabel fileKonsumen.
Sama seperti pada kasus
kelas StreamWriter, Anda perlu
menuliskan statemen Imports di atas file kode Anda:
Imports
System.IO
Membaca Data dari
File
Metode ReadLine pada kelas StreamReader membaca sebaris data dari
sebuah file. Bentuk umum dari metode ini adalah berikut:
VarObjek.ReadLine()
VarObjek adalah nama dari sebuah variabel objek StreamReader. Metode ini membaca sebaris data dari file yang
berkaitan dengan VarObjek dan
menghasilkan data sebagai sebuah string. Sebagai contoh, diasumsikan bahwa fileKonsumen adalah sebuah objek StreamReader dan strNamaKonsumen adalah sebuah variabel string. Statemen berikut
membaca sebaris data dari file dan menyimpannya di dalam variabel string
tersebut:
strNamaKonsumen
= fileKonsumen.ReadLine()
Sebuah objek StreamReader membaca data hanya dengan
arah maju. Ketika file dibuka, posisi pembacaan atau posisi item yang akan
dibaca adalah item pertama di dalam file. Ketika data dibaca, posisi pembacaan
bergerak maju. Sebagai contoh, perhatikan file dengan nama Kutipan.txt, seperti ditunjukkan pada Gambar 7.6. Seperti yang Anda
dapat lihat dari gambar, file tersebut mempunyai tiga baris teks. Dimisalkan
bahwa sebuah program membuka file dengan kode berikut:
Dim
fileTeks As StreamReader
fileTeks =
File.OpenText("Kutipan.txt")
Ketika kode ini membuka
file, posisi pembacaannya berada di awal baris pertama, seperti diilustrasikan
pada Gambar 7.7.
Statemen berikut membaca
sebaris data dari file, dimulai dari posisi pembacaan terkini, dan diakhiri
pada penanda end-of-line:
strMasukan
= fileTeks.ReadLine()
Setelah statemen ini
dieksekusi, variabel strMasukan akan
memuat string “Imajinasi lebih”. Penanda
akhir baris (end-of-line) yang tak
terlihat dilompati, dan posisi pembacaan ditempatkan di awal dari baris kedua.
Gambar 7.8 mengilustrasikan posisi pembacaan terkini.
Jika metode ReadLine dipanggil kembali, baris kedua
dibaca dari file dan posisi pembacaan file maju ke baris ketiga. Setelah semua
baris dibaca, posisi pembacaan berada di akhir file.
Menutup File
Penutupan sebuah objek StreamReader yang terbuka dilakukan
dengan memanggil metode Close.
Bentuk umumnya adalah berikut:
VarObjek.Close()
Pada Tutorial 7.2, Anda menyempurnakan sebuah aplikasi yang menggunakan statemen ReadLine untuk membaca file yang telah Anda ciptakan pada Tutorial 7.1.
Tutorial 7.2: Menyempurnakan Aplikasi
Yang Membaca File
Langkah 1: Buka projek Demo ReadLine File. Form aplikasi, yang
telah diciptakan bagi Anda, ditampilkan pada Gambar 7.9.
Langkah 2: Sempurnakan kode untuk
event-event handler seperti ditunjukkan berikut. (Jangan ketikkan nomor baris,
karena hanya ditujukan untuk referensi). Pastikan untuk menuliskan statemen Imports yang ditunjukkan pada baris 1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
Imports
System.IO
Public Class Form1
Private
Sub tombolBaca_Click(…) Handles tombolBaca.Click
'konstanta untuk banyak teman
Const intBANYAK_TEMAN As Integer = 3
'variabel-variabel lokal
Dim fileTeman As StreamReader 'variabel objek
Dim strNamafile As String 'nama file
Dim strTeman As String 'nama teman
Dim strTelp As String 'memuat nomor telepon
Dim intHitung As Integer 'pencacah loop
'membaca nama file dari user
strNamafile = InputBox("Masukkan
nama file.")
Try
'membuka file
fileTeman = File.OpenText(strNamafile)
'membaca data
For intHitung = 1 To
intBANYAK_TEMAN
'membaca nama dan nomor
telepon dari file
strTeman =
fileTeman.ReadLine()
strTelp =
fileTeman.ReadLine()
'menampilkan data pada kotak
list
listTeman.Items.Add("Nomor Teman " &
intHitung.ToString())
listTeman.Items.Add("Nama: " & strTeman)
listTeman.Items.Add("Telepon: " & strTelp)
listTeman.Items.Add("")
'menambahkan baris kosong
Next
'menutup file
fileTeman.Close()
Catch
MessageBox.Show("File tidak
bisa dibuka.")
End Try
End Sub
Private
Sub tombolBersihkan_Click(…) Handles tombolBersihkan.Click
'membersihkan kotak list
listTeman.Items.Clear()
End Sub
Private
Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
'menutup form
Me.Close()
End Sub
End Class
|
Periksa event handler tombolBaca_Click. Berikut adalah
simpula dari deklarasi-deklarasi yang ada pada baris 7 sampai baris 14:
·
Baris 7: Konstanta intBANYAK_TEMAN ditetapkan 3. Ini adalah banyak teman yang datanya
akan dibaca.
·
Baris 10: Variabel fileTeman adalah sebuah objek
variabel yang dipakai untuk membuka file dan membaca data dari file tersebut.
·
Baris 11: Variabel strNamaFile akan memuat path dan nama file yang akan diciptakan
oleh aplikasi.
·
Baris 12: Variabel strTemen akan memuat nama dari teman.
·
Baris 13: Variabel strTelp akan memuat nomor telepon teman.
·
Baris 14: Variabel intHitung akan dipakai sebagai pencacah loop.
Baris 17 menggunakan
sebuah kotak masukan untuk meminta user memasukkan nama file. Nama file
kemudian ditugaskan kepada variabel strNamaFile.
Statemen Try-Catch yang diawali pada baris 19
akan menangkap sembarang eksepsi yang dilemparkan. Baris 21 mencoba menciptakan
file yang ditetapkan oleh path dan nama file yang dimasukkan oleh user. Jika
file tidak bisa diciptakan, sebuah eksepsi akan dilemparkan dan program
melompat ke klausa Catch pada baris 38.
Jika file berhasil diciptakan, loop For…Next
pada baris 24 akan dieksekusi.
Ketika loop dieksekusi,
ia akan beriterasi tiga kali, dengan variabel intHitung mengambil nilai 1 sampai 3.
Di dalam loop, statemen pada baris 26 membaca sebaris data dari file dan
menugaskannya kepada variabel strTemen,
dan baris 27 membaca baris data berikutnya dari file dan menugaskannya kepada
variabel strTelp. Baris 30 sampai
baris 33 menambahkan data temen ini pada kotak list, yang diikuti dengan sebuah
baris kosong. Kemudian, loop akan diulangi kembali. Ketika loop selesai
dieksekusi, baris 39 menutup file.
Langkah 3: Simpan projek. Jalankan
aplikasi dan klik tombol Baca Dari File.
Sebuah kotak masukan akan ditampilkan yang meminta user untuk memasukkan nama
file. Masukkan path dan nama file yang Anda telah gunakan untuk menciptakan
file pada Langkah 3 dari Tutorial 7.1. Ketika Anda mengklik tombol OK pada
kotak masukan, data dibaca dari file dan ditampilkan pada kotak list, seperti
ditunjukkan pada Gambar 7.10. Jika Anda tidak mengetikkan path dan nama file
yang sama seperti yang Anda lakukan pada Tutorial 7.1, Anda akan melihat sebuah
kotak pesan yang mengindikasikan bahwa file tidak ditemukan. Pada kasus itu,
klik tombol Baca Dari File kembali, kali ini masukkan path dan nama file yang tepat.
Langkah 4: Klik tombol Keluar untuk mengakhiri aplikasi.
Menentukan Apakah
File Ada atau Tidak
Metode File.OpenText melemparkan sebuah
eksepsi jika file yang dicoba dibuka tidak ada. Untuk menghindari eksepsi, Anda
dapat memanggil metode File.Exists
untuk menentukan apakah sebuah file ada atau tidak sebelum Anda mencoba
membukanya. Bentuk umum dari metode ini adalah berikut:
File.Exists(Namafile)
Namafile adalah nama dari sebuah file, yang mencakup path. Metode ini menghasilkan
True jika fila ada atau False jika file tidak ada. Kode berikut
menunjukkan sebuah contoh bagaimana menggunakan metode ini untuk menentukan
apakah sebuah file ada atau tidak sebelum Anda mencoba membuka file:
If
File.Exists(strNamafile) Then
'membuka file
fileMasukan = File.OpenText(strNamafile)
Else
MessageBox.Show(strNamafile & " tidak
ada.")
End If
Menggunakan vbTab
untuk Menyejajarkan Item-Item
Konstanta pustaka vbTab menggeser posisi penampilan maju
ke depan sejauh kelipatan 8. Anda dapat menggunakannya untuk menyejajarkan
kolom-kolom yang ditampilkan atau dicetak agar lebih efektif. Berikut adalah
sebuah contoh sederhana, yang ditampilkan pada sebuah kotak list, dari sebuah
garis referensi yang diikuti dengan tiga baris yang menampilkan tab-tab dan
karakter-karakter:
kotakList.Items.Add("012345678901234567890")
kotakList.Items.Add("X"
& vbTab & "X")
kotakList.Items.Add("XXXXXXXXXXXX"
& vbTab & "X")
kotakList.Items.Add(vbTab
& vbTab & "X")
Pada keluaran pada Gambar
7.11, konstanta vbTab pada baris
kedua menggeser posisi penampilan maju sejauh 8 kolom sebelum menampilkan huruf
X. (Posisi penampilan dinomori dari 0). Pada baris ketiga dan keempat, posisi
penampilan bergeser ke kolom 16 sebelum menampilkan huruf X akhir.
Anda perlu sebentar
kembali ke aplikasi Demo ReadLine File
dari Tutorial 7.2 untuk menampilkan informasi teman dengan cara yang sedikit
lebih baik. Hal ini dilakukan dengan menyisipkan tab-tab di antara label-label
dan nama-nama pada kotak list. Berikut adalah kode termodifikasi dari loop di
dalam event handler tombolBaca_Click:
'menampilkan data pada kotak list
listTeman.Items.Add("Nomor Teman " &
vbTab & intHitung.ToString())
listTeman.Items.Add("Nama: " & vbTab
& vbTab & strTeman)
listTeman.Items.Add("Telepon: " & vbTab
& vbTab & strTelp)
listTeman.Items.Add("") 'menambahkan baris kosong
Keluaran yang dihasilkan
dari kode ini ditunjukkan pada Gambar 7.12.
Mendeteksi Akhir
File
Aplikasi Demo ReadLine File pada Tutorial 7.2
dirancang untuk membaca tiga rekaman persis. Ini karena Anda mengetahui berapa
banyak rekaman data yang disimpan di dalam file. Pada banyak kasus, banyak data
di dalam sebuah file tidak diketahui. Pada kasus ini, Anda menggunakan properti
EndOfStream dari objek StreamReader untuk menentukan apakah
akhir file telah diraih atau tidak. Jika akhir file telah diraih, properti EndOfStream akan ditetapkan True. Sebaliknya, ia ditetapkan False.
Contoh berikut
menggunakan sebuah loop Do Until
yang menggunakan properti EndOfStream
untuk menentukan apakah akhir dari file Skor.txt
telah diraih ata tidak. Loop membaca semua baris dari file dan menambahkannya
pada kotak list listHasil:
Dim
fileSkor As StreamReader
Dim
strMasukan As String
fileSkor
= File.OpenText("Skor.txt")
Do
Until fileSkor.EndOfStream
strMasukan = fileSkor.ReadLine()
listHasil.Items.Add(strMasukan)
Loop
fileSkor.Close()
Tutorial 7.3 memeriksa
sebuah aplikasi yang mendeteksi akhir dari sebuah file.
Tutorial 7.3: Memeriksa Sebuah Aplikasi
Yang Mendeteksi Akhir File
Langkah 1: Buka projek Demo File. Form
ditunjukkan pada Gambar 7.13.
Langkah 2: Klik tombol Ciptakan File.
Sebuah kotak masukan akan ditampilkan dan menanyakan: Berapa banyak integer
yang ingin Anda masukkan? Tekan 5 dan tekan Enter.
Langkah 3: Karena Anda meminta lima integer, aplikasi akan meminta Anda lima kali
menggunakan kotak masukan. Masukkan nilai 2, 4, 6, 8, dan 10. Aplikasi akan
menuliskan nilai-nilai ini ke dalam sebuah file.
Langkah 4: Setelah Anda memasukkan nilai terakhir, klik tombol Baca File. Aplikasi
membaca nilai-nilai dari file dan menampilkannya pada kotak list, seperti
ditunjukkan pada Gambar 7.14. Klik tombol Keluar
untuk mengakhiri aplikasi.
Langkah 5: Bukan jendela Code. Bagian
pertama dari kelas form, termasuk event handler tombolCiptakan_Click, ditunjukkan di sini dengan nomor baris untuk
referensi.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
Imports
System.IO
Public Class Form1
'konstanta level-kelas untuk nama file
Private Const strNAMAFILE As String =
"Nilai.txt"
Private
Sub tombolCiptakan_Click(…) Handles tombolCiptakan.Click
'variabel-variabel lokal
Dim fileKeluaran As StreamWriter 'variabel objek
Dim intBanyaMaks As Integer 'banyak nilai yang dimasukkan
Dim intHitung As Integer = 0 'pencacah loop, ditetapkan 0
Dim intNilai As Integer 'untuk menampung masukan user
Try
'membaca banyak nilai dari user
intBanyaMaks =
CInt(InputBox("Berapa banyak integer yang " &
"ingin Anda
masukkan?"))
Try
'menciptakan file
fileKeluaran =
File.CreateText(strNAMAFILE)
'membaca nilai-nilai dan
menuliskannya ke file
Do While intHitung < intBanyaMaks
Try
'membaca sebuah
integer
intNilai =
CInt(InputBox("Masukkan sebuah integer."))
'menuliskan integer
ke dalam file
fileKeluaran.WriteLine(intNilai)
'menginkremen
intHitung
intHitung += 1
Catch
'pesan error untuk
integer tak valid
MessageBox.Show("Nilai terakhir
yang Anda masukkan bukanlah " &
"integer yang
valid. Silahkan coba lagi.")
End Try
Loop
'menutup file
fileKeluaran.Close()
Catch
'pesan error untuk error
penciptaan file
MessageBox.Show("Error
menciptakan file " & strNAMAFILE)
End Try
Catch
'pesan error untuk masukan tak
valid
MessageBox.Show("Silahkan
masukkan integer.")
End Try
End Sub
|
Amati kode ini lebih
dekat. Baris 1 menunjukkan statemen Imports.System.IO,
dan deklarasik kelas form diawali pada baris 3. Baris 5 mendeklarasikan sebuah
konstanta level-kelas dengan nama strNAMAFILE
untuk nama file yang akan digunakan.
Berikut adalah simpulan
dari deklarasi-deklarasi yang ada pada baris 9 sampai baris 12:
- Baris 9: Variabel fileKeluaran adalah sebuah variabel objek yang akan dipakai untuk membuka file dan menuliskan data ke dalamnya.
- Baris 10: Variabel intBanyakMaks akan menampung banyaknya nilai integer yang akan dituliskan ke dalam file.
- Baris 11: Variabel intHitung akan dipakai sebagai pencacah loop.
- Baris 12: Variabel intNilai akan menampung sebuah nilai yang dimasukkan oleh user, yang akan dituliskan ke dalam file. Perhatikan bahwa Anda secara eksplisit menginisialisasi intHitung dengan 0.
Perhatikan bahwa statemen
Try-Catch diawali pada baris 14, dan
kemudian baris 16 sampai baris 17 menggunakan kotak masukan untuk meminta user
memasukkan banyak nilai integer yang ingin dimasukkan. Jika user memasukkan
nilai yang tidak valid, fungsi CInt
pada baris 16 akan melemparkan eksepsi dan program akan melompat ke klausa Catch pada baris 49.
Jika user memasukkan
nilai integer yang valid, program akan berlanjut untuk menciptakan file.
Perhatikan statemen Try-Catch lain
diawali pada baris 19, dan kemudian pada baris 21 menciptakan file. Jik file
tidak dapat diciptakan, metode File.CreateText
akan melemparkan eksepsi dan program akan melompat ke klausa Catch pada baris 44.
Jika file berhasil
diciptakan, program akan berlanjut untuk membaca nilai-nilai dari user dan
menuliskannya ke dalam file. Loop Do
While yang diawali pada baris 24 beriterasi sepanjang nilai intHitung kurang dari intBanyakMaks. Perhatikan bahwa di
dalam loop, sebuah statemen Try-Catch
diawali pada baris 25, dan kemudian baris 27 menggunakan kotak masukan untuk
meminta user memasukkan sebuah integer. Jika user memasukkan nilai tak valid,
maka fungsi CInt pada baris 27 akan
melemparkan sebuah eksepsi dan program akan melompat ke klausa Catch pada baris 34. Jika user
memasukkan integer yang valid, maka pada baris 30 menuliskan integer itu ke
dalam file, dan baris 33 menginkremen intHitung.
Setelah loop selesai dieksekusi, baris 42 akan menutup file.
Langkah 6: Sekarang lihat event handler tombolBaca_Click,
yang ditunjukkan di sini dengan nomor baris sebagai referensi:
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
Private
Sub tombolBaca_Click(…) Handles tombolBaca.Click
'variabel-variabel lokal
Dim fileMasukan As StreamReader
'variabel objek
Dim strMasukan As String 'untuk menampung sebaris masukan
Try
'membuka file
fileMasukan =
File.OpenText(strNAMAFILE)
'membersihkan kotak list
listKeluaran.Items.Clear()
'membaca isi file
Do Until fileMasukan.EndOfStream
'membaca sebaris data dari
file
strMasukan =
fileMasukan.ReadLine()
'menambahkan baris masukan
pada kotak list
listKeluaran.Items.Add(strMasukan)
Loop
'menutup file
fileMasukan.Close()
Catch
'pesan error untuk error
pembukaan file
MessageBox.Show(strNAMAFILE &
" tidak dapat dibuka.")
End Try
End Sub
|
Amati kode ini lebih
dekat. Berikut adalah simpulan dari deklarasi-deklarasi yang ada pada baris 57
dan baris 58:
·
Baris 57: Variabel fileMasukan adalah sebuah variabel objek yang akan dipakai untuk
membuka file dan membaca data darinya.
·
Baris 58: Variabel strMasukan akan menampung sebaris masukan yang dibaca dari file.
Perhatikan bahwa sebuah
statemen Try-Catch diawali pada
baris 60, dan kemudian pada baris 62 membuka file. Jika file tidak dapat
dibuka, metode File.OpenText akan
melemparkan eksepsi dan program akan melompat ke klausa Catch pada baris 78. (Ini akan terjadi, misalnya, bila user
mengklik tombol Baca File sebelum file diciptakan).
Jika file berhasil
dibuka, baris 65 akan membersihkan isi dari kotak list. Kemudian loop Do Until pada baris 68 akan dieksekusi.
Loop akan beriterasi sampai properti fileMasukan.EndOfStram
bernilai True, yang mengindikasikan
bahwa akhir file telah diraih. Selama tiap iterasi loop, baris 70 membaca
sebaris data dari file dan menugaskannya kepada variabel strMasukan, dan baris 73 menambahkan strMasukan pada kotak list. Setelah loop selesai dieksekusi, baris
77 menutup file.
Metode-Metode
StreamReader Lain
Kelas StreamReader juga menyediakan metode Read dan ReadToEnd, yang akan didiskusikan. Bentuk umum dari metode Read adalah berikut:
VarObjek.Read
VarObjek adalah nama dari sebuah variabel objek StreamReader. Metode Read
hanya membaca karakter berikutnya dari sebuah file dan menghasilkan kode
integer untuk karakter tersebut. Untuk mengkonversi kode integer menjadi
karakter, Anda menggunakan fungsi Chr,
seperti ditunjukkan pada kode berikut:
Dim
fileTeks As StreamReader
Dim
strMasukan As String = String.Empty
fileTeks
= File.OpenText("nama.txt")
Do
While Not fileTeks.EndOfStream
strMasukan &= Chr(fileTeks.Read)
Loop
fileTeks.Close()
Kode ini membuka file nama.txt. Loop Do While, yang beriterasi sampai ia meraih akhir dari file,
mengeksekusi statemen berikut:
strMasukan
&= Chr(fileTeks.Read)
Statemen ini membaca kode
integer untuk karakter berikutnya di dalam file, mengkonversinya menjadi sebuah
karakter menggunakan fungsi Chr, dan
menyambungkan karakter itu ke variabel string strMasukan. Ketika loop selesai dieksekusi, variabel string strMasukan akan memuat isi menyeluruh
dari file nama.txt.
Bentuk umum dari metode ReadToEnd adalah berikut:
VarObjek.ReadToEnd
VarObjek adalah nam dari sebuah variabel objek StreamReadr. Metode ReadToEnd
membaca dan menghasilkan isi keseluruhan dari sebuah file, diawali dari posisi
pembacaan terkini. Berikut adalah contohnya:
Dim
fileTeks As StreamReader
Dim
strMasukan As String
fileTeks
= File.OpenText("nama.txt")
strMasukan
= fileTeks.ReadToEnd()
fileTeks.Close()
Statemen strMasukan = teksFile.ReadToEnd()
membaca isi file dan menyimpannay ke dalam variabel strMasukan.
Bekerja dengan Array
dan File
Penyimpanan isi array ke
dalam suatu file adalah hal mudah. Anda menggunakan loop untuk menjejak setiap
elemen array, kemudian menuliskan isi array ke dalam file. Sebagai contoh,
diasumsikan bahwa sebuah aplikasi memiliki sebuah deklarasi array:
Dim
intNilai() As Integer = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Kode berikut membuka
sebuah file dengan nama Nilai.txt
dan menuliskan isi dari setiap elemen array intNilai ke dalam file:
Dim
fileKeluaran as StreamWriter
fileKeluaran
= File.CreateText("Nilai.txt")
For
intHitung = 0 To (intNilai.Length – 1)
fileKeluaran.WriteLine(intNilai(intHitung))
Next
fileKeluaran.Close()
Pembacaan isi file ke
dalam sebuah array juga hal yang mudah. Kode berikut membuka file Nilai.txt dan membaca isinya ke dalam
elemen-elemen array intNilai:
Dim
fileMasukan as StreamReader
fileMasukan
= File.OpenText("Nilai.txt")
For
intHitung = 0 To (intNilai.Length – 1)
intNilai(intHitung) = CInt(fileMasukan.ReadLine())
Next
fileMasukan.Close()
7.2 Kontrol OpenFileDialog,
SaveFileDialog, FontDialog, dan ColorDialog
KONSEP: VISUAL BASIC menyediakan sejumlah kontrol dialog yang melengkapi
aplikasi Anda untuk pembukaan file, penyimpanan file, pemilihan jenis font dan
warna.
Sejauh ini,
aplikasi-aplikasi pada bab ini yang membuka file menetapkan nama file sebagai
bagian dari kode atau mensyaratkan user untuk memasukkan path dan nama file.
Hampir semua pengguna Windows terbiasa menggunakan kotak dialog untuk
menjelajah disk dalam mencari file untuk dibuka atau untuk menyimpan file. Anda
dapat menggunakan kontrol OpenFileDialog
dan SaveFileDialog untuk melengkapi
aplikasi-aplikasi Anda.
Kontrol
OpenFileDialog
Kontrol OpenFileDialog menampilkan sebuah kotak
dialog Windows Open standar, seperti
yang ditunjukkan pada Gambar 7.15. Kotak dialog Open berguna pada aplikasi-aplikasi yang bekerja dengan file. Kotak
dialog ini dapat dipakai user untuk mencari file yang akan dibuka, tanpa perlu
mengetikkan nama file dan pathnya.
Menambahkan
Kontrol OpenFileDialog Pada Projek Anda
Untuk menempatkan kontrol
OpenFileDialog pada sebuah form,
Anda mengklik ganda tool OpenFileDialog
pada tab Dialogs pada jendela Toolbox. Karena kontrol tidak terlihat
pada saat aplikasi dijalankan, ia dimunculkan pada component tray pada saat perancangan. Anda akan menggunakan prefiks
ofd ketika menamai kontrol ini.
Menampilkan Kotak
Dialog Open
Anda menampilkan kotak
dialog Open dengan memanggil metode ShowDialog dari kontrol OpenFileDialog. Berikut adalah bentuk
umum dari metode ini:
NamaKontrol.ShowDialog()
NamaKontrol adalah nama dari kontrol OpenFileDialog.
Sebagai contoh, diasumsikan bahwa ofdOpenFile
adalah nama dari sebuah kontrol OpenFileDialog.
Statemen berikut memanggil metode ShowDialog:
ofdOpenFile.ShowDialog()
Metode ShowDialog menghasilkan salah satu
nilai, yaitu Windows.Forms.DialogResult.OK
atau Windows.Forms.DialogResult.Cancel,
yang mengindikasikan tombol mana, OK
atau Cancel, yang diklik oleh user
untuk menutup kotak dialog. Ketika user memilih sebuah file dengan kotak dialog
Open, path dan nama file disimpan di
dalam properti Filename.
Kode berikut menampilkan
sebuah kotak dialog dan menentukan apakah user telah menyeleksi sebuah file
atau tidak. Jika ya, nama file akan ditampilkan berikut:
If
ofdOpenFile.ShowDialog() = Windows.Forms.DialogResult.OK Then
MessageBox.Show(ofdOpenFile.FileName)
Else
MessageBox.Show("Anda tidak memilih
file apapun.")
End
If
Properti Filter
Kotak dialog Open memiliki sebuah kotak list Files of type, yang menampilkan sebuah
filter yang menetapkan tipe file yang terlihat di dalam kotak dialog. Filter
umumnya menggunakan karakter * yang diikuti dengan ekstensi file. Sebagai
contoh, filter *.txt menetapkan
bahwa hanya file yang diakhiri dengan ekstensi .txt yang akan ditampilkan. Filter *.doc menetapkan bahwa hanya file yang diakhiri dengan ekstensi .doc yang akan ditampilkan. Filter *.* akan menampilkan semua file.
Kotak dialog pada Gambar 7.16 menunjukkan sebuah kotak
list dengan filter *.txt dan *.*.
Anda menggunakan properti
Filter untuk menetapkan filter pada
kotak list Files of type. Properti
ini dapat ditetapkan pada jendela Properties pada saat perancangan, atau dengan
kode. Ketika menyimpan sebuah nilai pada properti Filter, Anda menyimpan sebuah string yang memuat deskripsi filter
dan filter itu sendiri. Deskripsi dan filter dipisahkan dengan simbol |.
Sebagai contoh, diasumsikan bahwa sebuah aplikasi memiliki sebuah kontrol OpenFileDialog dengan nama ofdOpenFile. Statemen berikut
menetapkan properti Filter untuk file-file teks:
ofdOpenFile.Filter
= "File teks (*.txt)|*.txt"
Bagian dari string yang
ada sebelum simbol | adalah deskripsi filter, dan ditampilkan pada kotak list
Files of type. Bagian dari string yang ada setelah simbol | adalah filter itu
sendiri. Pada contoh ini, deskripsi filter adalah File teks
(*.txt) dan filternya adalah *.txt.
Simbol | juga dipakai
untuk memisahkan beberapa filter. Sebagai contoh, statemen berikut menyimpan
dua filter di dalam ofdOpenFile.Filter:
*.txt dan *.*:
ofdOpenFile.Filter
= "File teks (*.txt)|*.txt|Semua file (*.*)|*.*"
Deskripsi dari filter
pertama adalah File teks (*.txt) dan
filternya adalah *.txt. Deskripsi dari filter kedua adalah Semua file (*.*), dan filternya adalah *.*.
Properti
InitialDirectory
Secara default, kotak
dialog Open menampilkan direktori
terkini (atau folder). Anda bisa menetapkan direktori lain agar ditampilkan
dengan menetapkan path pada properti InitialDirectory.
Sebagai contoh, kode berikut menyimpan path C:\Data pada properti ofdOpenFile.InitialDirectory
sebelum menampilkan kotak dialog Open:
ofdOpenFile.InitialDirectory
= "C:\Data"
ofdOpenFile.ShowDialog()
Dengan kotak dialog Open ditampilkan, ia menunjukkan isi
dari direktori C:\Data.
Properti Title
Anda dapat mengubah teks
default yang ditampilkan pada batang judul dari kotak dialog Open dengan menyimpan string di dalam
properti Title.
Menggunakan Kotak
Dialog Open Untuk Membuka File
Kode berikut
mengasumsikan bahwa ofdOpenFile
adalah nama dari kontrol OpenFileDialog.
Ia mendemonstrasikan bagaimana menetapkan properti Filter, InitialDirectory,
dan Title, menampilkan kotak dialog Open, membaca nama file yang dimasukkan
oleh user, dan membuka file.
'mengkonfigurasi
kotak dialog Open dan menampilkannya dengan
With
ofdOpenFile
.Filter = "File teks (*.txt)|*.txt|Semua
file (*.*)|*.*"
.InitialDirectory = "C:\Data"
.Title = "Pilih File yang Akan Dibuka"
If.ShowDialog() =
Windows.Forms.DialogResult.OK Then
fileMasukan = File.OpenText(.Filename)
End If
End With
Kontrol
SaveFileDialog
Kontrol SaveFileDialog menampilkan sebuah kotak
dialog Save As standar. Gambar 7.17
menampilkan sebuah contoh dari kotak dialog ini.
Kotak dialog Save As berguna pada aplikasi-aplikasi
yang bekerja dengan file. Kotak ini dapat dipakai user untuk menjelajah disk
dan memilih lokasi dan nama file.
Kontrol SaveFileDialog memiliki banyak kesamaan
dengan kontrol OpenFileDialog. Anda
mengklik ganda pada ikon SaveFileDialog
pada jendela Toolbox untuk
menempatkan kontrol itu pada form. Karena kontrol tidak terlihat pada saat
aplikasi dijalankan, ia dimunculkan pada component
tray pada saat perancangan. Anda akan menggunakan prefiks sfd ketika menamai kontrol ini.
Anda menampilkan kotak
dialog Save As dengan menampilkan metode ShowDialog
dari kontrol SaveAsDialog. Berikut
adalah bentuk umum dari metode ini:
NamaKontrol.ShowDialog()
NamaKontrol adalah nama dari kontrol SaveFileDialog.
Sebagai contoh, diasumsikan bahwa sfdSaveFile
adalah nama dari sebuah kontrol SaveFileDialog.
Statemen berikut memanggil metode ShowDialog
dari kontrol tersebut:
sfdSaveFile.ShowDialog()
Metode ini menghasilkan salah
satu nilai ini: Windows.Forms.DialogResult.OK
atau Windows.Forms.DialogResult.Cancel,
yang mengindikasikan tombol mana, OK
atau Cancel, yang diklik oleh user
untuk menutup kotak dialog.
Properti Filename memuat nama file yang
diseleksi atau dimasukkan oleh user. Kode berikut mengasumsikan bahwa sfdOpenFile adalah nama dari kontrol SaveFileDialog. Ia mendemonstrasikan
bagaimana menetapkan properti Filter,
InitialDirectory, dan Title, menampilkan kotak dialog Save As, membaca nama file yang
dimasukkan oleh user, dan membuka file.
'mengkonfigurasi
kotak dialog Save As dan menampilkannya dengan
With
sfdOpenFile
.Filter = "File teks (*.txt)|*.txt|Semua
file (*.*)|*.*"
.InitialDirectory = "C:\Data"
.Title = "Simpan File Sebagai"
If.ShowDialog() =
Windows.Forms.DialogResult.OK Then
fileKeluaran =
System.IO.File.OpenText(.Filename)
End If
End With
Pada Tutorial 7.4, Anda
akan mempelajari kontrol OpenFileDialog
dan SaveFileDialog dengan
menciptakan sebuah aplikasi editor teks sederhana. Anda juga akan belajar
tentang properti MultiLine, properti
WordWarp, dan event TextChanged dari kontrol TextBox.
Tutorial 7.4: Menciptakan Sebuah
Aplikasi Editor Teks Sederhana
Pada tutorial ini, Anda
akan menciptakan sebuah aplikasi pengeditan teks sederhana yang dapat Anda
pakai untuk menciptakan dokumen, menyimpannya, dan membuka dokumen yang ada.
Aplikasi ini akan menggunakan properti MultiLine
dari kontrol TextBox untuk menampung
teks dokumen. Aplikasi ini juga akan menggunakan sistem menu yang ditunjukkan
pada Gambar 7.18.
Gambar 7.18 Sistem menu editor teks
sederhana
Tabel 7.1 mencantumkan
item-item menu yang diperlukan, yang menunjukkan isi dari properti Text dan properti ShortcutKeys.
Tabel 7.1 Item-item menu dengan masing-masing properti Text dan ShortcutKeys
Nama Item Menu
|
Properti Text
|
Properti ShortcutKeys
|
mnuFile
mnuFileBaru
mnuFileBuka
mnuFileSimpan
mnuFileSimpanSbg
mnuFileKeluar
mnuHelp
mnuHelpTentang
|
&File
&Baru
B&uka
&Simpan
S&impan Sbg
&Keluar
&Help
&Tentang
|
(Tidak ada)
Ctrl + B
Ctrl + U
Ctrl + S
Ctrl + I
Ctrl + K
(Tidak ada)
(Tidak ada)
|
Langkah 1: Ciptakanlah sebuah projek Windows
Forms Application dengan nama Editor
Teks Sederhana.
Langkah 2: Tetapkan properti Text untuk
form dengan Editor Teks Sederhana.
Ciptakanlah sebuah sebuah kontrol MenuStrip
pada form dan tambahkan item-item menu seperti dicantumkan apda Tabel 7.1.
Tetapkan properti Text dan ShortcutKeys menjadi nilai-nilai yang
ditunjukkan pada tabel. Form akan ditampilkan seperti pada Gambar 7.19.
Langkah 3: Tambahkan sebuah kontrol TextBox
pada form dengan nama teksDokumen.
Kontrol TextBox memiliki sebuah
properti Boolean dengan nama MultiLine,
yang ditetapkan False secara
default. Ketika properti ini ditetapkan True,
tinggi dari kontrol TextBox dapat
diperbesar dan teksnya dapat menempati ruang banyak baris. Tetapkan properti MultiLine dari kontrol teksDokumen menjadi True. Kontrol TextBox juga memiliki sebuah properti WordWrap yang ketika ditetapkan True, menyebabkan baris teks yang panjang ditempatkan pada baris
berikutnya. Secara default, WordWrap
ditetapkan True.
Langkah 4: Perbesar ukuran dari kontrol teksDokumen
sehingga ia mengisi form, seperti ditunjukkan pada Gambar 7.20.
Langkah 5: Tetapkan properti Anchor dari
kontrol teksDokumen menjadi Top, Bottom, Left, Right. Ini akan menyebabkan kontrol TextBox berubah ukuran secara otomatis
jika user mengubah ukuran form.
Langkah 6: Tambahkan kontrol OpenFileDialog
dan SaveFileDialog pada form. Namai
kontrol OpenFileDialog dengan ofdOpenFile dan namai kontrol SaveFileDialog dengan sfdSaveFile.
Langkah 7: Tetapkan properti Title dari
kontrol ofdOpenFile menjadi Buka File. Tetapkan properti Title dari kontrol sfdSaveFile menjadi Simpan
File Sebagai. Tetapkan properti Filter menjadi File Teks (*.txt)| *.txt untuk kedua kontrol.
Langkah 8: Sekarang Anda telah siap menuliskan kode untuk aplikasi. Di akhir
tutorial, Anda akan menemukan semua kode yang diperlukan. Pertama, buka jendela
Code dan ketikkan statemen Imports yang ditunjukkan pada baris 1.
Langkah 9: Di dalam deklarasi kelas form, ketikkan komentar dan deklarasi-deklarasi
level-kelas yang ditunjukkan pada baris 4 sampai baris 6. Variabel strNamafile akan memuat nama file yang
di dalamnya isi dari kotak teks akan disimpan. Variabel blnApaBerubah adalah sebuah flag untuk mengindikasikan apakah isi
dari kotak teks telah berubah sejak terakhir kali disimpan. Anda memerlukan
flag ini sehingga Anda dapat mengingatkan user setiap kali ia akan membersihkan
dokumen tanpa menyimpannya.
Langkah 10: Ketikkan kode untuk prosedur HapusDokumen
yang ditunjukkan pada baris 8 sampai baris 17. Prosedur ini membersihkan
properti Text dari kontrol teksDokumen, menetapkan strNamafile menjadi sebuah string
kosong, dan menetapkan blnApaBerubah
menjadi False.
Langkah 11: Ketikkan kode untuk prosedur BukaDokumen
yang ditampilkan pada baris 22 sampai baris 46. Prosedur BukaDokumen menampilkan sebuah kotak dialog Open, membuka file yang dipilih oleh user, dan membaca isinya ke
dalam kotak teks.
Langkah 12: Ketikkan kode untuk prosedur SimpanDokumen
yang ditunjukkan pada baris 50 sampai baris 69. Prosedur SimpanDokumen menyimpan isi dari kotak teks ke dalam file yang
ditetapkan oleh variabel strNamafile.
Langkah 13: Sekarang, Anda akan menuliskan kode untuk event handler teksDokumen_TextChanged, yang
ditunjukkan pada baris 71 sampai baris 74. Event handler ini akan dieksekusi
setiap kali properti Text dari
kontrol teksDokumen berubah. Ketika
itu terjadi, Anda menetapkan variabel blnApaBerubah
menjadi True untuk mengindikasikan
bahwa dokumen terkini telah berubah.
Langkah 14: Selanjutnya, tuliskan event-event handler Click untuk item-item menu. Kode untuk semua event handler
ditampilkan pada baris 76 sampai baris 141.
Langkah 15: Terakhir, Anda akan menuliskan kode untuk event handler Form1_FormClosing, yang ditunjukkan
pada baris 143 sampai baris 157. Tujuan dari event handler ini adalah untuk
mengingatkan user jika ia mencoba keluara dari aplikasi tanpa menyimpan isi
kotak teks.
Langkah 16: Simpan dan jalankan aplikasi. Jika Anda memasukkan semua kode dengan
benar, Anda akan melihat form yang ditunjukkan pada Gambar 7.21. Masukkan teks
tertentu pada kotak teks. Ketika selesai, keluar dari aplikasi.
Gambar 7.21 Form Editor Teks Sederhana
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
Imports
System.IO
Public Class Form1
'variabel-variabel level-kelas
Private strNamafile As String =
String.Empty 'nama file dari dokumen
Dim blnApaBerubah As Boolean = False 'flag ubah file
Sub HapusDokumen()
'menghapus isi dari kotak teks
teksDokumen.Clear()
'membersihkan nama dokumen
strNamafile = String.Empty
'menetapkan blnApaBerubah menjadi
False
blnApaBerubah = False
End Sub
'prosedur BukaDokumen membuka file dan
'memuatnya ke dalam TextBox untuk
pengeditan
Sub BukaDokumen()
Dim fileMasukan As StreamReader
'variabel objek
If ofdOpenFile.ShowDialog =
Windows.Forms.DialogResult.OK Then
'membaca nama file yang diseleksi
strNamafile =
ofdOpenFile.FileName
Try
'membuka file
fileMasukan =
File.OpenText(strNamafile)
'membaca isi file ke dalam
TextBox
teksDokumen.Text =
fileMasukan.ReadToEnd
'menutup file
fileMasukan.Close()
'memperbarui variabel
blnApaBerubah
blnApaBerubah = False
Catch
'pesan error untuk error
pembukaan file
MessageBox.Show("Error
ketika membuka file.")
End Try
End If
End Sub
'prosedur SimpanDokumen menyimpan dokumen
Sub SimpanDokumen()
Dim fileKeluaran As StreamWriter
'variabel objek
Try
'menciptakan file
fileKeluaran =
File.CreateText(strNamafile)
'menuliskan TextBox ke file
fileKeluaran.Write(teksDokumen.Text)
'menutup file
fileKeluaran.Close()
'memperbarui variabel
blnApaBerubah
blnApaBerubah = False
Catch
'pesan error ketika menciptakan
file
MessageBox.Show("Error
ketika menciptakan file.")
End Try
End Sub
Private
Sub teksDokumen_TextChanged(…) Handles teksDokumen.TextChanged
'mengindikasikan bahwa teks telah berubah
blnApaBerubah = True
End Sub
Private
Sub mnuBaru_Click(…) Handles mnuBaru.Click
'apakah dokumen telah berubah?
If blnApaBerubah = True Then
'memastikan sebelum membersihkan
dokumen
If MessageBox.Show("Dokumen
belum disimpan. " &
"Anda yakin?",
"Memastikan",
MessageBoxButtons.YesNo) =
Windows.Forms.DialogResult.Yes
Then
HapusDokumen()
End If
Else
'dokumen tidak berubah, jadi
bersihkan
HapusDokumen()
End If
End Sub
Private
Sub mnuFileBuka_Click(…) Handles mnuFileBuka.Click
'apakah dokumen telah berubah?
If blnApaBerubah = True Then
'memastikan sebelum membersihkan
dan mengganti
If MessageBox.Show("Dokumen
belum disimpan. " &
"Anda yakin?",
"Memastikan",
MessageBoxButtons.YesNo) =
Windows.Forms.DialogResult.Yes
Then
HapusDokumen()
BukaDokumen()
End If
Else
'dokumen tidak berubah, jadi
ganti
HapusDokumen()
BukaDokumen()
End If
End Sub
Private
Sub mnuSimpan_Click(…) Handles mnuSimpan.Click
'apakah dokumen sudah punya nama
file?
If strNamafile = String.Empty Then
'Dokumen belum disimpan, jadi
'gunakan kotak dialog Save As
If sfdSaveFile.ShowDialog =
Windows.Forms.DialogResult.OK Then
strNamafile =
sfdSaveFile.FileName
SimpanDokumen()
End If
Else
'simpan dokumen dengan nama file
sekarang
SimpanDokumen()
End If
End Sub
Private
Sub mnuSimpanSbg_Click(…) Handles mnuSimpanSbg.Click
'menyimpan dokumen dengan nama file baru
If sfdSaveFile.ShowDialog =
Windows.Forms.DialogResult.OK Then
strNamafile =
sfdSaveFile.FileName
SimpanDokumen()
End If
End Sub
Private
Sub mnuKeluar_Click(…) Handles mnuKeluar.Click
'menutup form
Me.Close()
End Sub
Private
Sub mnuHelpTentang_Click(…) Handles mnuHelpTentang.Click
'menampilkan kotak tentang
MessageBox.Show("Editor Teks
Sederhana Versi 1.0")
End Sub
Private
Sub Form1_FormClosing(…) Handles MyBase.FormClosing
'jika dokumen telah dimodifikasi,
pastikan
'sebelum user keluar
If blnApaBerubah = True Then
If MessageBox.Show("Dokumen
belum disimpan. " &
"Anda bermaksud
membuangnya?",
"Memastikan",
MessageBoxButtons.YesNo) =
Windows.Forms.DialogResult.Yes
Then
e.Cancel = False
Else
e.Cancel = True
End If
End If
End Sub
End Class
|
Kontrol
ColorDialog dan FontDialog
Kontrol
ColorDialog
Kontrol ColorDilog menampilkan kotak dialog Color Windows standar. Gambar 7.22
menunjukkan kotak dialog Color
default di kiri. Ketika user mengklik tombol Define Custom Colors, kotak dialog akan mengekspansi
menjadi kotak dialog Color penuh
yang ditampilkan di sisi kanan.
Klik kanan pada ikon ColorDialog pada bagian Dialogs pada Jendela Toolbox untuk menempatkan kontrol ini
pada form. Karena kontrol ini tidak terlihat pada saat aplikasi dijalankan, ia
dimunculkan pada component tray saat
perancangan. Anda akan menggunakan prefiks cd
untuk menamai kontrol ini.
Anda menampilkan kotak
dialog Color dengan memanggil metode
ShowDialog. Sebagai contoh,
diasumsikan bahwa cdColor adalah
nama dari sebuah kontrol ColorDialog.
Statemen berikut memanggil metode ShowDialog
dari kontrol tersebut:
cdColor.ShowDialog()
Metode ini menghasilkan
salah satu nilai berikut: Windows.Forms.DialogResult.OK
atau Windows.Forms.DialogResult.Cancel,
yang mengindikasikan tombol mana, OK
atau Cancel, yang diklik oleh user
untuk menutup kotak dialog ini. Properti Color
akan memuat sebuah nilai yang merepresentasikan warna yang dipilih oleh user.
Nilai ini dapat dipakai dengan properti-properti kontrol lain yang memengaruhi
warna, seperti ForeColor dan BackColor. Sebagai contoh, kode berikut
menampilkan kotak dialog Color dan
kemudian menetapkan warna teks yang ditampilkan oleh labelPesan menjadi warna yang diseleksi oleh user:
If
cdColor.ShowDialog() = Windows.Forms.DialogResult.OK Then
labelPesan.ForeColor = cdColor.Color
End If
Secara default, hitam
awalnya diseleksi ketika kotak dialog Color
ditampilkan. Jika Anda ingin menetapkan warna yang berbeda, Anda perlu
menetapkan properti Color menjadi
nilai warna yang diinginkan. Sebagai contoh, kode berikut menerapkan warna
terseleksi menjadi biru:
cdColor.Color
= Color.Blue
If
cdColor.ShowDialog() = Windows.Forms.DialogResult.OK Then
labelPesan.ForeColor = cdColor.Color
End
If
Kode berikut menetapkan
warna terseleksi inisial menjadi warna dari label labelPesan sebelum menampilkan kotak dialog:
cdColor.Color
= labelPesan.ForeColor
If
cdColor.ShowDialog() = Windows.Forms.DialogResult.OK Then
labelPesan.ForeColor = cdColor.Color
End If
Kontrol
FontDialog
Kontrol FontDialog menampilkan sebuah kotak
dialog Font standar. Gambar 7.23
menampilkan sebuah kotak dialog Font
default di sisi kiri, dan sebuah kotak dialog Font dengan daftar drop-down Color
di sisi kanan.
Anda menampilkan kotak
dialog Font dengan memanggil metode ShowDialog. Sebagai contoh, diasumsikan
bahwa fdFont adalah nama dari sebuah
kontrol FontDialog. Statemen berikut
memanggil metode ShowDialog dari
kontrol tersebut:
fdFont.ShowDialog()
Metode ini menghasilkan
salah satu nilai berikut: Windows.Forms.DialogResult.OK
atau Windows.Forms.DialogResult.Cancel,
yang mengindikasikan tombol mana, OK
atau Cancel, yang diklik oleh user
untuk menutup kotak dialog ini. Properti Font
akan memuat sebuah nilai yang merepresentasikan pengaturan font yang dipilih
oleh user. Sebagai contoh, kode berikut menampilkan kotak dialog Font dan kemudian menetapkan warna teks
yang ditampilkan oleh labelPesan
menjadi warna yang diseleksi oleh user:
If
fdFont.ShowDialog() = Windows.Forms.DialogResult.OK Then
labelPesan.Font = fdFont.Font
End If
Kode berikut menampilkan
sebuah kotak dialog Font dengan
sebuah drop-down list untuk warna. Kode kemudian menetampkan font dan warna
dari kontrol labelPesan menjadi
nilai-nilai yang diseleksi oleh user.
fdFont.ShowColor
= True
If
fdFont.ShowDialog() = Windows.Forms.DialogResult.OK Then
labelPesan.Font = fdFont.Font
labelPesan.ForeColor = fdFont.Color
End If
7.3 Kontrol PrintDocument
KONSEP: Kontrol PrintDocument dapat Anda pakai untuk mengirim keluaran ke
printer.
Kontrol PrintDocument memberikan aplikasi Anda
kemampuan untuk mencetak keluaran melalui printer. Anda bisa mengklik ganda
ikon PrintDocument pada seksi Printing pada jendela Toolbox untuk menempatkan sebuah
kontrol PrintDocument pada sebuah
form. Karena kontrol ini tidak terlihat pada saat aplikasi dijalankan, ia
ditempatkan pada component tray di
bawah form saat perancangan. Anda akan menggunakan prefiks pd ketika menamai kontrol ini.
Metode Print dan
Event PrintPage
Kontrol PrintDocument memiliki metode Print untuk mengawali proses
pencetakan. Bentuk umum dari metode ini adalah berikut:
KontrolPrintDocument.Print()
Ketika metode Print dipanggil, ia memicu event PrintPage. Anda perlu menuliskan kode
di dalam event handler PrintPage
untuk menginisiasi pencetakan. Untuk menciptakan sebuah event handler PrintPage, Anda mengklik ganda pada
kontrol PrintDocument pada component tray. Berikut adalah
contohnya:
Private
Sub pdPrint_PrintPage(...) Handles pdPrint.PrintPage
End Sub
Di dalam event handler
PrintPage, Anda dapat menuliskan kode yang mengirim teks ke printer menggunakan
font dan warna tertentu, pada lokasi tertentu. Anda akan menggunakan bentuk
umum berikut untuk memanggil metode e.Graphics.DrawString:
e.Graphics.DrawString(String,
New Font(NamaFont, Ukuran, Gaya), Brushes.Black, HPos,
VPos)
String adalah string yang akan dicetak. NamaFont
adalah sebuah string yang memuat nama dari font yang digunakan. Ukuran adalah ukuran dari font dalam
dimensi point. Gaya adalah gaya font yang digunakan. Nilai-nilai yang valid
dari gaya ini adalah FontStyle.Bold,
FontStyle.Italic, FontStyle.Regular, FontStyle.Strikeout, dan FontStyle.Underline.
Hpos adalah posisi horisontal dari
keluaran. Ini adalah jarak dari keluaran, dalam dimensi point, dari sisi batas
kertas. VPos adalah adalah posisi
vertikal dari keluaran. Ini adalah jarak dari keluaran, dalam dimensi point,
dari batas atas kertas. Argumen Brushes.Black
menetapkan bahwa keluaran akan dicetak dengan warna hitam.
Event handler PrintPage berikut mencetak isi dari
sebuah kontrol TextBox, teksMasukan, dengan font Times New
Roman dengan gaya reguler berukuran 12 titik. Koordinat horisontal dan
vertikalnya adalah 10 dan 10.
Private
Sub pdPrint_PrintPage(...) Handles pdPrint.PrintPage
e.Graphics.DrawString(teksMasukan.Text, New
Font("Times New Roman",
12, FontStyle.Regular), Brushes.Black,
10, 10)
End
Sub
Event handler PrintPage berikut mencetak string
“Laporan Penjualan” dengan gaya tebal berukuran 18 point dengan jenis font
Courier. Koordinat horisontal dan vertikalnya adalah 150 dan 80.
Private
Sub pdPrint_PrintPage(...) Handles pdPrint.PrintPage
e.Graphics.DrawString("Laporan
Penjualan", New Font("Courier",
18, FontStyle.Bold), Brushes.Black, 150,
80)
End
Sub
Event handler PrintPage berikut mencetak isi dari
sebuah file. Asumsikan bahwa strNamafile
adalah sebuah variabel string level-kelas yang memuat nama dari file yang
isinya akan dicetak.
Private
Sub pdPrint_PrintPage(...) Handles pdPrint.PrintPage
Dim fileMasukan As StreamReader 'variabel objek
Dim intX As Integer = 10 'koordinat X untuk pencetakan
Dim intY As Integer = 10 'koordinat Y untuk pencetakan
Try
'membuka file
fileMasukan = File.OpenText(strNamafile)
'membaca semua baris di dalam file
Do While Not fileMasukan.EndOfStream
'mencetak sebaris dari file
e.Graphics.DrawString(fileMasukan.ReadLine(),
New Font
("Courier", 10,
FontStyle.Regular), Brushes.Black, intX, intY)
'menambahkan 12 pada intY.
intY += 12
Loop
'menutup file
fileMasukan.Close()
Catch
'pesan error ketika membuka file
MessageBox.Show("Error: file tidak
bisa dibuka.")
End Try
End
Sub
Variabel intX dan intY menetapkan posisi horisontal dan vertikal dari tiap baris dari
keluaran yang dicetak. Statemen intY +=
12 di dalam loop menambah jarak vertikal dari tiap baris sebesar 12 point
dari atas halaman. Keluaran dicetak dengan font berukuran 10 point, jadi ada 2
point jarak antar baris.
Pada Tutorial 7.5, Anda
akan memodifikasi aplikasi Editor Teks
Sederhana yang telah Anda ciptakan pada Tutorial 7.4 dengan menambahkan
sebuah perintah Cetak pada menu File.
Tutorial 7.5: Menambahkan
Kapabilitas Pencetakan Pada Aplikasi Editor Teks Sederhana
Langkah 1: Buka projek Editor Teks Sederhana
yang Anda ciptakan pada Tutorial 7.4.
Langkah 2: Tambahkan sebuah item menu Cetak
dan batang pemisah pada menu File,
seperti ditunjukkan pada Gambar 7.24. Untuk menambahkan item menu Cetak, klik kanan pada MenuItem Keluar. Dari menu popup, pilih Insert,
kemudian MenuItem. Tetapkan properti
Text menjadi &Cetak dan properti Name
menjadi mnuFileCetak. Untuk
menambahkan batang pemisah, klik kanan pada MenuItem Keluar, dan
pilih Insert kemudian Separator.
Langkah 3: Tambahkan sebuah kontrol PrintDocument
pada form. (Kontrol PrintDocument
berada pada seksi Printing pada
jendela Toolbox). Namai kontrol
tersebut dengan pdPrint.
Langkah 4: Klik ganda pada kontrol pdPrint
untuk menciptakan sebuah template kode untuk event handler pdPrint_PrintPage. Sempurnakan event handler dengan memasukkan kode
berikut yang ditebalkan:
Private Sub pdPrint_PrintPage(…) Handles
pdPrint.PrintPage
'mencetak isi dari kotak teks
e.Graphics.DrawString(teksDokumen.Text, New
Font("MS Sans Serif",
12, FontStyle.Regular), Brushes.Black,
10, 10)
End Sub
Langkah 5: Tambahkan event prosedur mnuFileCetak_Click
berikut:
Private Sub mnuFileCetak_Click(…) Handles
mnuFileCetak.Click
'mencetak dokumen sekarang
pdPrint.Print()
End Sub
Langkah 6: Simpan dan jalankan aplikasi. Masukkan teks tertentu ke dalam kotak teks
atau muat file yang telah ada. Uji perintah Cetak. Isi dari kotak teks akan dicetak pada printer.
Langkah 7: Klik perintah Keluar untuk
mengakhiri aplikasi.
7.4 Struktur
KONSEP: Visual Basic dapat Anda pakai untuk menciptakan tipe data Anda
sendiri, dimana di dalamnya Anda bisa mengelompokkan sejumlah bidang data.
Sejauh ini, Anda telah
menciptakan aplikasi-aplikasi yang memuat data di dalam variabel-variabel
individual. Jika Anda ingin mengelompokkan sejumlah item, And dapat menciptakan
array. Tetapi, Array mensyaratkan elemen-elemen harus bertipe sama. Kadangkala,
ada relasi antar item yang berbeda tipe. Sebagai contoh, sebuah sistem
penggajian dapat menggunakan variabel-variabel yang ditunjukkan pada
statemen-statemen deklarasi berikut:
Dim
intBanyakPekerja As Integer 'banya
pekerja
Dim
strNamaDepan As String 'nama depan dari
pekerja
Dim
strNamaBelakang As String 'nama
belakang dari pekerja
Dim
dblJam As Double 'banyak jam
kerja
Dim
decGajiPerJam As Decimal 'gaji per
jam
Dim
decGajiKotor As Decimal 'gaji kotor
Semua variabel ini
berelasi karena dapat memuat data tentang pekerja yang sama. Statemen-statemen Dim tersebut menciptakan
variabel-variabel terpisah dan tidak memiliki relasi-relasi.
Pada kasus ini, Anda
dapat mengelompokkan data yang berelasi. Struktur adalah sebuah tipe data yang
dapat Anda ciptakan yang memuat satu atau lebih variabel yang dikenal dengan
bidang. Bidang dapat berbeda tipe. Setelah sebuah struktur diciptakan,
variabel-variabel dari sebuah struktur dapat dideklarasikan.
Anda menciptakan sebuah
struktur pada level-kelas atau level-modul dengan statemen Structure:
[PenspesifikasiAkses]
Structure NamaStruktur
DeklarasiBidang
End
Structure
PenspesifikasiAkses ditampilkan di dalam kurung, yang mengindikasikan bahwa ia bersifat
opsional (tidak harus ada). Jika Anda menggunakan penspesifikasi akses Public, struktur dapat diakses oleh
statemen-statemen yang ada di luar kelas atau modul. Jika Anda menggunakan
penspesifikasi akses Private,
struktur dapat diakses oleh statemen-statemen yang ada di dalam kelas atau
modul yang sama. NamaStruktur adalah
nama dari struktur. DeklarasiBidang
adalah satu atau lebih deklarasi bidang, seperti statemen-statemen Dim. Berikut adalah sebuah contoh dari
struktur:
Structure
DataGajiPekerja
Dim intBanyakPekerja As Integer
Dim strNamaDepan As String
Dim strNamaBelakang As String
Dim dblGaji As Double
Dim decGajiPerJam As Decimal
Dim decGajiKotor As Decimal
End
Structure
Statemen ini
mendeklarasikan sebuah struktur dengan nama DataGajiPekerja, yang memiliki enam bidang.
Statemen Structure tidak menciptakan variabel.
Ia menciptakan sebuah tipe data baru dengan memberitahu Visual Basic tentang
apa tipe data yang dimuatnya. Anda mendeklarasikan variabel bertipe struktur
menggunakan statemen Dim, sama
seperti tipe data lain. Sebagai contoh, statemen berikut mendeklarasikan sebuah
variabel dengan nama kepalaDept
sebagai sebuah variabel DataGajiPekerja:
Dim kepalaDept DataGajiPekerja
Variabel kepalaDept dapat menyimpan enam nilai
karena tipe data DataGajiPekerja
terdiri-dari enam bidang data, seperti diilustrasikan pada Gambar 7.25.
Akses terhadap bidang
dilakukan menggunakan operator dot. Sebagai contoh, statemen-statemen berikut
menugaskan nilai-nilai kepada enam bidang dari variabel kepalaDept:
kepalaDept.intBanyakPekerja
= 1101
kepalaDept.strNamaDepan
= "John"
kepalaDept.strNamaBelakang
= "Kristoff"
kepalaDept.dblJam
= 40.0
kepalaDept.decGajiPerJam
= 25
kepalaDept.decGajiKotor
= CDec(kepalaDept.dblJam) * kepalaDept.decGajiPerJam
Statemen berikut
menambahkan bidang intBanyakPekerja
pada kotak list listDaftarPekerja:
listDaftarPekerja.Items.Add(kepalaDept.intBanyakPekerja)
Anda dapat secara
opsional menggunakan statemen With
untuk menyederhanakan akses terhadap bidang-bidang struktur:
With
kepalaDept
.intBanyakPekerja = 1101
.strNamaDepan = "John"
.strNamaBelakang = "Kristoff"
.dblJam = 40.0
.decGajiPerJam = 25
.decGajiKotor = CDec(.dblJam) *.decGajiPerJam
End With
Melewatkan
Variabel Struktur Kepada Prosedur dan Fungsi
Anda dapat melewatkan
variabel struktur kepada prosedur dan fungsi. Sebagai contoh, prosedur berikut
mendeklarasikan sebuah parameter DataGajiPekerja,
yang dilewatkan dengan referensi:
Sub
HitungGaji(ByRef pekerja As DataGajiPekerja)
'prosedur ini menerima sebuah variabel
DataGajiPekerja
'sebagai argumennya. Gaji kotor pekerja
dihitung
'dan disimpan di dalam bidang decGajiKotor
With pekerja
.decGajiKotor =.dblJam * .decGajiPerJam
End With
End Sub
Array Sebagai
Anggota Struktur
Struktur dapat memuat
bidang array, tetapi array tersebut tidak dapat ditugasi ukuran awal. Sebuah
contohnya ditunjukkan pada statemen berikut:
Structure
RekamanSiswa
Dim strNama As String
Dim dblSkorUjian() As Double
End
Structure
Setelah mendeklarasikan
variabel struktur, Anda dapat menggunakan statemen Dim untuk menetapkan ukuran array. Kemudian Anda mengakses
elemen-elemen array dengan sebuah subskript, seperti ditunjukkan pada contoh
berikut:
Dim
siswa As RekamanSiswa
ReDim
siswa.dblSkorUjian(4)
siswa.strNama
= "John Kristoff"
siswa.dblSkorUjian(0)
= 89.0
siswa.dblSkorUjian(1)
= 92.0
siswa.dblSkorUjian(2)
= 84.0
siswa.dblSkorUjian(3)
= 96.0
siswa.dblSkorUjian(4)
= 91.0
Array yang Memuat
Struktur-Struktur
Anda juga dapat
mendeklarasikan sebuah array yang memuat struktur-struktur. Sebagai contoh,
statemen berikut mendeklarasikan pekerja
sebagai sebuah array yang memuat 10 variabel DataGajiPekerja:
Const
intSUBSKRIPT_MAKS As Integer = 9
Dim
pekerja(intSUBSKRIPT_MAKS) As DataGajiPekerja
Untuk mengakses
elemen-elemen di dalam array, Anda menggunakan subskript seperti ditunjukkan
pada statemen beriktu:
pekerja(0).intBanyakPekerja
= 1101
Ketika bekerja dengan
array yang memuat variabel-variabel struktur dimana di dalamnya struktur memuat
sebuah bidang array, Anda menggunakan statemen ReDim untuk menetapkan ukuran untuk bidang array dari tiap
elemennya. Sebagai contoh, RekamanSiswa
yang didiskusikan sebelumnya memiliki sebuah bidang dengan nama dblSkorUjian, yang merupakan sebuah
array dengan 5 elemen. Dimisalkan bahwa sebuah aplikasi mendeklarasikan sebuah
array yang memuat variabel-variabel RekamanSiswa
sebagai berikut:
Const
intSUBSKRIPT_MAKS As Integer = 9
Dim siswa(intSUBSKRIPT_MAKS)
As RekamanSiswa
Sebuah loop, seperti
berikut, dapat dipakai untuk menetapkan ukuran dari tiap array siswa:
For
intIndeks = 0 To intSUBSKRIPT_MAKS
ReDim siswa(intIndeks).dblSkorUjian(4)
Next
Anda dapat menggunakan
bidang-bidang array setelah ia diberikan ukuran. Sebagai contoh, statemen
berikut menyimpan 95 pada dblSkorUjian(0)
di dalam siswa(5):
siswa(5).dblSkorUjian(0)
= 95.0
Tutorial 7.6 memeriksa
sebuah aplikasi yang menggunakan struktur.
Tutorial 7.6:
Memeriksa Sebuah Aplikasi Dengan Struktur
Pada tutorial ini, Anda
memeriksa sebuah versi modifikasi dari projek Demo WriteLine File dari Tutorial 7.1. Versi projek ini menggunakan
sebuah struktur untuk menyimpan data teman.
Langkah 1: Buka projek Demo WriteLine File 2.
Langkah 2: Bukan jendela Code.
Statemen-statemen berikut mendeklarasikan struktur InfoTeman:
Structure InfoTeman
Dim strNama
As String 'untuk memuat nama teman
Dim strTelp
As String 'untuk memuat nomor telepon
End Structure
Langkah 3: Lihat event handler tombolCiptakan_Click.
Prosedur ini menggunakan variabel struktur temanKu
untuk memuat nama dan nomor telepon yang dimasukkan oleh user. Statemen fileTeman.WriteLine menuliskan isi dari
bidang-bidang variabel struktur ke dalam file.
Private Sub tombolCiptakan_Click(…) Handles
tombolCiptakan.Click
'konstanta untuk banyak teman
Const intBANYAK_TEMAN As Integer = 3
'variabel-variabel lokal
Dim strNamaFile As String 'nama file
Dim
intHitung As Integer 'pencacah
loop
Dim
fileTeman As StreamWriter 'variabel
objek StreamWriter
Dim temanKu As InfoTeman 'variabel struktur
'membaca nama file dari user
strNamaFile = InputBox("Masukkan nama
file.")
Try
'membuka
file
fileTeman = File.CreateText(strNamaFile)
'membaca data dan menuliskannya ke dalam file
For intHitung = 1 To intBANYAK_TEMAN
'membaca nama teman
temanKu.strNama = InputBox("Masukkan
nama teman " &
"nomor " &
intHitung.ToString())
'membaca nomor telepon teman
temanKu.strTelp = InputBox("Masukkan
nomor telepon " &
"teman.")
'menuliskan data ke dalam file
fileTeman.WriteLine(temanKu.strNama)
fileTeman.WriteLine(temanKu.strTelp)
Next
'menutup file
fileTeman.Close()
Catch
'pesan error
MessageBox.Show("File tidak dapat
diciptakan.")
End Try
End Sub
Langkah 4: Jalankan aplikasi, dan seperi yang Anda lakukan pada Tutorial 7.1.
Langkah 5: Klik tombol Keluar untuk mengakhiri aplikasi.
No comments:
Post a Comment