Sabtu, 20 Oktober 2012
Jumat, 19 Oktober 2012
Mengurangi Ukuran Aplikasi
Ketika pengurangan ukuran
aplikasi merupakan hal yang penting, ada beberapa cara yang dapat Anda gunakan
untuk membuat coding Anda lebih ringkas. Selain untuk mengurangi ukuran
aplikasi di memori, hampir semua teknik optimasi berikut juga akan mengurangi
ukuran file .exe. Seperti keuntungan yang saling melengkapi, sebuah aplikasi
dengan ukuran yang lebih kecil akan lebih cepat diload ke memori.
Banyak teknik optimasi menggunakan cara dengan menghapus bagian elemen yang tidak penting dari coding, sementara Visual Basic secara otomatis menghapus elemen-elemen tersebut ketika Anda meng-compile aplikasi Anda, sehingga tidak ada alasan untuk membatasi panjang atau jumlah dari elemen-elemen berikut ini, karena sama sekali tidak berpengaruh dengan ukuran aplikasi:
Banyak teknik optimasi menggunakan cara dengan menghapus bagian elemen yang tidak penting dari coding, sementara Visual Basic secara otomatis menghapus elemen-elemen tersebut ketika Anda meng-compile aplikasi Anda, sehingga tidak ada alasan untuk membatasi panjang atau jumlah dari elemen-elemen berikut ini, karena sama sekali tidak berpengaruh dengan ukuran aplikasi:
- Nama-nama pengenal (Identifier names)
- Komentar (Comments)
- Baris kosong (Blank lines).
Tidak ada satupun efek dari elemen-elemen di atas mempengaruhi ukuran dari
aplikasi Anda di memori ketika dijalankan sebagai file .exe.
Elemen-elemen lain, seperti variables, forms, dan prosedur, memakan banyak tempat di memori. Ada beberapa cara yang dapat Anda gunakan untuk mengurangi penggunaan memori yang digunakan oleh aplikasi Anda ketika dijalankan sebagai file exe. Cara ini juga dapat mengurangi ukuran coding Anda:
Elemen-elemen lain, seperti variables, forms, dan prosedur, memakan banyak tempat di memori. Ada beberapa cara yang dapat Anda gunakan untuk mengurangi penggunaan memori yang digunakan oleh aplikasi Anda ketika dijalankan sebagai file exe. Cara ini juga dapat mengurangi ukuran coding Anda:
- Kurangi Jumlah Form yang Diload.
- Kurangi Jumlah Control.
- Gunakan Label Menggantikan TextBox.
- Biarkan Data di File Tersimpan di Disk, dan Di-load Ketika Dibutuhkan Saja.
- Atur/Organisasikan Module Anda.
- Pertimbangkan Alternatif untuk Menggunakan Data Bertipe Variant.
- Gunakan Array Dinamik dan Hapus Jika Tidak Digunakan.
- Kosongkan Alokasi yang Digunakan oleh String Atau Variabel Object.
- Hapus "Dead Code" dan Variabel yang Tidak Pernah Digunakan.
Berikut penjelasan setiap
butir di atas.
- Kurangi Jumlah Form yang Diload
Setiap form yang diload, apakah kelihatan atau tidak, memakan sejumlah memori
(bervariasi dengan jumlah dan tipe dari control yang ada di form, ukuran
bitmaps di form, dan sebagainya). Gunakanlah perintah untuk menge-load form
hanya jika Anda ingin menampilkannya, dan gunakanlah perintah untuk meng-unload
form (daripada menyembunyikannya (Hide)) ketika Anda sudah tidak
membutuhkannya. Ingatlah, bahwa referensi apapun yang berkaitan kepada
properties, methods, atau controls di sebuah form, atau sebuah variabel yang
terdapat di suatu form yang dideklarasikan sebagai New, menyebabkan Visual
Basic me-load form tersebut.
Ketika Anda meng-unload sebuah form menggunakan metode Unload, hanya bagian dari memori yang digunakan oleh form ini yang dibebaskan. Untuk membebaskan semua memori, hilangkan referensi ke form tersebut dengan menggunakan kata kunci "Nothing":
Ketika Anda meng-unload sebuah form menggunakan metode Unload, hanya bagian dari memori yang digunakan oleh form ini yang dibebaskan. Untuk membebaskan semua memori, hilangkan referensi ke form tersebut dengan menggunakan kata kunci "Nothing":
Code::
|
Set Form = Nothing
|
- Kurangi Jumlah Control
Ketika Anda membuat aplikasi, cobalah untuk menempatkan sedikit mungkin control
dalam sebuah form. Jumlah control sebenarnya tergantung pada tipe control dan
juga sistem yang digunakan, tapi pada umumnya, form yang memiliki banyak
control di dalamnya akan memperlambat dalam pemunculan. Cara untuk mengatasi
hal ini adalah dengan menggunakan control array sebisa mungkin, daripada
membuat banyak control yang memiliki tipe sama di dalam sebuah form pada saat
pendisainan form.
Untuk informasi lebih lanjut mengenai control arrays, lihat "Working with Control Arrays" dalam "Using Visual Basic’s Standard Controls."
Untuk informasi lebih lanjut mengenai control arrays, lihat "Working with Control Arrays" dalam "Using Visual Basic’s Standard Controls."
- Gunakan Label menggantikan TextBox
Kontrol Label menggunakan sumber daya Windows lebih sedikit dibandingkan
TextBox, jadi sebaiknya gunakanlah Label untuk menggantikan TextBox sebisa
mungkin. Sebagai contoh, jika Anda membutuhkan sebuah control yang bersifat
hanya untuk menampilkan teks di dalam sebuah form, akan lebih efisien dengan
menggunakan Label.
Bahkan sebuah form entri data yang membutuhkan banyak TextBox dapat menggunakan cara ini. Anda dapat membuat sebuah Label untuk setiap field dan hanya menggunakan sebuah TextBox untuk entri data, pindahkan TextBox ini ke lokasi Label berikutnya ketika Textl mendapat event LostFocus. Untuk membuktikannya, buatlah satu project baru dengan satu form. Tambahkan 3 Label, 1 TextBox, dan 1 Commandbutton ke dalam form tersebut. Buat ukuran ketiga label sama dengan ukuran textbox, lalu copy-kan coding berikut ke editor form yang bertalian.
Bahkan sebuah form entri data yang membutuhkan banyak TextBox dapat menggunakan cara ini. Anda dapat membuat sebuah Label untuk setiap field dan hanya menggunakan sebuah TextBox untuk entri data, pindahkan TextBox ini ke lokasi Label berikutnya ketika Textl mendapat event LostFocus. Untuk membuktikannya, buatlah satu project baru dengan satu form. Tambahkan 3 Label, 1 TextBox, dan 1 Commandbutton ke dalam form tersebut. Buat ukuran ketiga label sama dengan ukuran textbox, lalu copy-kan coding berikut ke editor form yang bertalian.
Code::
|
Dim i As Integer Private Sub Command1_Click() If MsgBox("Data yang Anda isikan: " & vbCrLf & _
"Label1 = " & Label1.Caption & vbCrLf & _
"Label2 = " & Label2.Caption & vbCrLf & _
"Label3 = " & Label3.Caption, _
vbInformation + vbYesNo, "Simpan") = vbYes Then
MsgBox "Data telah disimpan!", vbInformation, "OK"
Else
EditData
End If
End Sub Private Sub Form_Load() i = 0
Text1 = ""
Command1.Caption = "&Simpan"
Label1 = "": Label2 = "": Label3 = "" Label1.BorderStyle = 1
Label2.BorderStyle = 1
Label3.BorderStyle = 1
Text1.Move Label1.Left, Label1.Top
End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text1_LostFocus
End Sub Private Sub Text1_LostFocus() i = i + 1
If i = 0 Then
'Update Label1
Label1.Caption = Text1.Text
'Pindahkan Textbox ke Label pertama
Text1.Move Label1.Left, Label1.Top
'Update isi Text1
Text1.Text = Label1.Caption
Text1.SetFocus ElseIf i = 1 Then
'Update Label1
Label1.Caption = Text1.Text
'Pindahkan Textbox ke Label berikutnya
Text1.Move Label2.Left, Label2.Top
'Update isi Text1
Text1.Text = Label2.Caption
ElseIf i = 2 Then
'Update Label1 Label2.Caption = Text1.Text
'Pindahkan Textbox ke Label berikutnya
Text1.Move Label3.Left, Label3.Top
'Update isi Text1
Text1.Text = Label3.Caption
ElseIf i = 3 Then
'Update Label1
Label3.Caption = Text1.Text
'Sembunyikan Text1, karena ini terakhir
Text1.Visible = False
'Update isi Text1 dgn Label1 jika ingin diulang
Text1.Text = Label1.Caption
End If
End Sub Sub EditData() i = -1 'Kembali lagi dari awal, agar menjadi 0 '(-1 + 1)... Text1.Visible = True
Text1_LostFocus 'Panggil prosedur Text1_LostFocus
End Sub |
Anda dapat membuat sebuah Label seperti tampilan TextBox dengan mengeset property BackColor dan BorderStyle. Walaupun cara ini membutuhkan coding (lihat di dalam prosedur Form_Load di atas), hal ini dapat mengurangi sumber daya yang digunakan untuk sebuah form yang memiliki banyak field TextBox.
- Biarkan Data di File Tersimpan di Disk, dan Di-load Ketika Dibutuhkan Saja
Data yang langsung dimasukkan ke dalam aplikasi Anda saat design time (seperti
property atau seperti string dan bilangan yang dimuat langsung di source code)
memerlukan memory di aplikasi saat run time. Anda dapat mengurangi memori
dengan me-load data dari file atau sumber lainnya tersebut saat run-time. Hal
yang sama juga berlaku untuk variabel berupa gambar bitmaps dan strings.
Untuk informasi lebih lanjut mengenai cara menambahkan sumber daya ke aplikasi Anda, lihat "Resource Files" pada "Advanced Programming Features."
Untuk informasi lebih lanjut mengenai cara menambahkan sumber daya ke aplikasi Anda, lihat "Resource Files" pada "Advanced Programming Features."
- Atur/Organisasikan Module Anda
Visual Basic me-load Module hanya saat ada "permintaan", itulah
mengapa, aplikasi me-load sebuah module ke memori hanya ketika coding memanggil
sebuah prosedur yang terdapat di dalam module tersebut. Jika Anda tidak pernah
memanggil sebuah prosedur yang terdapat di suatu module, Visual Basic tidak
akan pernah juga me-load module ini. Menempatkan beberapa prosedur yang saling
berhubungan dalam satu module yang sama menyebabkan Visual Basic akan me-load
satu module ini di saat diperlukan saja. Sangat efisien, bukan?
- Pertimbangkan Alternatif untuk Menggunakan Data Bertipe Variant
Data dengan tipe Variant secara umum memang fleksibel, tetapi data ini juga
lebih besar dibandingkan dengan data tipe lainnya. Ketika Anda harus
memperhitungkan akibat penggunaan setiap byte yang tersisa di aplikasi Anda,
pertimbangkanlah untuk mengganti data bertipe Variant -- khususnya juga array
bertipe Variant -- dengan tipe data lainnya.
Sebuah data yang bertipe Variant menggunakan tempat 16 bytes, dibandingkan dengan 2 bytes untuk yang bertipe Integer, dan 8 bytes untuk bertipe Double. Variabel String menggunakan 4 bytes ditambah 1 byte setiap karakternya di string, tetapi setiap data Variant yang terdiri atas sebuah string memerlukan 16 bytes ditambah 1 byte setiap karakternya di dalam string tersebut. Karena data variant sangat besar, variabel Variant yang bertipe string sering membuat masalah ketika digunakan sebagai variabel Local atau argumen ke sebuah prosedur, karena banyak menggunakan ruang stack.
Bagaimanapun dalam beberapa kasus, menggunakan data bertipe lainnya "memaksa" Anda untuk menambahkan lebih banyak coding untuk menggantikan ke-fleksibilitas-an yang terdapat pada tipe data Variant, sehingga secara murni bisa dikatakan tidak ada pengurangan ukuran aplikasi yang berarti.
Sebuah data yang bertipe Variant menggunakan tempat 16 bytes, dibandingkan dengan 2 bytes untuk yang bertipe Integer, dan 8 bytes untuk bertipe Double. Variabel String menggunakan 4 bytes ditambah 1 byte setiap karakternya di string, tetapi setiap data Variant yang terdiri atas sebuah string memerlukan 16 bytes ditambah 1 byte setiap karakternya di dalam string tersebut. Karena data variant sangat besar, variabel Variant yang bertipe string sering membuat masalah ketika digunakan sebagai variabel Local atau argumen ke sebuah prosedur, karena banyak menggunakan ruang stack.
Bagaimanapun dalam beberapa kasus, menggunakan data bertipe lainnya "memaksa" Anda untuk menambahkan lebih banyak coding untuk menggantikan ke-fleksibilitas-an yang terdapat pada tipe data Variant, sehingga secara murni bisa dikatakan tidak ada pengurangan ukuran aplikasi yang berarti.
- Gunakan Array Dinamik dan Hapus Jika Tidak Digunakan
Pertimbangkanlah untuk menggunakan array dinamis menggantikan array statik
(berukuran tetap). Ketika Anda tidak lagi membutuhkan data yang tersimpan di
sebuah array dinamis, gunakan "Erase" atau "ReDim Preserve"
untuk menghapus data yang sudah tidak dibutuhkan, dan bebaskan/kembalikan
memori yang digunakan oleh array. Atau sebagai contoh, Anda apat membebaskan
ruang yang digunakan oleh array dinamis dengan coding berikut ini:
Code::
|
Erase MyArray
|
Sementara menggunakan "Erase" untuk menghapus array, ReDim Preserve membuat array bisa lebih kecil tanpa harus kehilangan isinya:
Code::
|
ReDim Preserve MyArray(10, smallernum)
|
Menghapus sebuah array statik tidak akan mengembalikan atau membebaskan memori yang digunakan oleh array tersebut — tapi hanya menghilangkan nilai dari setiap elemen array ini. Jika setiap elemen array merupakan string, atau sebuah data bertipe Variant yang di dalamnya mengandung sebuah array string, maka menghapus array akan mengembalikan memori dari string atau data Variant itu, bukan memori yang digunakan oleh array tersebut.
- Kosongkan Alokasi yang Digunakan oleh String atau Variabel Object
Ruang yang digunakan oleh variabel string Local (non Statik) dan variabel
array, secara otomatis dibebaskan ketika prosedur ini selesai. Tetapi, variabel
string dan array global yang dideklarasikan di dalam module tetap ada selama
program Anda dijalankan. Jika Anda tetap berusaha untuk menjaga agar ukuran
aplikasi sekecil mungkin, Anda harus membebaskan ruang yang digunakan oleh
variabel-variabel ini segera setelah digunakan. Anda membebaskan ruang yang
digunakan oleh string ini dengan cara membuat string kosong (panjangnya nol):
Code::
|
SomeStringVar = "" 'Bebaskan ruang spasi yang digunakan |
Sama dengan hal tersebut, Anda dapat membebaskan beberapa (tapi tidak semua) dari ruang yang digunakan oleh sebuah variabel object dengan mengesetnya menjadi "Nothing". Sebagai contoh, untuk menghapus sebuah variabel object bertipe Recordset, dapat dilakukan dengan cara:
Code::
|
Private rs As New RecordSet
… '<-- Coding untuk inisialisasi dan penggunaannya di sini... rs.Close 'Tutup Recordset Set rs = Nothing 'Set referensi ke objek tersebut menjadi Nothing |
Jika Anda tidak mengeset secara explisit variabel object menjadi Nothing, sebuah referensi ke objek tersebut akan tetap ada di memori sampai aplikasi Anda selesai dijalankan; dan untuk sebuah aplikasi yang menggunakan banyak objek seperti ini, dapat mengakibatkan banyak memakan memori dan memperlambat dalam performansi aplikasi.
Anda juga dapat membebaskan ruang dengan cara meng-unload form dan mengeset-nya menjadi "Nothing" daripada menyembunyikannya dengan "Hide", sementara mereka sudah tidak dibutuhkan lagi.
- Hapus "Dead Code" dan Variabel yang Tidak Pernah Digunakan
Ketika Anda membangun dan memodifikasi aplikasi Anda, mungkin Anda menyisakan
"dead-code", yaitu prosedur yang tidak pernah dipanggil dari coding
manapun di aplikasi Anda. Mungkin juga Anda telah mendeklarasikan variabel yang
tidak pernah digunakan. Walaupun Visual Basic menghapus konstanta yang tidak
pernah digunakan, hal ini tidak menghapus variabel yang tidak digunakan
tersebut beserta "dead-code" ketika Anda membuat aplikasi Anda
menjadi sebuah file exe. Pertimbangkan dalam menemukan dan menghapus prosedur
dan variabel yang tidak pernah digunakan. Sebagai contoh, statement Debug.Print
diabaikan ketika run-time .exe, kadang-kadang digunakan setelah menjadi file
exe.
Statement Debug.Print dengan string atau variabel seperti argument tidak dicompile ketika Anda membuatnya menjadi file exe. Bagaimanapun, ketika statement Debug.Print milik sebuah fungsi yang dipanggil sebagai argument, statement Debug.Print ini akan diabaikan oleh compiler, tetapi pada pemanggilan fungsi tetap ikut dicompile. Kemudian, ketika aplikasi dijalankan, fungsi ini dipanggil, tetapi hasil pengembaliannya diabaikan karena fungsi yang tampak sebagai argument untuk Debug.Print akan "mengangkat" ruang dan siklus waktu dalam sebuah file exe, hal ini mungkin berguna untuk menghapus statement tadi sebelum Anda membuat menjadi file exe.
Gunakan perintah Find di menu Edit untuk mencari referensi ke sebuah variabel. Atau, jika Anda menggunakan statement "Option Explicit" dalam setiap module/form, Anda dapat dengan cepat menemukan jika sebuah variabel digunakan di aplikasi Anda dengan cara menghapus atau menutupnya dengan komentar di pendeklarasiannya, lalu coba jalankan aplikasi Anda. Jika variabel tersebut digunakan, Visual Basic akan menampilkan pesan kesalahan, sedangkan jika Anda tidak menemukan pesan kesalahan, berarti variabel tersebut tidak digunakan.
Untuk informasi lebih lanjut mengenai statement Debug.Print, lihat "Printing Information in the Immediate Window" pada "Debugging Your Code and Handling Errors."
Sumber: MSDN Library - Januari 2000 (Reducing Code Size)
Statement Debug.Print dengan string atau variabel seperti argument tidak dicompile ketika Anda membuatnya menjadi file exe. Bagaimanapun, ketika statement Debug.Print milik sebuah fungsi yang dipanggil sebagai argument, statement Debug.Print ini akan diabaikan oleh compiler, tetapi pada pemanggilan fungsi tetap ikut dicompile. Kemudian, ketika aplikasi dijalankan, fungsi ini dipanggil, tetapi hasil pengembaliannya diabaikan karena fungsi yang tampak sebagai argument untuk Debug.Print akan "mengangkat" ruang dan siklus waktu dalam sebuah file exe, hal ini mungkin berguna untuk menghapus statement tadi sebelum Anda membuat menjadi file exe.
Gunakan perintah Find di menu Edit untuk mencari referensi ke sebuah variabel. Atau, jika Anda menggunakan statement "Option Explicit" dalam setiap module/form, Anda dapat dengan cepat menemukan jika sebuah variabel digunakan di aplikasi Anda dengan cara menghapus atau menutupnya dengan komentar di pendeklarasiannya, lalu coba jalankan aplikasi Anda. Jika variabel tersebut digunakan, Visual Basic akan menampilkan pesan kesalahan, sedangkan jika Anda tidak menemukan pesan kesalahan, berarti variabel tersebut tidak digunakan.
Untuk informasi lebih lanjut mengenai statement Debug.Print, lihat "Printing Information in the Immediate Window" pada "Debugging Your Code and Handling Errors."
Sumber: MSDN Library - Januari 2000 (Reducing Code Size)
Mempercepat Tampilan Display Program Anda
Karena
Microsoft Windows merupakan antar muka yang bersifat grafis, kecepatan graphics
dan pengoperasian tampilan lainnya penting sekali diperhatikan dalam
mempercepat pemunculan aplikasi. Pemunculan form yang lebih cepat dan
"penggambaran form" (event Paint), nampaknya akan membuat aplikasi
Anda dirasakan tampil lebih cepat oleh pemakai. Ada beberapa cara yang dapat Anda gunakan
untuk mempercepat pemunculan aplikasi Anda, yaitu sebagai berikut:
- Set property ClipControls dari setiap objek kontainer (Form, Frame, Picture) menjadi False.
- Gunakan property AutoRedraw dengan tepat.
- Gunakan control Image menggantikan control PictureBox.
- Gunakan Line menggantikan PSet.
- Sembunyikan controls saat mengeset properti guna menghindari penggambaran ulang (repaint).
Penjelasan untuk setiap cara di atas dapat Anda lihat di bawah ini.
Kecuali Anda sedang menggunakan methode graphics (Line, PSet, Circle, dan Print), Anda seharusnya mengeset property ClipControls menjadi False (default=True) untuk form dan semua frame dan control picturebox (hal ini mungkin menyebabkan hasil yang tidak dapat diprediksi jika coding Anda terdiri dari methode graphics yang menggambar di belakang control-control lainnya). Ketika ClipControls diset menjadi False, Visual Basic tidak menggambar ulang controls dengan background sebelum menggambar control-control itu sendiri. Pada form yang terdiri dari banyak control, hasil kecepatan yang didapat sangat berarti sekali.
Untuk informasi lebih lanjut, lihat "Layering Graphics with AutoRedraw and ClipControls" dalam "Working with Text and Graphics."
- Set property ClipControls dari setiap objek kontainer (Form, Frame, Picture) menjadi False
Kecuali Anda sedang menggunakan methode graphics (Line, PSet, Circle, dan Print), Anda seharusnya mengeset property ClipControls menjadi False (default=True) untuk form dan semua frame dan control picturebox (hal ini mungkin menyebabkan hasil yang tidak dapat diprediksi jika coding Anda terdiri dari methode graphics yang menggambar di belakang control-control lainnya). Ketika ClipControls diset menjadi False, Visual Basic tidak menggambar ulang controls dengan background sebelum menggambar control-control itu sendiri. Pada form yang terdiri dari banyak control, hasil kecepatan yang didapat sangat berarti sekali.
Untuk informasi lebih lanjut, lihat "Layering Graphics with AutoRedraw and ClipControls" dalam "Working with Text and Graphics."
- Gunakan property AutoRedraw dengan tepat
Ketika property AutoRedraw diset ke True untuk sebuah form atau control, Visual
Basic menyimpan sebuah bitmap untuk menggambar ulang form atau control
tersebut. Walaupun hal ini meningkatkan kecepatan penggambaran ulang (sebagai
contoh, ketika form atau control dibebaskan setelah sebuah form atau jendela
yang menyimpannya dihapus), hal ini memperlambat methode graphics. Visual Basic
harus membentuk methode graphics pada AutoRedraw bitmap dan meng-copy bitmap
yang ada ke layar. Proses ini juga menggunakan sejumlah memory.
Jika aplikasi Anda menghasilkan graphics yang cukup kompleks tapi tidak sering mengubahnya, setting AutoRedraw menjadi True adalah pilihan yang tepat. Tapi jika aplikasi Anda menggambar graphics yang harus berubah setiap saat, akan lebih baik jika Anda mengeset property AutoRedraw menjadi False dan membentuk methode graphics untuk form atau control di event Paint.
Untuk informasi lebih lanjut, lihat "Layering Graphics with AutoRedraw and ClipControls" di "Working with Text and Graphics."
Optimasi ini meningkatkan kecepatan dan mengurangi ukurang aplikasi Anda; gunakan hal ini sedapat mungkin. Ketika Anda menampilkan pictures dan mengklik aksi events mouse actions padanya, gunakan control image menggantikan picture box. Jangan gunakan sebuah control picturebox kecuali Anda membutuhkan kemampuan yang hanya disediakan oleh picture box, seperti methode graphic, kemampuan untuk memuat controls lainnya, atau dynamic data exchange (DDE).
Jika aplikasi Anda menghasilkan graphics yang cukup kompleks tapi tidak sering mengubahnya, setting AutoRedraw menjadi True adalah pilihan yang tepat. Tapi jika aplikasi Anda menggambar graphics yang harus berubah setiap saat, akan lebih baik jika Anda mengeset property AutoRedraw menjadi False dan membentuk methode graphics untuk form atau control di event Paint.
Untuk informasi lebih lanjut, lihat "Layering Graphics with AutoRedraw and ClipControls" di "Working with Text and Graphics."
- Gunakan control Image menggantikan control PictureBox
Optimasi ini meningkatkan kecepatan dan mengurangi ukurang aplikasi Anda; gunakan hal ini sedapat mungkin. Ketika Anda menampilkan pictures dan mengklik aksi events mouse actions padanya, gunakan control image menggantikan picture box. Jangan gunakan sebuah control picturebox kecuali Anda membutuhkan kemampuan yang hanya disediakan oleh picture box, seperti methode graphic, kemampuan untuk memuat controls lainnya, atau dynamic data exchange (DDE).
- Gunakan Line menggantikan PSet
Methode Line ini lebih cepat dibandingkan suatu set methode PSet. Hindari
menggunakan methode PSet dan pengelompokan sekumpulan nilai menjadi sebuah
methode Line. Kontrol Shape dan Line sangat tepat untuk elemen-elemen yang
bersifat grafis yang jarang berubah; sementara graphics yang kompleks, atau
graphics yang sering berubah, umumnya terbaik ditangani dengan menggunakan
methode graphics.
- Sembunyikan controls saat mengeset properti guna menghindari penggambaran ulang (repaint)
Setiap penggambaran ulang (repaints) merupakan sesuatu yang berharga. Repaints
yang lebih sedikit di Visual Basic harus dilakukan untuk mempercepat pemunculan
aplikasi Anda. Salah satu cara untuk mengurangi jumlah repaints adalah membuat
controls tidak kelihatan ketika Anda memanipulasinya. Sebagai contoh, misalkan
Anda ingin mengatur ulang ukuran (resize) beberapa listboxes dalam event Resize
form:
Code::
|
Sub Form_Resize () Dim i As Integer, sHeight As Integer sHeight = ScaleHeight / 4 For i = 0 To 3 lstDisplay(i).Move 0, i * sHeight, _ ScaleWidth, sHeight Next End Sub |
Prosedur di atas membuat empat repaints yang berbeda, satu untuk setiap listbox. Anda dapat mengurangi jumlah repaints dengan menempatkan semua listboxes di dalam sebuah picturebox, dan menyembunyikan picturebox sebelum Anda memindahkan dan mengatur ukuran listboxes. Kemudian, ketika Anda membuat picturebox kelihatan (visible) lagi, semua listboxes digambar dalam sebuah prosedur:
Code::
|
Sub Form_Resize () Dim i As Integer, sHeight As Integer picContainer.Visible = False picContainer.Move 0, 0, ScaleWidth, ScaleHeight sHeight = ScaleHeight / 4 For i = 0 To 3 lstDisplay(i).Move 0, i * sHeight, _ ScaleWidth, sHeight Next picContainer.Visible = True End Sub |
Catatan: Contoh ini menggunkaan methode Move menggantikan setting property Top dan Left. Methode Move mengeset kedua properties dalam sebuah operasi, dan menyimpan repaints yang ditambahkan.
Sumber: MSDN Library - Januari 2000 (Optimizing Display Speed)
Mendeteksi Jenis Sistem Operasi Windows
Pernahkah
Anda ingin mendeteksi jenis sistem operasi Windows versi yang mana digunakan di
komputer tempat program Anda dijalankan nantinya? Kadang-kadang Anda
membutuhkan fungsi ini misalnya untuk memastikan penanganan khusus di program
Anda untuk masing-masing jenis sistem operasi tersebut. Berikut ini solusinya!
Code::
|
'Deskripsi: Mendeteksi jenis sistem operasi Windows di suatu komputer. 'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 1 Commandbutton, ' dan satu Module (.bas)
' 2. Copy-kan coding berikut ke dalam editor form dan module ' yang bertalian.
'-------------------------------------------------------------------------- '--- Coding ini di Module --- Option Explicit
'Kode yang dimodifikasi berasal dari artikel di Visual Studio Magazine by Hank Marquis
'http://www.fawcette.com/vsm/2002_05/magazine/columns/desktopdeveloper/default_pf.asp
'Private Const VER_PLATFORM_WIN32s As Long = 0
Private Const VER_PLATFORM_WIN32_WINDOWS As Long = 1
Private Const VER_PLATFORM_WIN32_NT As Long = 2
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformID As Long
szCSDVersion As String * 128
End Type
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Function WinVer() As String
'Mengembalikan jenis Sistem Operasi
Dim tOVI As OSVERSIONINFO
'Seharusnya 148: (128 + (4 * 5)) - Tipe data Long = 4 bytes
tOVI.dwOSVersionInfoSize = Len(tOVI)
'Mulai periksa
If GetVersionEx(tOVI) = 1 Then
If tOVI.dwPlatformID = VER_PLATFORM_WIN32_NT And _
tOVI.dwMajorVersion = 5 And _
tOVI.dwMinorVersion = 1 Then
WinVer = "XP"
ElseIf tOVI.dwPlatformID = VER_PLATFORM_WIN32_NT And _
tOVI.dwMajorVersion = 5 And _
tOVI.dwMinorVersion = 0 Then
WinVer = "00"
ElseIf tOVI.dwPlatformID = VER_PLATFORM_WIN32_NT And tOVI.dwMajorVersion = 4 Then
WinVer = "NT"
ElseIf tOVI.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS And _
tOVI.dwMajorVersion = 4 And _
tOVI.dwMinorVersion = 90 Then
WinVer = "ME"
ElseIf (tOVI.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) And _
(tOVI.dwMajorVersion > 4) Or _
(tOVI.dwMajorVersion = 4 And _
tOVI.dwMinorVersion > 0) Then
WinVer = "98"
ElseIf tOVI.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS And _
tOVI.dwMajorVersion = 4 And tOVI.dwMinorVersion = 0 Then
WinVer = "95"
End If
End If
If Len(Trim$(WinVer)) = 0 Then
'OS tidak dikenali, kemungkinan module ini perlu diupdate jika ada OS yang baru
'atau kemungkinan fungsi API: GetVersionEX tidak dapat bekerja semestinya.
WinVer = "UN" ' Unknown
End If
End Function
'--- Batas coding di Module --- '--- Coding ini di Form --- 'Klik Command1 untuk menampilkan jenis Sistem Operasi yang digunakan
Private Sub Command1_Click()
Dim OSVersion As String
Select Case WinVer
Case "NT"
OSVersion = "Windows NT"
Case "00"
OSVersion = "Windows NT"
Case "XP"
OSVersion = "Windows XP"
Case "95"
OSVersion = "Windows 95"
Case "98"
OSVersion = "Windows 98"
Case "ME"
OSVersion = "Windows ME"
Case Else
OSVersion = "Unknown Version"
End Select
MsgBox "Sistem Operasi yang Anda gunakan: " & _
OSVersion, vbInformation, "Sistem Operasi"
End Sub
'--- Batas coding di Form --- |
Langganan:
Postingan (Atom)