KONTROL COMMON DIALOG Kontrol CommonDialog menyediakan sebuah jalan yang mudah dan nyaman untuk memanggil kotak dialog windows yang umum seperti: Color (warna), Font, Printer, FileOpen (membuka file), dan FileSave (menyimpan file), dan anda juga dapat menampilkan suatu halaman dalam file Help. Dalam kontrol ini yang bisa dimanfaatkan adalah hanya properti dan metode, tidak ada kejadian yang dipicu. Dalam kebanyakan kasus, anda tidak perlu mengatur suatu properti apapun saat design-time dikarenakan pengaturan tersebut sering kali lebih baik dilakukan pada saat run-time, khususnya ketika anda menggunakan kontrol yang sama untuk menampilkan kotak dialog yang berbeda-beda. Kontrol tersebut bersifat invisible (tak nampak) selama pengeksekusian, sehingga dia tidak mendukung properti seperti Left, Visible, atau TabIndex. Kontrol ini terdapat dalam file ComDlg32.ocx, dimana harus didisribusikan dengan setiap aplikasi Visual Basic yang menggunakannya. Kurangnya antarmuka yang visible (nampak) dan kurangnya kejadian-kejadian yang dapat dipicu bukan berarti kontrol ini mudah untuk digunakan. Kenyataannya, menggunakan kontrol CommonDialog merupakan suatu hal yang kompleks dikarenakan dia mendukung banyak pilihan, dimana beberapa di antaranya tidak selalu intuitif (sesuai dengan keinginan atau perkiraan). Beberapa properti mempunyai makna yang berbeda, tergantung common dialog yang mana yang anda tampilkan. Misalnya, properti Flags adalah sebuah properti bit-field, dan arti dari setiap bit adalah berbeda untuk setiap kotak common dialog yang bermacam-macam. Satu dari beberapa properti yang dapat mempunyai arti yang sama tanpa menghiraukan kotak common dialog yang mana yang anda tampilkan adalah CancelError. Jika properti ini adalah true, seorang end user (pengguna akhir) yang menutup kotak dialog dengan menggunakan kunci Cancel menyebabkan error 32755 (sama dengan konstan cdlCancel) dibangkitkan saat pemanggilan program. Kontrol CommonDialog meliputi konstan intrinsik untuk semua error yang bisa dibangkitkan saat run-time. Kontrol CommonDialog mempunyai 6 metode: ShowColor, ShowFont, ShowPrinter, ShowOpen, ShowSave, dan ShowHelp. Setiap metode menampilkan kotak common dialog yang berbeda, seperti yang akan dijelaskan pada seksi berikutnya.
DIALOG WARNA Kotak common dialog Color (warna) mengijinkan pengguna untuk memilih suatu warna. Dia juga mengijinkan pengguna untuk menentukan atau meracik warna baru, namun anda dapat tetap menjaga hak ini dari pengguna dengan memberikan nilai 4cdlCCPreventFullOpen pada properti Flags. Alternatifnya, anda dapat menampilkan seksi custom color dari kotak dialog saat dialog muncul dengan mengatur bit 2cdlCCFullOpen. (Terlihat pada gambar 1). Anda dapat memulai menyoroti sebuah warna dalam kotak dialog dengan memberikan nilai RGB ke properti Color dan mengatur bit 1-cdlCCRGBInit dalam properti Flags, sebagaimana dalam contoh berikut : ' Mengijinkan pengguna mengganti ForeColor dari kontrol Text1. With CommonDialog1 ' Mencegah penampilan seksi custom color dari dialog. .Flags = cdlCCPreventFullOpen Or cdlCCRGBInit .Color = Text1.ForeColor .CancelError = False .ShowColor Text1.ForeColor = .Color End With Ketika anda menyediakan sebuah inisial error, anda tidak perlu mengatur properti CancelError ke true; jika pengguna mengklik pada kunci Cancel, nilai dari properti Color tidak berubah.
2
Gambar 1. Kotak common dialog Color, dengan seksi pembuatan warna custom sudah terbuka.
DIALOG FONT Kotak dialog Font mengijinkan pengguna memilih nama dan atribut font. Anda dapat menginisialisasi nilai yang ditunjukkan dalam kotak dialog, dan anda dapat memutuskan atribut mana yang dapat dimodifikasi. Tentu saja itu semua tergantung pada anda untuk menerapkan atribut-atribut tersebut pada kontrol dan obyek dalam aplikasi anda. Contoh dari kotak dialog Font, dengan semua pilihan di-enable-kan, seperti yang terlihat pada gambar 2.
Gambar 2. Kotak dialog Font Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom
3 Atribut-atribut font dapat diinisialisasi (dan diperoleh saat pengguna menutup kotak dialog) melalui sejumlah properti yang namanya sudah menunjukkan kegunaannya: FontName, FontSize, FontBold, FontItalic, FontUnderLine, FontStrikeThru, dan Color. Ketika menggunakan kotak common dialog Font, properti Flags menerima semua pilihan seperti yang dijabarkan pada tabel 1. Anda menggunakan flag ini untuk menentukan font-font apa yang terdaftar dalam kotak dialog dan untuk membatasi pilihan pengguna. Satu dari bit-bit yang seharusnya selalu anda sertakan adalah cdlCFForceFontExist. Disamping itu, minimal satu dari empat nilai yang pertama di tabel 1 harus dispesifikasikan; jika tidak kontrol CommonDialog akan memunculkan sebuah error 24574 ”No fonts exist.” (tidak ditemukan font). Tabel 1. Nilai-nilai untuk properti Flags untuk kotak common dialog Font. Constant
Description
cdlCFScreenFonts
Menampilkan font-font layar.
cdlCFPrinterFonts
Menampilkan font-font printer.
cdlCFBoth
Menampilkan baik font-font layar maupun printer. (Ini merupakan hasil gabungan dari cdlCFScreenFonts dan cdlCFPrinterFonts).
cdlCFWYSIWYG
Menampilkan font-font yang hanya tersedia pada layar dan printer.
cdlCFANSIOnly
Membatasi pilihan ke font-font yang menggunakan kumpulan karakter ANSI.
cdlCFFixedPitchOnly Membatasi pilihan ke font-font yang tidak proporsional (fixed pitch). cdlCFNoVectorFonts Membatasi pilihan ke font-font nonvector. cdlCFScalableOnly
Membatasi pilihan ke font-font yang scalable (terukur).
cdlCFTTOnly
Membatasi pilihan ke font-font TrueType.
cdlCFNoSimulations
Membatasi pilihan ke font-font yang bukan merupakan simulasi dari font GDI.
cdlCFLimitSize
Membatasi pilihan ke font-font dengan ukuran yang terdapat dalam range yang telah diindikasikan oleh properti Min dan Max.
cdlCFForceFontExist Memunculkan error jika pengguna memilih suatu font atau style yang tak ada. cdlCFEffects
Meng-enable-kan area strikethrough (coret kata), underline (garis bawah), dan color (warna) dalam kotak dialog.
cdlCFNoFaceSel
Tidak memilih nama font.
cdlCFNoSizeSel
Tidak memilih ukuran font.
cdlCFNoStyleSel
Tidak memilih stle font. (Dapat dicoba saat keluar untuk menentukan apakah pengguna memilih suatu style).
cdlCFHelpButton
Menampilkan tombol Help.
Kode berikut ini mengijinkan pengguna untuk memodifikasi atribut-atribut font dari sebuah kontrol TextBox. Dan membatasi pemilihan pengguna terhadap font-font layar yang ada dan memaksa ukuran font dalam range 8 sampai 80 poin.
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom
4 With CommonDialog1 .Flags = cdlCFScreenFonts Or cdlCFForceFontExist Or cdlCFEffects _ Or cdlCFLimitSize .Min = 8 .Max = 80 .FontName = Text1.FontName .FontSize = Text1.FontSize .FontBold = Text1.FontBold .FontItalic = Text1.FontItalic .FontUnderline = Text1.FontUnderline .FontStrikethru = Text1.FontStrikethru .CancelError = False .ShowFont Text1.FontName = .FontName Text1.FontBold = .FontBold Text1.FontItalic = .FontItalic Text1.FontSize = .FontSize Text1.FontUnderline = .FontUnderline Text1.FontStrikethru = .FontStrikethru End With Dalam kasus tertentu, anda tidak perlu mengatur properti CancelError ke true karena jika pengguna mengklik tombol Cancel, kontrol tidak memodifikasi properti Fontxxxx apapun dan semua nilai properti Fontxxxx dapat diberikan atau ditugaskan kembali ke kontrol tanpa adanya suatu efek yang tak diinginkan. Jika anda tidak ingin menginisialisasi suatu area dengan nilai yang telah ditetapkan dengan baik, anda memiliki suatu masalah yang lebih kompleks.
DIALOG PRINTER Kontrol CommonDialog dapat menampilkan dua dialog dengan jelas: kotak dialog Print Setup yang mengijinkan pengguna untuk memilih atribut-atribut dari sebuah printer dan dialog Print standar yang mengijinkan pengguna memilih banyak pilihan dari suatu print job (tugas mencetak), seperi bagian mana dari dokumen yang seharusnya dicetak (semua, serangkaian halaman, atau yang sedang dipilih), jumlah salinan, dan seterusnya. Lihat gambar 3 dan 4 untuk contoh dari kotak common dialog ini.
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom
5
Gambar 3. Kotak common dialog Print
Gambar 4. Kotak common dialog Print Setup Anda dapat memutuskan kotak dialog yang mana yang muncul dengan mengatur bit cdlPDPrintSetup dalam properti Flags. Daftar bit-bit yang dapat diatur dalam properti Flags secara lengkap dijabarkan pada tabel 2.
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom
6 Tabel 2. Nilai-nilai untuk properti Flags untuk kotak common dialog printer. Hampir semua dari bit-bit ini tidak mempunyai arti jika anda menampilkan sebuah kotak dialog Print Setup (Flags = cdlPDPrintSetup). Konstan
Deskripsi
cdlPDPrintSetup
Menampilkan kotak dialog Print Setup disbanding kotak dialog Print.
cdlPDNoWarning
Mencegah sebuah pesan error jika tidak terdapat printer default apapun.
cdlPDHidePrintToFile
Menyembunyikan CheckBox Print To File.
cdlPDDisablePrintToFile
Men-disable CheckBox Print To File.
cdlPDNoPageNums
Men-disable tombol pilihan Pages.
cdlPDNoSelection
Men-disable tombol pilihan Selection.
cdlPDPrintToFile
Status dari CheckBox Print To File.
cdlPDAllPages
Status dari tombol pilihan All Pages.
cdlPDPageNums
Status dari tombol pilihan Pages.
cdlPDSelection
Status dari tombol pilihan Selection.
cdlPDCollate
Status dari CheckBox Collate (tersusun).
cdlPDReturnDC
Properti hDC mengembalikan konteks peralatan dari printer yang dipilih.
cdlPDReturnIC
Properti hDC mengembalikan konteks informasi dari printer yang dipilih.
cdlPDReturnDefault
Mengembalikan nama printer default.
cdlPDUseDevModeCopies
Mengatur dukungan untuk multiple copies (banyak salinan).
cdlPDHelpButton
Menampilkan tombol Help.
Ketika anda sedang menampilkan kotak dialog printer, properti Min dan Max adalah nilai minimum dan maksimum yang valid untuk nomer halaman dimana FromPage dan ToPage adalah nilai aktual yang ditampilkan dalam kotak dialog. Properti Copies menunjukkan jumlah salinan yang dimasukkan oleh pengguna. Properti Printer Default menentukan apakah obyek printer Visual Basic secara otomatis diatur untuk menyesuaikan dengan printer yang dipilih oleh pengguna. Ketika anda menampilkan kotak dialog Print Setup, properti Orientation mengatur dan mengembalikan orientasi dari tugas printer yang dipilih. (pengaturan bisa berupa 1cdlPortrait atau Landscape). Jika anda menampilkan kotak dialog printer yang biasanya, anda perlu memutuskan apakah tombol pilihan Pages dan Selection di-enabled. On Error Resume Next With CommonDialog1 ' Prepare to print using the Printer object. .PrinterDefault = True ' Disable printing to file and individual page printing.
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom
7 .Flags = cdlPDDisablePrintToFile Or cdlPDNoPageNums If Text1.SelLength = 0 Then ' Hide Selection button if there is no selected text. .Flags = .Flags Or cdlPDNoSelection Else ' Else enable the Selection button and make it the default ' choice. .Flags = .Flags Or cdlPDSelection End If ' We need to know whether the user decided to print. .CancelError = True .ShowPrinter If Err = 0 Then If .Flags And cdlPDSelection Then Printer.Print Text1.SelText Else Printer.Print Text1.Text End If End If End With
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom
8
DIALOG FILEOPEN DAN FILESAVE Properti Secara Umum Anda dapat memilih dari sejumlah cara untuk menentukan / mengkostumisasi penampilan dan kelakuan dari kotak dialog FileOpen dan FileSave. Misal, properti DialogTitle menentukan caption (judul) dari kotak dialognya, dan InitDir adalah direktori yang ditampilkan saat dialog muncul. Saat kotak dialog dipanggil, properti FileName berisi nama dari file yang disarankan. Dan ketika kotak dialog ditutup, dia berisi nama dari file yang dipilih oleh pengguna. Properti DefaultExt dapat diberikan ke ekstensi default dari sebuah nama file sehingga kontrol dapat secara otomatis mengembalikan nama yang lengkap dalam properti FileName bahkan jika pengguna tidak menentukan ekstensinya. Alternatifnya, anda dapat mengatur dan memperoleh nama file dasar (yaitu, nama dari file tanpa ekstensi) dengan menggunakan properti FileTitle. Anda dapat menentukan file filters (penyaring file) tersedia buat pengguna saat menelusuri isi dari suatu direktori. Anda melakukan ini dengan memberikan sebuah string pada properti Filter yang berisi pasangan (description, filter), dengan item-item yang dipisahkan oleh karakter pipe (|). Misal, ketika bekerja dengan file grafik, anda dapat menentukan tiga filter dengan cara sebagai berikut : ' Anda dapat menspesifikasikan banyak filter dengan menggunakan semicolon sebagai pemisah. CommonDialog1.Filter = "Semua File|*.*|Bitmaps|*.bmp|Metafiles|*.wmf;*.emf" Anda yang memutuskan filter apa yang pertama kali dipilih dengan menggunakan properti FilterIndex: ' Menampilkan filter Bitmaps (Filter berbasis satu) CommonDialog1.FilterIndex = 2 Tabel 3. Nilai-nilai dari properti Flags untuk kotak common dialog FileOpen dan FileSave. Konstan
Deskripsi
cdlOFNReadOnly
Status CheckBox dari Open As Read-Only (hanya FileOpen).
cdlOFNOverwritePrompt
Menampilkan sebuah pesan sebelum menindas file yang sudah ada (hanya FileSave)
cdlOFNHideReadOnly
Menyembunyikan CheckBox Open As Read-Only. Bit ini seharusnya selalu diset dalam kotak dialog FileSave.
cdlOFNNoChangeDir
Jangan memodifikasi direktori sekarang (terpilih). Secara default, sebuag dialog File mengubah drive dan direktori yang sedang terpilih untuk menyesuaikan alamat atau jalur dari file yang dipilih oleh pengguna.
cdlOFNNoValidate
Menerima karakter-karakter direkomendasikan).
cdlOFNAllowMultiselect
Meng-enable pemilihan banyak file. (hanya FileOpen).
cdlOFNExtensionDifferent
Ekstensi dari file terpilih berbeda dari nilai pada properti DefaultExt.
cdlOFNPathMustExist
Menolak nama file dengan alamat atau jalur yang valid atau tidak eksis. (Sangat direkomendasikan).
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
invalid
dalam
nama
file.
(Tidak
By: Galih Hermawan, S.Kom
9 cdlOFNFileMustExist
Menolak memilih file yang tidak ada. (hanya FileOpen).
cdlOFNCreatePrompt
Jika file yang terpilih tidak ada, menanyakan apakah sebaiknya akan membuat file baru. Secara otomatis mengeset cdlOFNFileMustExist dan cdlOFNPathMustExist. (hanya FileOpen).
cdlOFNShareAware
Mengabaikan kesalahan network sharing (berbagi dalam jaringan). Tidak direkomendasikan, gunakan hanya jika anda ingin memecahkan konflik pada sharing lewat kode.
cdlOFNNoReadOnlyReturn
Menolak untuk memilih file read-only atau file yang terletak pada direktori write-protected (dilindungi dari penulisan).
cdlOFNExplorer
Menggunakan antarmuka yang mirip Windows Explorer dalam kotak dialog multiple-selection (banyak pemilihan).
cdlOFNLongNames
Flag ini meng-enable kotak dialog untuk banyak pemilihan dengan nama file yang panjang yang menggunakan style Windows Explorer.
cdlOFNNoDereferenceLinks Mengembalikan nama dan jalur file yang dipilih pengguna, bahkan jika ini adalah sebuah shortcut file LNK yang menunjuk ke file lain. Jika flag ini diabaikan, ketika pengguna memilih sebuah file LNK kotak dialog mengembalikan nama dan alamat dari file yang direferensikan. cdlOFNHelpButton
Menampilkan tombol Help.
cdlOFNNoLongNames
Tidak mengijinkan nama file yang panjang.
Saat bekerja dengan sebuah kotak dialog FileOpen dan FileSave, anda seharusnya selalu mengeset properti CancelError ke true karena anda perlu suatu jalan untuk mencari tahu apakah pengguna membatalkan operasi file.
Dialog FileSave Gambar 5 pada halaman berikut adalah contoh kotak dialog FileSave. Rutin berikut berisi kode untuk menerima sebuah referensi ke suatu kontrol TextBox dan ke kontrol CommonDialog. Rutin tersebut menggunakan kontrol kedua untuk meminta nama file sebelum dia menyimpan isinya ke kontrol TextBox dari file terpilih. Dia mengembalikan nama dari file dalam argumen ketiga. ' Mengembalikan false jika perintah Save dibatalkan, sebaliknya true. Function SaveTextControl(TB As Control, CD As CommonDialog, _ Filename As String) As Boolean Dim filenum As Integer On Error GoTo ExitNow CD.Filter = "Semua file (*.*)|*.*|Text files|*.txt" CD.FilterIndex = 2 CD.DefaultExt = "txt" CD.Flags = cdlOFNHideReadOnly Or cdlOFNPathMustExist Or _ cdlOFNOverwritePrompt Or cdlOFNNoReadOnlyReturn CD.DialogTitle = "Pilih file target " CD.Filename = Filename
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom
10 ' Keluar jika pengguna menekan Cancel. CD.CancelError = True CD.ShowSave Filename = CD.Filename ' Menuliskan isi kontrol. filenum = FreeFile() Open Filename For Output As #filenum Print #filenum, TB.Text; Close #filenum ' Tanda keberhasilan. SaveTextControl = True ExitNow: End Function Anda dapat menggunakan rutin SaveTextControl sebagai berikut : Dim NamaFile As String If SaveTextControl(RichTextBox1, CommonDialog1, NamaFile) Then MsgBox "Teks telah disimpan ke file " & NamaFile End If
Gambar 5. Kotak CommonDialog FileSave.
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom
11 Jangan lupa untuk menspesifikasikan bit cdlOFNHideReadOnly untuk kotak dialog FileSave. Jika anda lupa, CheckBox Open As Read-Only akan muncul di kotak dialog, dimana dapat membingungkan pengguna, yang sedang menyimpan file, bukan membukanya. Flag lain yang cukup nyaman adalah cdlOFNNoReadOnlyReturn, dimana meyakinkan bahwa file tidak memiliki atribut read-only dan oleh karena itu dapat ditindas tanpa mengakibatkan error.
Dialog FileOpen Pemilihan Tunggal Kontrol CommonDialog mendukung kotak dialog FileOpen untuk pemilihan tunggal atau banyak. Berikut ini contoh rutin untuk memuatkan isi dari file teks ke control TextBox : ' Mengembalikan false jika perintah dibatalkan, sebaliknya true. Function LoadTextControl(TB As Control, CD As CommonDialog, _ Filename As String) As Boolean Dim filenum As Integer On Error GoTo ExitNow CD.Filter = "Semua file (*.*)|*.*|Text files|*.txt" CD.FilterIndex = 2 CD.DefaultExt = "txt" CD.Flags = cdlOFNHideReadOnly Or cdlOFNFileMustExist Or _ cdlOFNNoReadOnlyReturn CD.DialogTitle = "Pilih file sumber " CD.Filename = Filename ' Keluar jika pengguna menekan Cancel. CD.CancelError = True CD.ShowOpen Filename = CD.Filename ' Membaca isi file ke kontrol. filenum = FreeFile() Open Filename For Input As #filenum TB.Text = Input$(LOF(filenum), filenum) Close #filenum ' Tanda keberhasilan. LoadTextControl = True ExitNow: End Function Jika anda tidak menspesifikasikan bit cdlOFNHideReadOnly dalam properti Flag, kotak common dialog akan menyertakan CheckBox Open As Read-Only. Untuk mengetahui apakah pengguna mengklik CheckBox, anda harus mengetes properti Flags saat keluar sebagai berikut : If CD.Flags And cdlOFNReadOnly Then ' File telah dibuka dalam mode read-only. ' (Misalnya, anda akan men-disable perintah File-Save). End If
Diktat Pemrograman Visual Basic 6.0 Jurusan Teknik Informatika - UNIKOM
By: Galih Hermawan, S.Kom