Awal Kalimat Kapital |
'Deskripsi: Menampilkan huruf pertama dari setiap kalimat
' menjadi huruf besar/kapital.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id).
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 1 TextBox
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
Public Function AwalKalimatKapital(strKalimat As String)
Dim Temp1 As String, Temp2 As String
Dim Lokasi As Integer, i As Integer
Dim huruf As String * 1
Temp1$ = LCase(strKalimat) 'Kecilkan dulu semua
For i% = 1 To Len(Temp1$)
huruf = Chr(Asc(Mid(strKalimat, i%, 1)))
If huruf = "." Then
Lokasi% = i% + 2
End If
If i% = 1 Or i% = Lokasi% Then
Temp2$ = Temp2$ + UCase(Chr(Asc(Mid(Temp1$, i%, 1))))
Else
Temp2$ = Temp2$ + LCase(Chr(Asc(Mid(Temp1$, i%, 1))))
End If
Next i
AwalKalimatKapital = Temp2$
End Function
Private Sub Text1_Change()
Dim posisi As Integer
posisi = Text1.SelStart
Text1.Text = AwalKalimatKapital(Text1.Text)
Text1.SelStart = posisi
End Sub*****************************************************************************
*****************************************************************************
Awal Kata Kapital |
'Deskripsi: Menampilkan huruf pertama dari setiap kata dalam suatu kalimat
' menjadi huruf besar/kapital.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id).
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 1 TextBox
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
Public Function AwalKataKapital(strKalimat As String)
Dim i As Integer 'By Masino Sinaga, Bandung, 5 Juli 2002
Dim Temp As String
Dim Lokasi As Integer
Dim huruf As String * 1
Temp$ = ""
For i% = 1 To Len(strKalimat)
huruf = Chr(Asc(Mid(strKalimat, i%, 1)))
If Len(Trim(huruf)) < 1 Then
Lokasi% = i% + 1
End If
If i% = Lokasi% Or i% = 1 Then
Temp$ = Temp$ + UCase(Chr(Asc(Mid(strKalimat, i%, 1))))
Else
Temp$ = Temp$ + LCase(Chr(Asc(Mid(strKalimat, i%, 1))))
End If
Next i
AwalKataKapital = Temp$
End Function
Private Sub Text1_Change()
Dim posisi As Integer
posisi = Text1.SelStart
Text1.Text = AwalKataKapital(Text1.Text)
Text1.SelStart = posisi
End Sub *****************************************************************************
*****************************************************************************
Aplikasi Cetak Laporan |
'Deskripsi: Contoh source code untuk mencetak laporan yang datanya diambil
' dari database, menampilkan ke layar dan mencetaknya ke printer.
' Kategori laporan dapat dipilih berdasarkan menu atau masukan
' dari User. Menggunakan fungsi untuk meratakan suatu teks pada
' suatu kolom laporan (rata kanan dan rata kiri). Laporan dapat
' disimpan dan diambil ke dan dari file teks.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Minggu, 12 Mei 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form (frmCetakLaporan) dan
' 1 Module (Module1).
' 2. Pada frmCetakLaporan, tambahkan sebagai berikut:
' * Tiga buah Commandbutton, sbb:
' - cmdSimpan
' - cmdCetak
' - cmdKeluar
' * ComboBox, (Name = cboPrinter)
' 3. Buat Menu dengan struktur sebagai berikut:
' + File (mnuFile)
' - Buka (mnuBuka)
' - Simpan (mnuSimpan)
' - Cetak (mnuCetak)
' - - (mnuSep)
' - Keluar (mnuKeluar)
' + Kategori (mnuKategori)
' - Semua Data (mnuSemua)
' - Tanggal Terima (mnuTanggal)
' - Kode Barang (mnuKode)
' - Nama Barang (mnuNama)
' - Harga Satuan (mnuHarga)
' + Petunjuk (mnuPetunjuk)
' - Bantuan (mnuBantuan)
' - Tentang (mnuTentang)
' 4. Tambahkan control Timer. Set property Interval = 500, Enabled = True.
' 5. Tambahkan reference "Microsoft ActiveX Data Objects 2.0 Library"
' dari menu Project->References...
' 6. Tambahkan component ke form dari menu Project->Components, sbb:
' - "Microsoft Common Dialog Control 6.0 (SP3)" utk ShowOpen/ShowSave.
' - "Microsoft Windows Common Controls 5.0 (SP2), tambahkan StatusBar
' ("StatusBar1") dan ProgressBar ("prgBar1") masing-masing satu.
' - "Microsoft Rich TextBox Control 6.0", tambahkan 1 RichTextBox, beri
' nama dengan "rtfLap1".
' 7. Copy-kan coding untuk setiap form yang bertalian
' (lihat di halaman frmCetakLaporan dan Module1 di bawah)
Klik di sini untuk mendownload source code lengkap aplikasi CetakLaporan ini (36 KB).*******************************************************************************
*******************************************************************************
Menampilkan Data dari Database ke ListView |
'Deskripsi: Menampilkan data dari database MS Access ke
' dalam control ListView dan memungkinkan untuk
' penyortiran data pada setiap field atau kolom di
' ListView jika header ybt diklik. Menggunakan
' reference "Microsoft ActiveX Data Objects 2.0
' Library" untuk coding database, dan control
' "Microsoft Windows Common Control 6.0"
' untuk control ListView.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Senin, 22 Juli 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form.
' 2. Tambahkan reference dan component sesuai dengan
' yang disebutkan di atas.
' 3. Tambahkan satu ListView ke dalam form, beri nama
' ListView ini dengan LV.
' 4. Copy-kan coding berikut ke dalam editor form ybt.
'---------------------------------------------------------------
Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Buka koneksi ke database...
cn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Data Source=" & _
App.Path & "Data.mdb"
'Buka tabel "Orders"
rs.Open "Orders", cn, adOpenForwardOnly, adLockReadOnly
'Tentukan tampilan ListView...
LV.View = lvwReport 'Jangan lupa yang ini...!
'Ambil data dari recordset...
LoadListViewFromRecordset LV, rs
'Atur ukuran/lebar kolom di setiap listview...
ListViewAdjustColumnWidth LV, True
End Sub
Sub LoadListViewFromRecordset(LV As ListView, _
rs As ADODB.Recordset, Optional MaxRecords As Long)
'Prosedur mengambil data dari Recordset (tabel database)
Dim fld As ADODB.Field, alignment As Integer
Dim recCount As Long, i As Long, fldName As String
Dim li As ListItem
'Bersihkan isi dari ListView.
LV.ListItems.Clear
LV.ColumnHeaders.Clear
'Buat kumpulan ColumnHeader.
For Each fld In rs.Fields
'Menyaring tipe field untuk keperluan
'perataan tampilan teks di ListView
Select Case fld.Type
Case adBoolean, adCurrency, adDate, adDecimal, adDouble
alignment = lvwColumnRight
Case adInteger, adNumeric, adSingle, adSmallInt, adVarNumeric
alignment = lvwColumnRight
Case adBSTR, adChar, adVarChar, adVariant
alignment = lvwColumnLeft
Case Else
alignment = -1 'Berarti: "Unsupported field type".
'atau tipe field tdk mendukung
End Select
'Jika tipe field OK, buat sebuah kolom
'dengan perataan (alignment) yang benar.
If alignment <> -1 Then
'Kolom pertama haruslah rata kiri.
If LV.ColumnHeaders.Count = 0 Then alignment = lvwColumnLeft
LV.ColumnHeaders.Add , , fld.Name, fld.DefinedSize * 200, _
alignment
End If
Next
'Keluar jika tidak ada field yg dapat ditampilkan.
If LV.ColumnHeaders.Count = 0 Then Exit Sub
'Tambahkan semua records dalam recordset.
rs.MoveFirst
Do Until rs.EOF
recCount = recCount + 1
'Tambahkan object utama ListItem.
fldName = LV.ColumnHeaders(1).Text
Set li = LV.ListItems.Add(, , rs.Fields(fldName) & "")
'Tambahkan semua sub (ListSubItems.Add).
For i = 2 To LV.ColumnHeaders.Count
fldName = LV.ColumnHeaders(i)
li.ListSubItems.Add , , rs.Fields(fldName) & ""
Next
If recCount = MaxRecords Then Exit Do
rs.MoveNext
Loop
End Sub
Sub ListViewAdjustColumnWidth(LV As ListView, _
Optional AccountForHeaders As Boolean)
'Prosedur untuk menyesuaikan ukuran/lebar kolom ListView
Dim row As Long, col As Long
Dim width As Single, maxWidth As Single
Dim saveFont As StdFont, saveScaleMode As Integer, cellText As String
'Langsung keluar dari prosedur jika tidak ada
'items yang akan ditampilkan.
If LV.ListItems.Count = 0 Then Exit Sub
'Simpan huruf yang digunakan oleh form,
'dan sesuaikan ke huruf di ListView.
'Kita membutuhkan ini dengan tujuan untuk
'menggunakan metode dari TextWidth milik form.
Set saveFont = LV.Parent.Font
Set LV.Parent.Font = LV.Font
'Sesuaikan ScaleMode = vbTwips untuk form (parent).
saveScaleMode = LV.Parent.ScaleMode
LV.Parent.ScaleMode = vbTwips
For col = 1 To LV.ColumnHeaders.Count
maxWidth = 0
If AccountForHeaders Then
maxWidth = LV.Parent.TextWidth(LV.ColumnHeaders(col).Text) + 200
End If
For row = 1 To LV.ListItems.Count
'Ambil teks dari ListItems atau ListSubItems.
If col = 1 Then
cellText = LV.ListItems(row).Text
Else
cellText = LV.ListItems(row).ListSubItems(col - 1).Text
End If
'Hitung lebarnya, dan tetapkan untuk batas.
'Catatan: Tidak berlaku untuk "multiple-line text fields"
'atau teks yang fieldnya mengandung dari banyak baris.
width = LV.Parent.TextWidth(cellText) + 200
'Update lebar maksimum jika kita menemukan
'sebuah string yang lebih lebar.
If width > maxWidth Then maxWidth = width
Next
'Ubah lebar kolom sekarang...
LV.ColumnHeaders(col).width = maxWidth
Next
'Ganti property parent milik ListView
Set LV.Parent.Font = saveFont
LV.Parent.ScaleMode = saveScaleMode
End Sub
Private Sub Form_Resize()
'coding ini shrsnya jika error lanjut saja, sengaja dihilangkan spy dapat diupload ke brinkster
LV.Move 0, 0
LV.Height = Me.ScaleHeight - 250
LV.width = Me.ScaleWidth - 20
End Sub
'Menyortir data di ListView jika header kolom ybt
'diklik
Private Sub LV_ColumnClick(ByVal ColumnHeader As _
MSComctlLib.ColumnHeader)
'Urutkan data berdasarkan di kolom ybt...
If LV.Sorted And _
ColumnHeader.Index - 1 = LV.SortKey Then
'Telah diurutkan di kolom ini,
'balikkan urutan sortir.
LV.SortOrder = 1 - LV.SortOrder
Else
LV.SortOrder = lvwAscending
LV.SortKey = ColumnHeader.Index - 1
End If
LV.Sorted = True
End Sub
Klik di sini untuk mendownload source code + database lengkap aplikasi Database ini (39 KB).*****************************************************************************
*****************************************************************************
Membuat File Excel dari Program |
'Deskripsi: Membuat file MS Excel dengan menggunakan coding.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 1 Commandbutton.
' 2. Tambahkan reference dari Project->References... ceklist
' Microsoft Excel X.0 Object Library, lalu klik OK
' 3. Copy-kan coding berikut ke dalam editor form ybt.
'--------------------------------------------------------------------
Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim xlWS As Excel.Worksheet
Set xlApp = New Excel.Application
Set xlWB = xlApp.Workbooks.Add
Set xlWS = xlWB.Worksheets.Add
'Baris berikut ini akan mengisi cell (2,2) dengan tulisan "hello",
'dan akan mengisi cell (1,3) dengan tulisan "World"
xlWS.Cells(2, 2).Value = "hello"
xlWS.Cells(1, 3).Value = "World"
'Baris berikut ini menyimpan spreadsheet menjadi file "c:mysheet.xls".
xlWS.SaveAS "c:mysheet.xls"
xlApp.Quit
'Bebaskan memory...
Set xlWS = Nothing
Set xlWB = Nothing
Set xlApp = Nothing
End Sub *****************************************************************************
*****************************************************************************
Menampilkan Daftar Tabel di Database |
'Deskripsi: Menampilkan daftar tabel yang terdapat di dalam file database
' MS Access (*.mdb) menggunakan reference DAO.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Rabu, 8 Mei 2002.
'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 1 Listbox.
' 2. Tambahkan reference Microsoft DAO 3.X Object Library dari menu
' Project->References
' 3. Copy-kan coding berikut ke dalam editor form yang bertalian.
'-------------------------------------------------------------------------------
Option Explicit 'Setiap variabel yang digunakan harus dideklarasikan dulu...
Private Sub Form_Load()
Dim db As Database
Dim qdef As QueryDef
Dim td As TableDef
Dim dbname As String
'Buka database. Ganti "c:DBfile.mdb" dengan nama file database Anda
'Jika database di password, sesuaikan dengan metoda pembukaan file database
'yang diprotect dengan password... Pada contoh ini, kita anggap file *.mdb
'ybt tidak dipassword.
Set db = OpenDatabase("c:DBfile.mdb")
'Tampilkan nama tabel yang ada.
For Each td In db.TableDefs
'Jika Anda ingin menampilkan juga tabel sistem, ganti baris coding
'di bawah dengan: List1.AddItem td.Name, jadi tanpa pengecekan If...
If td.Attributes = 0 Then List1.AddItem td.Name
Next td
db.Close
End Sub ******************************************************************************
******************************************************************************
Entri/Cari Data di ListBox |
'Deskripsi: Jika user menekan huruf 'a' di textbox, item pertama yang diawali dengan ' huruf 'a' pada ListBox akan ditandai (disorot). 'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id) 'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 1 Module, 1 TextBox, dan 1 ListBox. ' 2. Tambahkan beberapa item ke dalam List1. ' 3. Copy-kan coding berikut ke dalam editor Module/Form ybt. '------------------------------------------------------------------------------------ '--- Coding ini di Module... Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As _ Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long Public Const LB_FINDSTRING = &H18F '--- Batas coding di Module... '--- Coding ini di Form... Private Sub Form_Load() 'Tambahkan beberapa item ke dalam List1 List1.AddItem "Adi" List1.AddItem "Aman" List1.AddItem "Akhmad" List1.AddItem "Armanto" List1.AddItem "Badu" List1.AddItem "Bobo" List1.AddItem "Joko" List1.AddItem "Jaka" List1.AddItem "Parto" List1.AddItem "Paino" End Sub Private Sub Text1_Change() List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text)) End Sub '--- Batas coding di Form...
*******************************************************************************
*******************************************************************************
Mengetahui Daftar Field di Tabel Database (ADO) |
'Deskripsi: Mengetahui daftar nama field beserta tipe dan ukuran field
' di suatu tabel database dengan menggunakan reference ADO.
' Ketika Anda mengklik nama tabel di daftar List1, maka
' seluruh field yang terdapat di tabel tersebut akan
' ditampilkan di List2. Jika nama field di List2 diklik,
' maka akan ditampilkan tipe dan ukuran field tersebut.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Minggu, 15 September 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form.
' 2. Tambahkan 2 ListBox, 1 Commandbutton, dan 2 Label.
' 3. Tambahkan reference Microsoft ActiveX Data Objects 2.0
' Library dari menu Project->References...
' 4. Copy-kan coding berikut ke editor form yang bertalian.
---------------------------------------------------------------------
'Variabel Connection dan Recordset ADO
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
'Buat tipe data untuk menampung data tipe dan ukuran
Private Type arrTipe
Tipe As String
Ukuran As Integer
End Type
'Buat array dinamis bertipe arrTipe di atas
Dim tabTipe() As arrTipe
Private Sub DaftarTabel(Daftar As ListBox)
On Error GoTo Pesan
'Inisialisasi variabel Connection
Set cnn = New ADODB.Connection
cnn.CursorLocation = adUseClient
'Sesuaikan lokasi database di PC Anda
cnn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:rinksterfilesADOKontrolmahasiswa.mdb;" & _
"Jet OLEDB:Database Password=;"
cnn.Open
'Buka skema tabel dengan OpenSchema
Set rs = cnn.OpenSchema(adSchemaTables)
'Bersihkan daftar tempat menampungnya dulu
Daftar.Clear
While rs.EOF <> True
'MSys untuk tabel sistem di MS Access
'sys biasanya tabel sistem di MS SQL Server
'Jadi, tabel sistem tidak perlu ditampilkan...
If Left(rs.Fields("Table_Name").Value, 4) <> "MSys" And _
Left(rs.Fields("Table_Name").Value, 3) <> "sys" Then
'Tambahkan ke daftar...
Daftar.AddItem rs.Fields("Table_Name")
End If
rs.MoveNext
Wend
'Jika sudah selesai, sorot item paling atas
Daftar.Text = Daftar.List(0)
Exit Sub
Pesan: 'Jika ada error, tampilkan nomor dan deskripsinya
MsgBox Err.Number & " - " & _
Err.Description, vbCritical, "Error"
End Sub
Private Sub Command1_Click()
'Tampilkan daftar tabel ke List1
Call DaftarTabel(List1)
End Sub
Private Sub DaftarField(NamaTabel As String, Daftar As ListBox)
Dim Adofl As ADODB.Field, i As Integer
'Gunakan kembali variabel rs, tapi bersihkan dulu...
Set rs = New ADODB.Recordset
'Buka tabel dari parameter
rs.Open NamaTabel, cnn, adOpenKeyset, adLockOptimistic, adCmdTable
'Alokasi ulang array dinamis untuk menampung jumlah field
ReDim tabTipe(rs.Fields.Count)
'Bersihkan daftar tempat menampungnya dulu
Daftar.Clear
'Untuk setiap Field di Recordset rs
For Each Adofl In rs.Fields
'Tambahkan satu per satu ke daftar
Daftar.AddItem Adofl.Name
'Tampung ke array tipe dan ukurannya
tabTipe(i).Tipe = TipeField(Adofl.Type)
tabTipe(i).Ukuran = Adofl.DefinedSize
i = i + 1 'Counter untuk maju ke berikutnya
Next
'Setelah selesai, sorot item yang teratas
Daftar.Text = Daftar.List(0)
End Sub
Private Sub Form_Load()
'Kosongkan label mula-mula
Label1.Caption = ""
Label2.Caption = ""
End Sub
Private Sub List1_Click()
'Jika item (namatabel) di List1 diklik, maka tampilkan
'daftar field dari tabel ybt di List2
Call DaftarField(List1.Text, List2)
End Sub
Private Sub List2_Click()
'Jika item di List2 diklik, maka tampilkan tipe dan ukuran field-nya
If List2.ListIndex <> -1 And _
tabTipe(List2.ListIndex).Tipe <> "" Then
'Tampilkan tipe dan ukurannya masing-masing
'ke Label1 dan Label2
Label1.Visible = True
Label2.Visible = True
Label1.Caption = "Tipe Field: " & tabTipe(List2.ListIndex).Tipe
Label2.Caption = "Ukuran Field: " & tabTipe(List2.ListIndex).Ukuran
Else
'Jika record tidak ada...
Label1.Visible = False
Label2.Visible = False
End If
End Sub
Public Function TipeField(intType As Integer) As String
'Fungsi berikut untuk menentukan tipe suatu field
Select Case intType
Case adEmpty '0
TipeField = "adEmpty"
Case adTinyInt '16
TipeField = "adTinyInt"
Case adSmallInt '2
TipeField = "adSmallInt"
Case adInteger '3
TipeField = "adInteger"
Case adBigInt '20
TipeField = "adBigInt"
Case adUnsignedTinyInt '17
TipeField = "adUnsignedTinyInt"
Case adUnsignedSmallInt '18
TipeField = "adUnsignedSmallInt"
Case adUnsignedInt '19
TipeField = "adUnsignedInt"
Case adUnsignedBigInt '21
TipeField = "adUnsignedBigInt"
Case adSingle '4
TipeField = "adSingle"
Case adDouble '5
TipeField = "adDouble"
Case adCurrency '6
TipeField = "adCurrency"
Case adDecimal '14
TipeField = "adDecimal"
Case adNumeric '131
TipeField = "adNumeric"
Case adBoolean '11
TipeField = "adBoolean"
Case adError '10
TipeField = "adError"
Case adUserDefined '132
TipeField = "adUserDefined"
Case adVariant '12
TipeField = "adVariant"
Case adIDispatch '9
TipeField = "adIDispatch"
Case adIUnknown '13
TipeField = "adIUnknown"
Case adGUID '72
TipeField = "adGUID"
Case adDate '7
TipeField = "adDate"
Case adDBDate '133
TipeField = "adDBDate"
Case adDBTime '134
TipeField = "adDBTime"
Case adDBTimeStamp '135
TipeField = "adDBTimeStamp"
Case adBSTR '8
TipeField = "adBSTR"
Case adChar '129
TipeField = "adChar"
Case adVarChar '200
TipeField = "adVarChar"
Case adLongVarChar '201
TipeField = "adLongVarChar"
Case adWChar '130
TipeField = "adWChar"
Case adVarWChar '202
TipeField = "adVarWChar"
Case adLongVarWChar '203
TipeField = "adLongVarWChar"
Case adBinary '128
TipeField = "adBinary"
Case adVarBinary '204
TipeField = "adVarBinary"
Case adLongVarBinary '205
TipeField = "adLongVarBinary"
Case adChapter '136
TipeField = "adChapter"
Case dbBoolean
TipeField = "dbBoolean"
Case dbByte
TipeField = "dbByte"
Case dbInteger
TipeField = "dbInteger"
Case dbLong
TipeField = "dbLong"
Case dbCurrency
TipeField = "dbCurrency"
Case dbSingle
TipeField = "dbSingle"
Case dbDouble
TipeField = "dbDouble"
Case dbDate
TipeField = "dbDate"
Case dbText
TipeField = "dbText"
Case dbLongBinary
TipeField = "dbLongBinary"
Case dbMemo
TipeField = "dbMemo"
Case dbGUID
TipeField = "dbGUID"
End Select
End Function
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'Tutup semua variabel recordset dan connection
rs.Close
cnn.Close
'Bersihkan memory yang telah digunakan
Set rs = Nothing
Set cnn = Nothing
End Sub *******************************************************************************
*******************************************************************************
Menampilkan Tanggal dan Jam Sistem On-Line |
'Deskripsi: Pernahkah Anda ingin menampilkan tanggal dengan format tertentu
' beserta jam sistem yang keduanya dapat menyesuaikan dengan
' perubahan waktu di komputer Anda? Ada kalanya pada saat program
' Anda dijalankan, saat itu juga dilakukan perubahan tanggal dan
' jam sistem di komputer Anda, misalnya dari menu Date/Time di
' Control Panel atau perubahan terjadi karena pergantian hari dan
' tanggal (lewat tengah malam). Agar perubahan tersebut juga
' terjadi di program Anda, silahkan gunakan tips berikut ini.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Minggu, 12 Mei 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 2 Label, dan 1 Timer.
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
'----------------------------------------------------------------------------
Dim sHari As String 'Deklarasi variabel global, karena digunakan
Dim aHari 'oleh lebih dari satu prosedur
Private Sub Form_Load() 'Inisialisasi array untuk hari
aHari = Array("Minggu", "Senin", "Selasa", "Rabu", _
"Kamis", "Jumat", "Sabtu")
Timer1.Interval = 500 'Set property interval
Timer1.Enabled = True 'Aktifkan jika belum...
End Sub
'Prosedur ini meng-update tanggal & jam setiap ada perubahan, baik
'perubahan yang dilakukan melalui Date/Time di menu Control Panel
'maupun perubahan yang terjadi karena pergantian hari/tanggal.
Private Sub Timer1_Timer()
sHari = aHari(Abs(Weekday(Date) - 1)) 'Tampilkan hari
Label1.Caption = "" & sHari & ", " _
& Format(Date, "dd mmmm yyyy")
Label2.Caption = Format(Time, "hh:mm:ss")
End Sub ******************************************************************************
******************************************************************************
Mengencrypt/decrypt File Teks |
'Deskripsi: Mengencrypt/decrypt suatu file teks menjadi file teks yang
' lainnya dengan menggunakan password.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Rabu, 22 Mei 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 1 RichTextBox.
' 2. Beri nama RichTextBox dengan "rtfEncDec".
' 3. Copy-kan coding berikut ke dalam editor form ybt.
'---------------------------------------------------------------------
'Pada contoh ini, nama file default telah tersedia ketika
'kotak dialog InputBox ditampilkan. Klik saja OK tanpa
'mengganti nama file yang telah terisi di InputBox tersebut.
'Untuk mencoba ulang, hapus file Masino.txt, Masino1.txt,
'dan file Sinaga.txt yang terbentuk di direktori program ini...
Sub FileEncodeAndDecode(InputFile As String, _
OutputFile As String, _
PasswordKey As String)
Dim temp As Single
Dim Char As String * 1
Dim XORMask As Single
Dim temp1 As Integer
Open InputFile For Binary As #1
Open OutputFile For Binary As #2
For x = 1 To Len(PasswordKey)
temp = Asc(Mid$(PasswordKey, x, 1))
For y = 1 To temp
temp1 = Rnd
Next y
Randomize temp1
Next x
Counter = 0
For z = 1 To FileLen(InputFile)
XORMask = Int(Rnd * 256)
Get 1, , Char
Char = Chr$((Asc(Char) Xor XORMask))
Put 2, , Char
Counter = Counter + 1
If Counter > Len(PasswordKey) Then Counter = 1
For x = 1 To (Asc(Mid$(PasswordKey, Counter, 1)) * 2)
temp = Rnd
Next x
Next z
Close #1
Close #2
'Tampilkan hasilnya ke rtfEncDec...
Open OutputFile For Binary As #3
rtfEncDec.Text = Input(LOF(3), 3)
Close #3
End Sub
Private Sub Command1_Click()
Dim InputFile As String
Dim OutputFile As String
Dim PasswordKey As String
On Error GoTo Pesan
'Jika file Masino.txt sudah ada dan file Sinaga.txt belum
If Dir(App.Path & "Masino.txt") <> "" And _
Dir(App.Path & "Sinaga.txt") = "" Then
InputFile = InputBox("Masukkan nama file yang akan " & _
"di-encrypt/decrypt:", _
"File Sumber", "Masino.txt")
If StrPtr(InputFile) = 0 Or InputFile = "" Then Exit Sub
'Jika file Masino.txt dan Sinaga.txt sudah ada
ElseIf Dir(App.Path & "Masino.txt") <> "" And _
Dir(App.Path & "Sinaga.txt") <> "" Then
InputFile = InputBox("Masukkan nama file yang akan " & _
"di-encrypt/decrypt:", _
"File Sumber", "Sinaga.txt")
If StrPtr(InputFile) = 0 Or InputFile = "" Then Exit Sub
End If
Open App.Path & "" & InputFile For Binary As #1
rtfEncDec.Text = Input(LOF(1), 1)
Close #1
'Jika file Masino.txt sudah ada dan file Sinaga.txt belum
If Dir(App.Path & "Masino.txt") <> "" And _
Dir(App.Path & "Sinaga.txt") = "" Then
OutputFile = InputBox("Masukkan nama file hasil " & _
"encrypt/decrypt: ", _
"File Tujuan", "Sinaga.txt")
If StrPtr(OutputFile) = 0 Or OutputFile = "" Then Exit Sub
'Jika file Masino.txt dan Sinaga.txt sudah ada
ElseIf Dir(App.Path & "Masino.txt") <> "" And _
Dir(App.Path & "Sinaga.txt") <> "" Then
OutputFile = InputBox("Masukkan nama file hasil " & _
"encrypt/decrypt: ", _
"File Tujuan", "Masino1.txt")
If StrPtr(OutputFile) = 0 Or OutputFile = "" Then Exit Sub
End If
PasswordKey = InputBox("Masukkan password:", _
"Password", "masinosinaga")
Call FileEncodeAndDecode(App.Path & "" & InputFile, _
App.Path & "" & OutputFile, _
PasswordKey)
MsgBox "Berhasil di-encrypt/decrypt ke " & OutputFile, _
vbInformation, "Encrypt/Decrypt OK"
End
Exit Sub
Pesan:
MsgBox Err.Number & " - " & Err.Description
End Sub
Private Sub Form_Load()
BuatFileTeks 'Buat file teks pada permulaan aplikasi ini
rtfEncDec.RightMargin = rtfEncDec.Width + 500
End Sub
Sub BuatFileTeks()
Open App.Path & "Masino.txt" For Output As #1
Print #1, "Testing membuat file teks..."
Print #1, "Isinya akan digunakan untuk encode/decode"
Print #1, "-----------------------------------------"
Print #1, "Masino Sinaga"
Print #1, "Asrama Melati 219 Puslatpos"
Print #1, "Jalan Terusan Sari Asih 54 Bandung 40151"
Close #1
End Sub ******************************************************************************
******************************************************************************
Menampilkan Tulisan Berjalan di StatusBar |
'Deskripsi: Menampilkan tulisan berjalan di StatusBar (bagian bawah form)
' dengan bantuan control Timer.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Senin, 22 Juli 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 1 StatusBar. StatusBar
' dapat Anda peroleh dari component yang bernama:
' ""Microsoft Windows Common Controls 5.0 (SP2)"
' dari Add->Components...
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
Dim Counter As Integer
Private Sub Form_Load()
Counter = 0
Timer1.Interval = 50 '<-- Atur kecepatannya di sini
With StatusBar1
.Panels(1).Width = 4000
.Panels(1).Alignment = sbrRight
End With
End Sub
Private Sub Timer1_Timer()
Dim Kalimat As String
Dim pnlX1 As Panel
Set pnlX1 = StatusBar1.Panels(1)
Kalimat = "Testing tulisan berjalan"
Counter = Counter + 1
DoEvents
pnlX1.Text = TulisJalan(Counter, Kalimat, 150)
End Sub
Public Function TulisJalan(Hitung As Integer, _
strKalimat As String, _
Panjang As Integer)
If Hitung = Len(strKalimat) + Panjang Then
Hitung = 0
ElseIf Hitung > Len(strKalimat) Then
TulisJalan = strKalimat & Space(Hitung - Len(strKalimat))
Else
TulisJalan = Mid(strKalimat, 1, Hitung)
End If
End Function ******************************************************************************
******************************************************************************
Terbilang Desimal Indonesia |
'Deskripsi: Menampilkan tulisan terbilang dengan bahasa Indonesia dari
' besar uang yang dimasukkan ke dalam textbox. Besar uang
' yang dimasukkan dapat dipisahkan dengan separator koma.
'Pembuat : (Dari berbagai sumber); disarikan oleh Masino Sinaga
' (masino_sinaga@posindonesia.co.id)
'Modifik. : Bandung, 2 Mei 2003.
' - Membetulkan ejaan untuk bilangan setelah tanda koma,
' sebelumnya menggunakan KonversiBilangan, kini memakai
' KonversiPecahan (setiap 1 angka dibaca satu per satu)
' - Membuat parameter "MataUang" yg bersifat opsional,
' di mana default-nya = "rupiah" untuk fungsi
' TerbilangBulat dan TerbilangDesimal.
' Jika parameter ini dikosongkan dengan "" maka
' kata "rupiah" tidak muncul.
' Jika parameter ini tidak ada (hanya memiliki 1 parameter),
' kata "rupiah" ditampilkan.
'Modifik. : Bandung, 6 Mei 2003.
' - Membuat parameter "MataUang" yg bersifat opsional,
' untuk fungsi TerbilangInggris, di mana
' default-nya = "dollars". Jika parameter ini
' dikosongkan dengan "" maka kata "dollars" tidak muncul.
' Jika parameter ini tidak ada (hanya memiliki 1 parameter),
' kata "dollars" ditampilkan. Anda bisa mengganti
' dengan nama mata uang negara lain pada parameter
' kedua ini.
'Modifik. : Bandung, 14 Mei 2003
' - Mengatasi kemungkinan adanya nilai sen yang > 99
' atau memiliki digit pecahan lebih dari 2 digit,
' maka pecahan tersebut dibulatkan ke kelipatan
' terdekat sebanyak 2 digit.
' Contoh: TerbilangDesimal("20,599") ->
' menampilkan MataUang
' dibulatkan menjadi: 20,60 -> dibaca:
' "Dua Puluh Rupiah Enam Puluh Sen", BUKAN:
' "Dua Puluh Rupiah Enam Sen"
' Hal ini berlaku utk yg menampilkan MataUang.
' - Mengatasi kemungkinan jlh digit sen yang hanya 1 angka.
' maka pecahan tersebut harus ditambahkan dgn nol virtual.
' Contoh: TerbilangDesimal("20,5") -> menampilkan MataUang
' dibulatkan menjadi: 20,5 -> dibaca menjadi:
' "Dua Puluh Rupiah Lima Puluh Sen" dan BUKAN:
' "Dua Puluh Rupiah Lima Sen".
' Hal ini berlaku hanya yg menampilkan MataUang.
' - Menangani kemungkinan ejaan sen jika menggunakan
' mata uang rupiah, di mana nilai sen harus berada
' di antara mulai 1 dan 99. (Kemungkinan I)
' Contoh: TerbilangDesimal("20,99") dibaca:
' "Dua Puluh Rupiah Sembilan Puluh Sembilan Sen".
' - Menangani kemungkinan ejaan desimal tanpa menggunakan
' MataUang rupiah, di mana nilai desimal dieja per satu
' karakter. (Kemungkinan II)
' Contoh: TerbilangDesimal("20,99", "") dibaca;
' "Dua Puluh Koma Sembilan Sembilan")
' - Memeriksa kemungkinan adanya angka: 20,00
' seharusnya dibaca sebagai: "Dua Puluh Rupiah"
' dan BUKAN "Dua Puluh Rupiah Sen"
' Jika pemeriksaan berikut ini tidak ada, maka 20,00
' akan dibaca dengan: "Dua Puluh Rupiah Sen"
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 2 TextBox
' 2. Text1 untuk input dengan angka, Text2 menampilkan terbilang.
' 3. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
Public Function TerbilangDesimal(InputCurrency As String, _
Optional MataUang As String = "rupiah") As String
Dim strInput As String
Dim strBilangan As String
Dim strPecahan As String
On Error GoTo Pesan
Dim strValid As String, huruf As String * 1
Dim i As Integer
'Periksa setiap karakter yg diketikkan ke kotak UserID
strValid = "1234567890,"
For i% = 1 To Len(InputCurrency)
huruf = Chr(Asc(Mid(InputCurrency, i%, 1)))
If InStr(strValid, huruf) = 0 Then
Set AngkaTerbilang = Nothing
MsgBox "Harus karakter angka!", _
vbCritical, "Karakter Tidak Valid"
Exit Function
End If
Next i%
If InputCurrency = "" Then Exit Function
If Len(Trim(InputCurrency)) > 15 Then GoTo Pesan
strInput = CStr(InputCurrency) 'Konversi ke string
'Periksa apakah ada tanda "," jika ya berarti pecahan
If InStr(1, strInput, ",", vbBinaryCompare) Then
strBilangan = Left(strInput, InStr(1, strInput, ",", vbBinaryCompare) - 1)
'strBilangan = Right(strInput, InStr(1, strInput, ".", vbBinaryCompare) - 2)
strPecahan = Trim(Right(strInput, Len(strInput) - Len(strBilangan) - 1))
If MataUang <> "" Then
'Updated by Masino Sinaga, 14 Mei 2003, Bandung.....
'- Mengatasi kemungkinan adanya nilai sen yang > 99 atau
' memiliki digit pecahan lebih dari 2 digit, maka pecahan
' tersebut dibulatkan ke kelipatan terdekat sebanyak 2 digit.
' Contoh: TerbilangDesimal("20,599") -> menampilkan MataUang
' dibulatkan menjadi: 20,60 -> dibaca menjadi:
' "Dua Puluh Rupiah Enam Puluh Sen" dan BUKAN:
' "Dua Puluh Rupiah Enam Sen".
' Hal ini berlaku hanya yg menampilkan MataUang.
If CLng(Trim(strPecahan)) > 99 Then
strInput = Format(Round(CDbl(strInput), 2), "#0.00")
strPecahan = Format((Right(strInput, Len(strInput) - Len(strBilangan) - 1)), "00")
End If
'Update by Masino Sinaga, 14 Mei 2003, Bandung......
'- Mengatasi kemungkinan jumlah digit sen yang hanya 1 angka.
' maka pecahan tersebut harus ditambahkan dengan nol virtual.
' Contoh: TerbilangDesimal("20,5") -> menampilkan MataUang
' dibulatkan menjadi: 20,5 -> dibaca menjadi:
' "Dua Puluh Rupiah Lima Puluh Sen" dan BUKAN:
' "Dua Puluh Rupiah Lima Sen".
' Hal ini berlaku hanya yg menampilkan MataUang.
If Len(Trim(strPecahan)) = 1 Then
strInput = Format(Round(CDbl(strInput), 2), "#0.00")
strPecahan = Format((Right(strInput, Len(strInput) - Len(strBilangan) - 1)), "00")
End If
'Yang ini ditutup, untuk memperbaiki ejaan sesudah tanda
'koma (pecahan)...
'TerbilangDesimal = (KonversiBilangan(strBilangan) & "koma " & KonversiBilangan(strPecahan) & "rupiah")
'Updated by Masino Sinaga, 2 Mei 2003, Bandung.....
'-------------------------------------------------------
'- Membetulkan ejaan untuk bilangan setelah tanda koma,
' sebelumnya menggunakan KonversiBilangan, kini memakai
' KonversiPecahan (setiap 1 angka dibaca satu per satu)
'- Membuat parameter "MataUang" yg bersifat opsional,
' di mana default-nya = "rupiah". Jika parameter ini
' dikosongkan dengan "" maka kata "rupiah" tidak muncul.
'Updated by Masino Sinaga, 14 Mei 2003, Bandung.....
'- Menangani kemungkinan ejaan sen jika menggunakan
' mata uang rupiah, di mana nilai sen harus di antara
' mulai 1 dan 99. (Kemungkinan I)
' Contoh: TerbilangDesimal("20,99")
' "Dua Puluh Rupiah Sembilan Puluh Sembilan Sen".
'- Menangani kemungkinan ejaan desimal tanpa menggunakan
' mata uang rupiah, di mana nilai desimal dieja per satu
' karakter. (Kemungkinan II)
' Contoh: TerbilangDesimal("20,99", "")
' "Dua Puluh Koma Sembilan Sembilan")
'BANDINGKAN Kemungkinan I dan Kemungkinan II...
'MULAI PERIKSA >>>>>>
'Jika tanpa parameter MataUang (default), berarti akan
'menampilkan kata "Rupiah" dan perhatikan pula penanganan
'ejaan untuk sen. Lihat contoh Kemungkinan I di atas...
'Periksa lagi kemungkinan adanya angka: 20,00
'seharusnya: "Dua Puluh Rupiah"
' dan BUKAN "Dua Puluh Rupiah Sen"
'Jika pemeriksaan berikut ini tidak ada, maka 20,00
'akan dibaca dengan: "Dua Puluh Rupiah Sen"
If CLng(Trim(strPecahan)) = 0 Then
TerbilangDesimal = (KonversiBilangan(strBilangan) & MataUang & " " & KonversiBilangan(strPecahan))
Else
TerbilangDesimal = (KonversiBilangan(strBilangan) & MataUang & " " & KonversiBilangan(strPecahan) & "sen")
End If
Else
TerbilangDesimal = (KonversiBilangan(strBilangan) & "koma " & KonversiPecahan(strPecahan))
End If
Else
TerbilangDesimal = (KonversiBilangan(strInput))
End If
Exit Function
Pesan:
TerbilangDesimal = "(maksimal 15 digit)"
End Function
'Fungsi ini untuk mengkonversi nilai pecahan (setelah angka 0)
Private Function KonversiPecahan(strAngka As String) As String
Dim i%, strJmlHuruf$, Urai$, Kar$
If strAngka = "" Then Exit Function
strJmlHuruf = Trim(strAngka)
Urai = ""
Kar = ""
For i = 1 To Len(strJmlHuruf)
'Tampung setiap satu karakter ke Kar
Kar = Mid(strAngka, i, 1)
Urai = Urai & Kata(CInt(Kar))
Next i
KonversiPecahan = Urai
End Function
'Fungsi ini untuk menterjemahkan setiap satu angka ke kata
Private Function Kata(angka As Byte) As String
Select Case angka
Case 1: Kata = "satu "
Case 2: Kata = "dua "
Case 3: Kata = "tiga "
Case 4: Kata = "empat "
Case 5: Kata = "lima "
Case 6: Kata = "enam "
Case 7: Kata = "tujuh "
Case 8: Kata = "delapan "
Case 9: Kata = "sembilan "
Case 0: Kata = "nol "
End Select
End Function
'Ini untuk mengkonversi nilai bilangan sebelum pecahan
Private Function KonversiBilangan(strAngka As String) As String
Dim strJmlHuruf$, intPecahan As Integer, strPecahan$, Urai$, Bil1$, strTot$, Bil2$
Dim X, Y, z As Integer
If strAngka = "" Then Exit Function
strJmlHuruf = Trim(strAngka)
X = 0
Y = 0
Urai = ""
While (X < Len(strJmlHuruf))
X = X + 1
strTot = Mid(strJmlHuruf, X, 1)
Y = Y + Val(strTot)
z = Len(strJmlHuruf) - X + 1
Select Case Val(strTot)
'Case 0
' Bil1 = "NOL "
Case 1
If (z = 1 Or z = 7 Or z = 10 Or z = 13) Then
Bil1 = "satu "
ElseIf (z = 4) Then
If (X = 1) Then
Bil1 = "se"
Else
Bil1 = "satu "
End If
ElseIf (z = 2 Or z = 5 Or z = 8 Or z = 11 Or z = 14) Then
X = X + 1
strTot = Mid(strJmlHuruf, X, 1)
z = Len(strJmlHuruf) - X + 1
Bil2 = ""
Select Case Val(strTot)
Case 0
Bil1 = "sepuluh "
Case 1
Bil1 = "sebelas "
Case 2
Bil1 = "dua belas "
Case 3
Bil1 = "tiga belas "
Case 4
Bil1 = "empat belas "
Case 5
Bil1 = "lima belas "
Case 6
Bil1 = "enam belas "
Case 7
Bil1 = "tujuh belas "
Case 8
Bil1 = "delapan belas "
Case 9
Bil1 = "sembilan belas "
End Select
Else
Bil1 = "se"
End If
Case 2
Bil1 = "dua "
Case 3
Bil1 = "tiga "
Case 4
Bil1 = "empat "
Case 5
Bil1 = "lima "
Case 6
Bil1 = "enam "
Case 7
Bil1 = "tujuh "
Case 8
Bil1 = "delapan "
Case 9
Bil1 = "sembilan "
Case Else
Bil1 = ""
End Select
If (Val(strTot) > 0) Then
If (z = 2 Or z = 5 Or z = 8 Or z = 11 Or z = 14) Then
Bil2 = "puluh "
ElseIf (z = 3 Or z = 6 Or z = 9 Or z = 12 Or z = 15) Then
Bil2 = "ratus "
Else
Bil2 = ""
End If
Else
Bil2 = ""
End If
If (Y > 0) Then
Select Case z
Case 4
Bil2 = Bil2 + "ribu "
Y = 0
Case 7
Bil2 = Bil2 + "juta "
Y = 0
Case 10
Bil2 = Bil2 + "milyar "
Y = 0
Case 13
Bil2 = Bil2 + "trilyun "
Y = 0
End Select
End If
Urai = Urai + Bil1 + Bil2
Wend
KonversiBilangan = Urai
End Function
Private Sub Text1_Change() 'Isi besar uang diulangi dengan terbilang huruf...
Text2.Text = TerbilangDesimal(Text1.Text)
End Sub ********************************************************************************
********************************************************************************
Terbilang Desimal Inggris |
'Deskripsi: Menampilkan tulisan terbilang dengan bahasa Inggeris dari
' besar uang yang dimasukkan ke dalam textbox. Besar uang
' yang dimasukkan dapat dipisahkan dengan separator koma
' (setting Indonesia) atau titik (setting Inggris) untuk
' menyatakan "sen" (cent).
'Pembuat : (Dari berbagai sumber); disarikan oleh Masino Sinaga
' (masino_sinaga@posindonesia.co.id).
'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 1 TextBox, dan 1 Label
' 2. Beri nama textbox dengan txtAngka, dan label lblTerbilang.
' 3. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
Private Function SpellDigit(strNumeric As Integer)
Dim cRet As String
On Error GoTo Pesan
cRet = ""
Select Case strNumeric
Case 0: cRet = " zero"
Case 1: cRet = " one"
Case 2: cRet = " two"
Case 3: cRet = " three"
Case 4: cRet = " four"
Case 5: cRet = " five"
Case 6: cRet = " six"
Case 7: cRet = " seven"
Case 8: cRet = " eight"
Case 9: cRet = " nine"
Case 10: cRet = " ten"
Case 11: cRet = " eleven"
Case 12: cRet = " twelve"
Case 13: cRet = " thirteen"
Case 14: cRet = " fourteen"
Case 15: cRet = " fifteen"
Case 16: cRet = " sixteen"
Case 17: cRet = " seventeen"
Case 18: cRet = " eighteen"
Case 19: cRet = " ninetieen"
Case 20: cRet = " twenty"
Case 30: cRet = " thirty"
Case 40: cRet = " fourthy"
Case 50: cRet = " fifty"
Case 60: cRet = " sixty"
Case 70: cRet = " seventy"
Case 80: cRet = " eighty"
Case 90: cRet = " ninety"
Case 100: cRet = " one hundred"
Case 200: cRet = " two hundred"
Case 300: cRet = " three hundred"
Case 400: cRet = " four hundred"
Case 500: cRet = " five hundred"
Case 600: cRet = " six hundred"
Case 700: cRet = " seven hundred"
Case 800: cRet = " eight hundred"
Case 900: cRet = " nine hundred"
End Select
SpellDigit = cRet
Exit Function
Pesan:
SpellDigit = "(maksimal 9 digit)"
End Function
Private Function SpellUnit(strNumeric As Integer)
Dim cRet As String
Dim n100 As Integer
Dim n10 As Integer
Dim n1 As Integer
On Error GoTo Pesan
cRet = ""
n100 = Int(strNumeric / 100) * 100
n10 = Int((strNumeric - n100) / 10) * 10
n1 = (strNumeric - n100 - n10)
If n100 > 0 Then
cRet = SpellDigit(n100)
End If
If n10 > 0 Then
If n10 = 10 Then
cRet = cRet & SpellDigit(n10 + n1)
Else
cRet = cRet & SpellDigit(n10)
End If
End If
If n1 > 0 And n10 <> 10 Then
cRet = cRet & SpellDigit(n1)
End If
SpellUnit = cRet
Exit Function
Pesan:
SpellUnit = "(maksimal 9 digit)"
End Function
Public Function TerbilangInggris(strNumeric As String) As String
Dim cRet As String
Dim n1000000 As Long
Dim n1000 As Long
Dim n1 As Integer
Dim n0 As Integer
On Error GoTo Pesan
Dim strValid As String, huruf As String * 1
Dim i As Integer
'Periksa setiap karakter masukan
strValid = "1234567890.,"
For i% = 1 To Len(strNumeric)
huruf = Chr(Asc(Mid(strNumeric, i%, 1)))
If InStr(strValid, huruf) = 0 Then
MsgBox "Harus karakter angka!", _
vbCritical, "Karakter Tidak Valid"
Exit Function
End If
Next i%
If strNumeric = "" Then Exit Function
If Len(Trim(strNumeric)) > 9 Then GoTo Pesan
cRet = ""
n1000000 = Int(strNumeric / 1000000) * 1000000
n1000 = Int((strNumeric - n1000000) / 1000) * 1000
n1 = Int(strNumeric - n1000000 - n1000)
n0 = (strNumeric - n1000000 - n1000 - n1) * 100
If n1000000 > 0 Then
cRet = SpellUnit(n1000000 / 1000000) & " million"
End If
If n1000 > 0 Then
cRet = cRet & SpellUnit(n1000 / 1000) & " thousand"
End If
If n1 > 0 Then
cRet = cRet & SpellUnit(n1)
End If
If n0 > 0 Then
cRet = cRet & " and cents" & SpellUnit(n0)
End If
TerbilangInggris = cRet & " only"
Exit Function
Pesan:
TerbilangInggris = "(maximum 9 digit)"
End Function
Private Sub txtAngka_Change()
lblTerbilang.Caption = TerbilangInggris(txtAngka.Text)
End Sub
********************************************************************************
********************************************************************************
Mengubah Warna Latar Teks di ListView |
'Deskripsi: Mengubah warna latar teks di ListView
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Rabu, 22 Mei 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 1 Module, dan
' 1 ListView.
' 2. ListView dapat Anda ambil dari component bernama
' "Microsoft Windows Common Controls 5.0 (SP2)" dengan
' cara klik kanan di Toolbox lalu pilih component tsb.
' 3. Copy-kan coding berikut ke dalam editor form & module ybt.
'-------------------------------------------------------------------------
'--- Coding ini di Module...
Public Const LVM_FIRST As Long = &H1000
Public Const LVM_SETTEXTBKCOLOR As Long = (LVM_FIRST + 38)
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
'--- Akhir coding di Module...
'--- Coding ini di Form...
Private Sub Form_Load()
ListView1.ListItems.Add , , "Hello, Masino Sinaga....."
Call SendMessage(ListView1.hwnd, LVM_SETTEXTBKCOLOR, 0&, vbGreen)
End Sub
'--- Akhir coding di Form... *****************************************************************************
*****************************************************************************
Multiline Tooltip Gaya Balon |
'Deskripsi: Menampilkan "multiline-tooltip" dengan gaya balon.
' Selama ini, Visual Basic hanya dapat menampilkan
' tooltip pada suatu control sebanyak 1 baris saja.
' Walaupun Anda menambahkan karakter VbCrLf pada
' string di tooltip tersebut, hal ini tidak akan
' menampilkan tooltip dengan multiline di VB standar.
' Untuk melihat tooltip yang multiline, tempatkan
' pointer mouse Anda di atas tombol Command1.
' Bandingkan tooltip standar VB pada tombol Command2.
'Pembuat : Sheppe Pharis (sheppe@home.com);
' Diterjemahkan dan dimodifikasi oleh:
' Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Rabu, 14 Mei 2003
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 2 Commanbutton.
' 2. Copy-kan coding berikut ke dalam editor form ybt.
'-------------------------------------------------------------------
Option Explicit
'Pemanggilan fungsi API diperlukan untuk membuat dan menghancurkan
'tooltip di Sistem Operasi Windows.
Private Declare Function CreateWindowEx Lib "user32" _
Alias "CreateWindowExA" (ByVal dwExStyle As Long, _
ByVal lpClassName As String, ByVal lpWindowName As String, _
ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hWndParent As Long, ByVal hMenu As Long, _
ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _
As Long
Private Declare Function GetClientRect Lib "user32" _
(ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function DestroyWindow Lib "user32" _
(ByVal hwnd As Long) As Long
'UDT (User Defined Type) RECT.
'Digunakan untuk pengaturan batas dari jendela tooltip.
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
'UDT TOOLINFO.
'Digunakan untuk menentukan semua tanda yang diperlukan
'untuk membuat jendela tooltip.
Private Type TOOLINFO
cbSize As Long
uFlags As Long
hwnd As Long
uid As Long
RECT As RECT
hinst As Long
lpszText As String
lParam As Long
End Type
'Sebuah konstanta yang digunakan untuk menghubungkan
'ke fungsi API yang bernama: CreateWindowEx.
'Hal ini untuk menandakan nilai default yang digunakan.
Private Const CW_USEDEFAULT = &H80000000
'Konstanta untuk fungsi API bernama: SetWindowPosition.
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_NOSIZE = &H1
Private Const HWND_NOTOPMOST = -2
Private Const HWND_TOP = 0
Private Const HWND_TOPMOST = -1
Private Const HWND_BOTTOM = 1
'Konstanta untuk menentukan gaya dari jendela tooltip.
Private Const WS_POPUP = &H80000000
Private Const WS_EX_TOPMOST = &H8&
'Konstanta yang digunakan dengan fungsi API SendMessage
'untuk mendefinisikan pesan private.
Private Const WM_USER = &H400
'Messages yang digunakan untuk menentukan durasi waktu dari tooltips.
'Tidak digunakan di sini.
Private Const TTDT_AUTOMATIC = 0
Private Const TTDT_AUTOPOP = 2
Private Const TTDT_INITIAL = 3
Private Const TTDT_RESHOW = 1
'Semua "penanda" untuk jendela tooltip.
Private Const TTF_ABSOLUTE = &H80
Private Const TTF_CENTERTIP = &H2
Private Const TTF_DI_SETITEM = &H8000
Private Const TTF_IDISHWND = &H1
Private Const TTF_RTLREADING = &H4
Private Const TTF_SUBCLASS = &H10
Private Const TTF_TRACK = &H20
Private Const TTF_TRANSPARENT = &H100
'Semua pesan yang tersedia untuk tooltip Windows.
Private Const TTM_ACTIVATE = (WM_USER + 1)
Private Const TTM_ADDTOOLA = (WM_USER + 4)
Private Const TTM_ADDTOOLW = (WM_USER + 50)
Private Const TTM_ADJUSTRECT = (WM_USER + 31)
Private Const TTM_DELTOOLA = (WM_USER + 5)
Private Const TTM_DELTOOLW = (WM_USER + 51)
Private Const TTM_ENUMTOOLSA = (WM_USER + 14)
Private Const TTM_ENUMTOOLSW = (WM_USER + 58)
Private Const TTM_GETBUBBLESIZE = (WM_USER + 30)
Private Const TTM_GETCURRENTTOOLA = (WM_USER + 15)
Private Const TTM_GETCURRENTTOOLW = (WM_USER + 59)
Private Const TTM_GETDELAYTIME = (WM_USER + 21)
Private Const TTM_GETMARGIN = (WM_USER + 27)
Private Const TTM_GETMAXTIPWIDTH = (WM_USER + 25)
Private Const TTM_GETTEXTA = (WM_USER + 11)
Private Const TTM_GETTEXTW = (WM_USER + 56)
Private Const TTM_GETTIPBKCOLOR = (WM_USER + 22)
Private Const TTM_GETTIPTEXTCOLOR = (WM_USER + 23)
Private Const TTM_GETTOOLCOUNT = (WM_USER + 13)
Private Const TTM_GETTOOLINFOA = (WM_USER + 8)
Private Const TTM_GETTOOLINFOW = (WM_USER + 53)
Private Const TTM_HITTESTA = (WM_USER + 10)
Private Const TTM_HITTESTW = (WM_USER + 55)
Private Const TTM_NEWTOOLRECTA = (WM_USER + 6)
Private Const TTM_NEWTOOLRECTW = (WM_USER + 52)
Private Const TTM_POP = (WM_USER + 28)
Private Const TTM_RELAYEVENT = (WM_USER + 7)
Private Const TTM_SETDELAYTIME = (WM_USER + 3)
Private Const TTM_SETMARGIN = (WM_USER + 26)
Private Const TTM_SETMAXTIPWIDTH = (WM_USER + 24)
Private Const TTM_SETTIPBKCOLOR = (WM_USER + 19)
Private Const TTM_SETTIPTEXTCOLOR = (WM_USER + 20)
Private Const TTM_SETTITLEA = (WM_USER + 32)
Private Const TTM_SETTITLEW = (WM_USER + 33)
Private Const TTM_SETTOOLINFOA = (WM_USER + 9)
Private Const TTM_SETTOOLINFOW = (WM_USER + 54)
Private Const TTM_TRACKACTIVATE = (WM_USER + 17)
Private Const TTM_TRACKPOSITION = (WM_USER + 18)
Private Const TTM_UPDATE = (WM_USER + 29)
Private Const TTM_UPDATETIPTEXTA = (WM_USER + 12)
Private Const TTM_UPDATETIPTEXTW = (WM_USER + 57)
Private Const TTM_WINDOWFROMPOINT = (WM_USER + 16)
'Konstanta untuk menentukan gaya dari jendela tooltip.
'
'Selalu tip, walalupun jika jendela utama tidak aktif.
Private Const TTS_ALWAYSTIP = &H1
'
'Menggunakan gaya balon tooltip.
Private Const TTS_BALLOON = &H40
'
'Win98 and up - jangan gunakan sliding tooltips.
Private Const TTS_NOANIMATE = &H10
'
'Win2K and up - jangan hilangkan tooltips.
Private Const TTS_NOFADE = &H20
'
'Mencegah Windows dari penghapusan karakter ampersand apapun di dalam
'string tooltip. Tanpa penanda ini, Windows otomatis akan menghapus
'karakter ampersand dari string tersebut.
'Hal ini dilakukan untuk mengizinkan string yang sama dapat digunakan
'sebagai teks dari tooltip, dan sebagai tulisan dari sebuah control.
Private Const TTS_NOPREFIX = &H2
'Class untuk dua tooltip yang berbeda.
Private Const TOOLTIPS_CLASS = "tooltips_class"
Private Const TOOLTIPS_CLASSA = "tooltips_class32"
'Sebuah variabel bertipe Long untuk menyimpan hwnd (window handle)
'dari jendela tooltip yang dibuat di contoh ini.
'Hal ini akan menjadi sebuah array bertipe Long jika kita membuat
'tooltip Windows untuk banyak control atau banyak jendela.
Dim hwndTT As Long
'Event Code. Untuk mencoba coding ini, yakinkan sekali lagi bahwa
'di form Anda sudah ada 2 tombol bernama "Command1" dan
'"Command2"
Private Sub Form_Load()
'Deklarasikan sebuah variabel bertipe UDT TOOLINFO.
Dim ti As TOOLINFO
'Variabel ini digunakan untuk menandakan batas dari jendela tooltip
Dim RECT As RECT
'Untuk melewatkan toolinfo UDT sebagai sebuah ID untuk jendela tooltip.
'Tidak melakukan apapun di contoh ini, untuk menjelaskan saja.
Dim uid As Long
uid = 0
'Sebuah string yang akan ditampilkan di dalam tooltip.
Dim strPntr As String
strPntr = "Inilah tooltip yang dibuat dengan menggunakan fungsi API. " & vbCrLf & _
"Seperti yang dapat Anda lihat, dia kini mendukung banyak baris, " & vbCrLf & _
"pindah baris, menampilkan batas atau jendela tooltip bergaya balon, " & vbCrLf & _
"serta dapat menampilkan warna latar dan huruf sesuai keinginan."
'Nilai yang dikembalikan saat pemanggilan fungsi API.
Dim RetVal As Long
'Buat sebuah jendela tooltip, dan tangani hwnd-nya di dalam
'lebar form hwndTT yang bertipe Long.
hwndTT = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASSA, _
vbNullString, _
WS_POPUP Or TTS_NOPREFIX Or TTS_BALLOON, _
CW_USEDEFAULT, CW_USEDEFAULT, _
CW_USEDEFAULT, CW_USEDEFAULT, _
Me.hwnd, 0, App.hInstance, 0)
'Gunakan fungsi API setwindowpos untuk menentukan posisi jendela
'dari tooltip.
SetWindowPos hwndTT, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE
'Mendeteksi batas control yang tooltipnya sedang ditambahkan.
'Ini akan menjadi batas untuk mengaktifkan jendela tooltip.
GetClientRect Command1.hwnd, RECT
'Tentukan semua informasi yang diperlukan untuk toolinfo UDT.
'
'Ukuran UDT toolinfo dalam bytes. Harus di-set!
ti.cbSize = Len(ti)
'
'Penanda yang akan kita lewatkan untuk tooltip.
'TTF_CENTERTIP tidak perlu, tapi tengahkan tooltip ke jendela
'di mana tooltip sedang diaplikasikan (jika memungkinkan).
'TTF_SUBCLASS memberitahukan ke jendela tooltip window untuk meng-
'sub-class jendela yang sedang diaplikasikan. Ini cara terbaik di
'VB, jadi subclassing oleh pengembang tidak diperlukan.
ti.uFlags = TTF_CENTERTIP Or TTF_SUBCLASS
'
'hwnd dari control yang tooltipnya sedang diaplikasikan.
ti.hwnd = Command1.hwnd
'
'Instansiasi dari aplikasi yang tooltip-nya sedang diaplikasikan.
ti.hinst = App.hInstance
'
'ID (hwnd) dari jendela tooltip. Tidak diperlukan kecuali
'jendela dibuat dengan menggunakan penanda TTF_IDISHWND.
ti.uid = uid
'
'Sebuah pointer ke tooltip.
ti.lpszText = strPntr
'
'Koordinat yang menentukan batas jendela tooltip ketika aktif.
ti.RECT.Left = RECT.Left
ti.RECT.Top = RECT.Top
ti.RECT.Right = RECT.Right
ti.RECT.Bottom = RECT.Bottom
'Kirim sebuah pesan ke jendela tooltip untuk menampilkan tooltip
'pada control yang sedang diaplikasikan.
RetVal = SendMessage(hwndTT, TTM_ADDTOOLA, 0, ti)
'Kirim sebuah pesan ke jendela tooltip untuk menentukan lebar maksimum
'agar dapat mendukung pindah baris (line-breaking).
RetVal = SendMessage(hwndTT, TTM_SETMAXTIPWIDTH, 0, 80)
'Kirim pesan ke jendela tooltip untuk menentukan warna latar balon
'dan warna huruf. Dalam hal ini, kita menggunakan fungsi warna RGB
'RetVal = SendMessage(hwndTT, TTM_SETTIPBKCOLOR, RGB(255, 255, 255), 0)
'Coba ganti warna latar dengan hijau muda...
RetVal = SendMessage(hwndTT, TTM_SETTIPBKCOLOR, &HC0FFC0, 0)
'RetVal = SendMessage(hwndTT, TTM_SETTIPTEXTCOLOR, RGB(0, 0, 150), 0)
'Coba ganti warna huruf tooltip dengan warna biru
RetVal = SendMessage(hwndTT, TTM_SETTIPTEXTCOLOR, vbBlue, 0)
'Kirim sebuah pesan ke jendela tooltip untuk mengupdate dirinya.
'(Jika ada warna latar dan huruf yang baru).
RetVal = SendMessage(hwndTT, TTM_UPDATETIPTEXTA, 0, ti)
'Tentukan teks dari tombol kedua untuk menampilkan tooltip standar
'milik Visual Basic (tidak mendukung multi-line).
Command2.ToolTipText = "Inilah tooltip standar VB. " _
& vbCrLf & "Seperti yang Anda lihat, karakter CrLf di sebelah kiri " _
& "baris ini tidak berfungsi di sini. " & vbCrLf & _
"Karakter VbCrLf ditandai dengan garis dua tebal vertikal"
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Ketika form unload, yakinkan bahwa tooltip yang dibuat
'dihancurkan (dibebaskan dari memory)
DestroyWindow hwndTT
End Sub *******************************************************************************
*******************************************************************************
Keluar Otomatis Bila Program Tidak Aktif |
'Deskripsi: Memeriksa apakah aplikasi sedang digunakan atau
' tidak. Jika tidak sedang digunakan selama sekian
' detik, maka aplikasi langsung keluar. Di contoh ini
' untuk mendeteksi apakah aplikasi mengalami suatu
' aktivitas atau tidak adalah melalui event procedure
' Form_MouseMove(...). Jika ada pergerakan mouse di
' atas form ybt, maka aplikasi dinyatakan aktif atau
' sedang digunakan (seperti ScreenSaver Windows).
' Anda bisa menambahkan bukan hanya pada MouseMove
' saja, tapi pada penekanan tombol lainnya...
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Hari/Tgl : Selasa, 27 Agustus 2002
'Persiapan: 1. Buat 1 project baru dengan 1 form.
' 2. Tambahkan 1 Timer dan 2 Textbox
' 3. Copy-kan source code ini ke dalam editor form ybt
'----------------------------------------------------------------
Dim awal As Date
Dim Gerak As Boolean
Dim Aksi As Boolean
Private Sub Form_Load()
'Inisialisasi semua variabel dan Timer
Gerak = False
Aksi = False
Timer1.Interval = 500
Timer1.Enabled = True
awal = Time
End Sub
Private Sub Form_MouseMove(Button As Integer, _
Shift As Integer, _
X As Single, Y As Single)
'Jika ada pergerakan mouse di form, set waktu mulai
'utk perhitungan durasi dengan waktu saat itu
awal = Time
'Update status...
Aksi = True
End Sub
Private Sub Timer1_Timer()
Dim durasi As Date
Aksi = False
'Periksa...
If Aksi = False Then
Gerak = False
Timer1.Enabled = True
Else 'Jika ada perubahan di Mouse_Move
Gerak = True
Timer1.Enabled = False
End If
Text1.Text = awal
Text2.Text = Time
'Jika tidak ada pergerakan, aktifkan perhitungan durasi
If Gerak = False Then
durasi = Time - awal
'Dalam contoh ini, jika 5 detik aplikasi tidak
'mengalami kegiatan, maka langsung keluar...
If Format(durasi, "hh:mm:ss") = "00:00:05" Then
'Sebelum keluar, bebaskan semua variabel di form ini
Set Form1 = Nothing
Unload Me
End If
End If
End Sub *******************************************************************************
*******************************************************************************
Menyembunyikan Program dari TaskList |
'Deskripsi: Menyembunyikan program Anda dari daftar TaskList
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 2 Commandbutton.
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
'Tekan tombol yang pertama untuk menyembunyikan program Anda
'dan tombol kedua untuk menampilkannya lagi di daftar TaskList
'Untuk memeriksa apakah program Anda ada atau tidak di daftar
'TaskList, coba tekan tombol Ctrl+Alt+Del di keyboard, lalu
'lihat pada daftar yang muncul...
'--- Coding ini di Module...
Public Const RSP_SIMPLE_SERVICE = 1
Public Const RSP_UNREGISTER_SERVICE = 0
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID _
As Long, ByVal dwType As Long) As Long
'--- Akhir coding di Module...
'-- Coding ini di Form...
Public Sub HideApp(Hide As Boolean)
Dim ProcessID As Long
ProcessID = GetCurrentProcessId()
If Hide Then
retval = RegisterServiceProcess(ProcessID, RSP_SIMPLE_SERVICE)
Else
retval = RegisterServiceProcess(ProcessID, RSP_UNREGISTER_SERVICE)
End If
End Sub
Private Sub Command1_Click()
HideApp (True)
End Sub
Private Sub Command2_Click()
HideApp (False)
End Sub
'--- Akhir coding di Form... ******************************************************************************
******************************************************************************
Menampilkan Windows Explorer dalam ListBox |
'Deskripsi: Menampilkan Windows Explorer dalam satu ListBox saja!
' Anda dapat berpindah antar drive, direktori, dan memilih
' file melalui ListBox ini saja.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Jumat, 10 Mei 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form, 1 ListBox, 1 DriveListBox,
' 1 DirListBox, 1 FileListBox, dan 1 Label.
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
------------------------------------------------------------------------------
Function StripPath(T$) As String
Dim x%, ct%
StripPath$ = T$
x% = InStr(T$, "")
Do While x%
ct% = x%
x% = InStr(ct% + 1, T$, "")
Loop
If ct% > 0 Then StripPath$ = Mid$(T$, ct% + 1)
End Function
Sub UpdatePath()
Dim I, D, J, K As Integer
For D = 0 To List1.ListCount - 1
List1.RemoveItem "0"
Next D
If Not Right(Dir1.List(-1), 1) = "" Then
List1.AddItem "[^] .."
End If
For I = 0 To Dir1.ListCount - 1
List1.AddItem "[] " & StripPath(Dir1.List(I))
Next I
For J = 0 To File1.ListCount - 1
List1.AddItem "[*] " & File1.List(J)
Next J
For K = 0 To Drive1.ListCount - 1
List1.AddItem "[o] " & Drive1.List(K)
Next K
Label1.Caption = Dir1.Path
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
UpdatePath
End Sub
Private Sub Form_Load()
Drive1.Visible = False
File1.Visible = False
Dir1.Visible = False
UpdatePath
Me.Move (Screen.Width - Me.Width) / 2, _
(Screen.Height - Me.Height) / 2
End Sub
Private Sub List1_DblClick()
On Error GoTo ErrHdlr
If Right(List1.Text, 2) = ".." Then
Dir1.Path = Dir1.Path & ".."
ElseIf Left(List1.Text, 3) = "[]" Then
If Right(Dir1.List(-1), 1) = "" Then
Dir1.Path = Dir1.Path & _
Right(List1.Text, Len(List1.Text) - 4)
Else
Dir1.Path = Dir1.Path & _
"" & Right(List1.Text, _
Len(List1.Text) - 4)
End If
ElseIf Left(List1.Text, 3) = "[o]" Then
Drive1.Drive = Right(Left(List1.Text, 6), 2)
Else
MsgBox "File " & Chr(34) & _
Right(List1.Text, Len(List1.Text) - 4) & _
Chr(34) & " dipilih.", _
vbInformation, "File Terpilih"
End If
Exit Sub
ErrHdlr:
MsgBox "Drive tidak siap!", vbCritical, "Tidak Siap"
Exit Sub
End Sub ******************************************************************************
******************************************************************************
Component TrueDBGrid7 |
| Nama File | Deskripsi/Petunjuk Download | Tanggal Upload |
| TrueDBGrid7B_Eval001.zip Ukuran: 398 KB | Component TrueDBGrid7 merupakan component yang dapat Anda gunakan di project VB Anda untuk menampilkan data ke grid (seperti DBGrid) dan memiliki banyak fitur-fitur menarik, seperti: dapat menampilkan combobox, checkbox, optionbutton, gambar/image, multi-row, dan masih banyak lagi ke dalam grid yang bertalian. Karena banyaknya permintaan rekan-rekan di mailing-list Indoprog-VB agar menaruh file ini di situs saya, maka saya memecah-mecah file ini (SPLIT) sebelum meng-upload-nya ke server brinkster.com mengingat peraturan yang ditetapkan di brinkster agar tidak mengupload file yang berukuran di atas 1 MB dan keterbatasan bandwith yang diberikan brinkster dalam satu hari (sekitar 16 MB), serta keterbatasan bandwith bagi Anda yang akan mendownload-nya. Jika saat Anda akan atau sedang mendownload file ini muncul pesan dari brinkster.com yang memberitahukan bahwa situs saya tidak dapat diakses sampai lewat tengah malam waktu mereka, itu berarti karena banyaknya pengunjung yang mengakses situs saya atau mendownload file-file yang terdapat di situs saya dan batas (limit) bandwith yang disediakan untuk situs saya sudah melampaui batas. Jangan kecewa. Anda bisa mencobanya lagi di lain kesempatan. Asli file ini hanya satu buah dan berukuran sekitar 7 MB yang saya download dari http://www.componentone.com. Jika Anda ingin langsung mendownload satu file tersebut, silahkan langsung ke web tersebut. Namun jika Anda ingin mendownload sebagian-sebagian, Anda tidak perlu ke web di atas, tapi cukup mendownload ke-14 file ini. Setelah semuanya Anda download, extract ke-14 file tersebut ke dalam satu folder. Untuk menggabungkan (JOIN) ke-14 file tersebut menjadi 1 file, Anda harus menggunakan software khusus bernama HJSplit Setelah Anda men-join ke-14 file tersebut, maka nanti akan terbentuk satu file yang bernama "TrueDBGrid7B_Eval.exe". Jalankan file ini untuk menginstall component ini ke PC Anda. Component ini masih "evaluation version" (30 hari). Agar Anda dapat bebas memakainya, Anda harus mengisi kode aktivasi. Klik di sini untuk mendownload file aktivasi tersebut. Setelah proses aktivasi selesai, Anda dapat menggunakan component ini secara "free-version". Anda dapat melihat contoh source code penggunaannya di dalam folder hasil penginstall-annya di PC Anda. | Sabtu, 17/08/2002 |
| TrueDBGrid7B_Eval002.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval003.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval004.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval005.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval006.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval007.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval008.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval009.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval010.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval011.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval012.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval013.zip Ukuran: 501 KB | Sabtu, 17/08/2002 | |
| TrueDBGrid7B_Eval014.zip Ukuran: 468 KB | Sabtu, 17/08/2002 |
******************************************************************************
******************************************************************************
Membuat Efek Ledakan pada Form |
'Deskripsi: Membuat suatu efek ledakan pada pemunculan awal suatu form.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 1 Module, dan 1 Commandbutton.
' 2. Copy-kan coding berikut ke dalam editor Module/Form ybt.
'----------------------------------------------------------------------------------
'--- Coding ini di Module...
#If Win16 Then
Type RECT
Left As Integer
Top As Integer
Right As Integer
Bottom As Integer
End Type
#Else
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
#End If
#If Win16 Then
Declare Sub GetWindowRect Lib "User" (ByVal hwnd As Integer, lpRect As RECT)
Declare Function GetDC Lib "User" (ByVal hwnd As Integer) As Integer
Declare Function ReleaseDC Lib "User" (ByVal hwnd As Integer, ByVal hdc As _
Integer) As Integer
Declare Sub SetBkColor Lib "GDI" (ByVal hdc As Integer, ByVal crColor As Long)
Declare Sub Rectangle Lib "GDI" (ByVal hdc As Integer, ByVal X1 As Integer, _
ByVal Y1 As Integer, ByVal X2 As Integer, ByVal Y2 As Integer)
Declare Function CreateSolidBrush Lib "GDI" (ByVal crColor As Long) As Integer
Declare Function SelectObject Lib "GDI" (ByVal hdc As Integer, ByVal hObject _
As Integer) As Integer
Declare Sub DeleteObject Lib "GDI" (ByVal hObject As Integer)
#Else
Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, _
lpRect As RECT) As Long
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal _
hdc As Long) As Long
Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal _
crColor As Long) As Long
Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, _
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Declare Function SelectObject Lib "user32" (ByVal hdc As Long, ByVal hObject _
As Long) As Long
Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
#End If
Sub ExplodeForm(f As Form, Movement As Integer)
Dim myRect As RECT
Dim formWidth%, formHeight%, i%, X%, Y%, Cx%, Cy%
Dim TheScreen As Long
Dim Brush As Long
GetWindowRect f.hwnd, myRect
formWidth = (myRect.Right - myRect.Left)
formHeight = myRect.Bottom - myRect.Top
TheScreen = GetDC(0)
Brush = CreateSolidBrush(f.BackColor)
For i = 1 To Movement
Cx = formWidth * (i / Movement)
Cy = formHeight * (i / Movement)
X = myRect.Left + (formWidth - Cx) / 2
Y = myRect.Top + (formHeight - Cy) / 2
Rectangle TheScreen, X, Y, X + Cx, Y + Cy
Next i
X = ReleaseDC(0, TheScreen)
DeleteObject (Brush)
End Sub
Public Sub ImplodeForm(f As Form, Movement As Integer)
Dim myRect As RECT
Dim formWidth%, formHeight%, i%, X%, Y%, Cx%, Cy%
Dim TheScreen As Long
Dim Brush As Long
GetWindowRect f.hwnd, myRect
formWidth = (myRect.Right - myRect.Left)
formHeight = myRect.Bottom - myRect.Top
TheScreen = GetDC(0)
Brush = CreateSolidBrush(f.BackColor)
For i = Movement To 1 Step -1
Cx = formWidth * (i / Movement)
Cy = formHeight * (i / Movement)
X = myRect.Left + (formWidth - Cx) / 2
Y = myRect.Top + (formHeight - Cy) / 2
Rectangle TheScreen, X, Y, X + Cx, Y + Cy
Next i
X = ReleaseDC(0, TheScreen)
DeleteObject (Brush)
End Sub
'--- Batas coding di Module...
'--- Coding ini di Form...
Private Sub Command1_Click()
'Ganti '500' di bawah dengan kecepatan dari efek ledakan form.
Call ImplodeForm(Me, 500)
End
Set Form1 = Nothing
End Sub
Private Sub Form_Load()
Call ExplodeForm(Me, 500) 'ledakan form
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Call ImplodeForm(Me, 500) 'pengembalian form
End Sub ******************************************************************************
******************************************************************************
Membuat Scrollbar Horizontal di ListBox |
'Deskripsi: Membuat scrollbar horizontal pada sebuah listbox yang di dalamnya
' terdapat data yang melebihi lebar dari listbox tersebut.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Persiapan: 1. Buat 1 Project baru dengan 1 ListBox.
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
' 3. Jika Declare Function berikut ingin ditempatkan dalam
' suatu Module tersendiri, hapus kata "Private" sebelum
' "Declare Function..."
'--------------------------------------------------------------------------
Private Declare Function SendMessageByNum Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal _
wParam As Long, ByVal lParam As Long) As Long
Const LB_SETHORIZONTALEXTENT = &H194
Private Sub Form_Load()
Static x As Long
'Lebar string akan menjadi lebar dari horizontal scroll bar tsb
'Tambahkan suatu string yang panjangnya melebihi lebar dari scroll bar ybt.
List1.List(0) = "Selamat datang di Situs Masino Sinaga. Semoga Sukses Menyertai Anda Sekalian!"
If x < TextWidth(List1.List(0) & " ") Then
x = TextWidth(List1.List(0) & " ")
If ScaleMode = vbTwips Then x = x / Screen.TwipsPerPixelX
SendMessageByNum List1.hwnd, LB_SETHORIZONTALEXTENT, x, 0
End If
End Sub
******************************************************************************
******************************************************************************
Memeriksa Event KeyDown di Form |
'Deskripsi: Memeriksa event KeyDown, KeyPress, dan KeyUp di Form
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Diupload : Rabu, 15 Mei 2002
'Persiapan: 1. Buat 1 Project baru dengan 1 Form.
' 2. Copy-kan coding berikut ke editor form yang bertalian.
---------------------------------------------------------------------
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim msg As String
frmForm1.Cls
frmForm1.CurrentX = 100
frmForm1.CurrentY = 100
msg = "Mendapat event KeyDown. KeyCode = " & KeyCode
msg = msg & " Shift = " & Shift
frmForm1.Print msg
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim msg As String
frmForm1.CurrentX = 100
frmForm1.CurrentY = 500
msg = "Mendapat event KeyPress. KeyAscii = " & KeyAscii
frmForm1.Print msg
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Dim msg As String
frmForm1.CurrentX = 100
frmForm1.CurrentY = 900
msg = "Mendapat event KeyUp. KeyCode = " & KeyCode
msg = msg & " Shift = " & Shift
frmForm1.Print msg
End Sub
Private Sub Form_Load()
frmForm1.FontTransparent = False
End Sub *****************************************************************************
*****************************************************************************
Hanya Huruf Besar Boleh Dientri ke TextBox |
'Deskripsi: Hanya huruf besar yang ditampilkan/dientri ke textbox.
' Ada dua cara untuk menampilkan input data dengan huruf
' besar di suatu textbox.
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Persiapan: 1. Buat 1 Project baru dengan 1 Form dan 2 Textbox.
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
Private Sub Text1_Change() 'Text1 menggunakan event Change
Dim posisi As Integer
posisi = Text1.SelStart
Text1.Text = UCase(Text1.Text)
Text1.SelStart = posisi
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer) 'Text2 menggunakan KeyPress
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub ******************************************************************************
******************************************************************************
Label Kedap-kedip (Blank) |
'Deskripsi: Contoh penggunaan control Label dan Timer untuk menampilkan
' tulisan kedap-kedip di atas form Anda (blink).
'Pembuat : Masino Sinaga (masino_sinaga@posindonesia.co.id)
'Persiapan: 1. Buat satu proyek baru dengan 1 Form, 1 Label, dan 1 Timer
' 2. Copy-kan coding berikut ke dalam editor form yang bertalian.
'--------------------------------------------------------------------------
Dim i As Long 'Deklarasi
Dim merah, hijau, biru As Integer 'Variabel global
Private Sub Form_Load()
i = 0 'Inisialisasi detik
Timer1.Interval = 500 'Kalau 1000 biasanya lompat 1 detik
End Sub
Private Sub Timer1_Timer()
i = i + 1
If i = 1000000 Then i = 0 'Supaya tdk overflow, dsb...
merah = Int(255 * Rnd) 'Bangkitkan angka random untuk merah
hijau = Int(255 * Rnd) 'Bangkitkan angka random untuk hijau
biru = Int(255 * Rnd) 'Bangkitkan angka random untuk biru
Label1.ForeColor = RGB(merah, hijau, biru) 'Campur tiga warna
If i Mod 2 = 0 Then 'Jika counter habis dibagi 2
Label1.Visible = True 'Tampilkan label
Else 'Jika counter tidak habis dibagi 2
Label1.Visible = False 'Sembunyikan label
End If 'Akhir pemeriksaan
End Sub
Source code ini dicopi dari http://www30.brinkster.com/masinosinaga/labelblink.html