Astawan’s World

Icon

Just To Remember Something That I Ever Know

Memilih Printer dengan CommonDialog pada VB 6

Cara menggunakan CommonDialog untuk memilih printer yang akan digunakan untuk mencetak :

Sub Cetak()
    On Error GoTo err_han
    ' hidupkan property CancelError untuk menangkap error saat cancel
    ' saat dipilih Cancel akan timbul error nomor 32755
    ' error tersebutlah yang akan kita tangkap untuk pembatalan
    Me.CommonDialog1.CancelError = True
    ' munculkan printer dialog
    Me.CommonDialog1.ShowPrinter
    ' contoh data yang akan dicetak
    Printer.Print "Test"
    Printer.EndDoc
    Exit Sub
err_han:
    If Err.Number = 32755 Then
        MsgBox "Cetak dibatalkan", vbInformation
    End If
End Sub

Filed under: VB 6

Mengetahui Tanggal Awal Dalam Minggu

Kalau sekarang adalah hari Kamis, 22 Januari 2009 maka tanggal berapakah hari minggu kemaren?. Gampang!!! secara manual tinggal hitung aja selisihnya harinya lalu dikurangkan, 22 – 5 hari = 18 Januari 2009. nah bagaimana kalau dalam program???, tentunya program tidak bisa hitung-hitung begituan kecuali dibuat rumus-rumusnya. Kalau rumus dari cara diatas dituangkan kedalam program mungkin akan kepanjangan alias kelamaan….

Untuk VB 6 ada cara gampang untuk solusi diatas

Dim tanggalAwal As Date
tanggalAwal = DateAdd(WeekDay("d", Date, VBSunday) * (-1) + 1, Date)

Ada tanggal awal pastinya ada tanggal akhir, untuk cari tanggal akhir ane belon tau cara praktisnya, tapi kalau tanggal awal dah dapat tinggal tambahin aja tuh tanggal awal dengan jumlah hari dalam seminggu (7).
jadi kode diatas bisa ditambahin dengan…

Dim tanggalAkhir As Date
tanggalAkhir = DateAdd("d", 7, tanggalAwal)
' or
Dim tanggalAkhir1 As Date
tanggalAkhir1 = DateAdd("d", 7, DateAdd(WeekDay("d", Date, VBSunday) * (-1) + 1, Date))

Jika menggunakan VB.Net, caranya sama tapi butuh sedikit modifikasi.

Filed under: VB 6

Inno Setup support Windows 95, 98, 2000, 2003, XP, Me, and NT 4.0


OS Compatibility
Currently supported platforms include Windows 95, 98, 2000, 2003, XP, Me, and NT 4.0. No service packs or other OS updates are required on any of the supported platforms.

I currently use and develop on Windows 2000 primarily, so Windows 2000 compatibility is foremost.

When new major features are introduced, I usually test them personally on all supported Windows versions.

The 16-bit version of Inno Setup was discontinued starting with version 1.3. Support for Windows NT 3.51 was discontinued starting with version 3.0.

Mau yang lebih lengkap silahkan kunjungi http://www.innosetup.com/isfaq.php#oscompat

Filed under: VB 6

Buat Package Project Vb6 dengan Inno Setup

Package!!! … seberapa pentingkah?

Jawabannya menjadi tidak penting jika implementatornya adalah programmer aplikasi itu sendiri, tatapi Jawabannya akan menjadi sangat penting jika aplikasi akan dijual di pasar umum atau implementatornya adalah orang lain.

Biasanya gue buat package pake PDW alias Package Development Wizard yang merupakan tools bawaan Microsoft Visual Studio 6. Pada awalnya dengan PDW sih lancar-lancar aja, tetapi lama kelamaan mulai timbul masalah seperti File setup.exe yang nggak bisa dipakai, sampai gagal mengcopy dan meregisterkan componen/library.

Nah gue coba untuk coba-coba installer package yang lain, mau coba install shield,  e..e… cari dimana softwarenya, mau download tapi filenya gede banget. Akhirnya gue inget milis VB6 di Indoprog yang ngebahas tentang buat package, dan ada member yang menyebut nama Inno Setup.

Inno Setup

Inno Setup is a free installer for Windows programs. First introduced in 1997, Inno Setup today rivals and even surpasses many commercial installers in feature set and stability.

nah … itu sedikit cuplikan tentang Inno Setup yang dikatakan oleh situs asalnya.


PDW vs Inno Setup

Secara konsep diantara keduanya bisa dibilang sama yaitu sama-sama menghasilkan installer untuk aplikasi yang kita buat (he he… ya pastilah, namanya juga Installer Package)
Ok.. beberapa perbedaan yang ada antara lain pada output setup file dan cara memasukan komponennya.

Output Setup File

Output Pada PDW adalah :

  1. Setup.exe
  2. Setup.lst
  3. [application name].Cab file
  4. Support (folder)

Sedangkan pada Inno Setup hanya menghasilkan satu file setup berekstension .exe.

Pendaftaran Componen/Library

  • Pada PDW, componen dan library secara otomatis akan dikenali dan dimasukan, karena PDW langsung membaca file .vbp (VB Project) yang menampung informasi component / library yang digunakan oleh project.
  • Pada Inno Setup, component/library harus didaftarkan secara manual (haa…!!!, tape dong…)

Itulah sedikit perbedaan yang gue tau, pada awalnya menggunakan Inno Setup memang berat banget, karena kita harus mengetahui file-file apa saja yang harus dimasukan dalam package, Tapi lama kelamaan jadi terbiasa malahan gue tau lebih dalam apa saja yang ada dalam aplikasi gue.

Untuk pendaftaran component, gue punya cara praktis yaitu gue pake dulu PDW untuk buat packagenya, kemudian dari package tersebut gue lihat dan ambil file-file yang dipakai oleh aplikasi, kemudian gue kumpulin dalam satu direktori. Nah.. isi dari direktori ini yang gue masukan ke script Inno Setup.

Eh… ada satu lagi yang lupa, Package output dari Inno Setup bisa dikasih password sedangkan output PDW nggak bisa.

Untuk informasi dan download silahkan kunjungi URL http://www.jrsoftware.org/isinfo.php

Filed under: VB 6

Membulatkan Angka Keatas (Ceiling)

Untuk membulatkan angka pecahan di visual basic 6 kita dapat menggunakan fungsi Round, kira-kira hasilnya akan sebagai berikut :
Round(1.1) -> 1
Round(1,5) -> 2
Round(1,7) -> 2

Bagaimana jika kita ingin membulatkan selalu kebawah? gampang…., tinggal ambil nilai integernya.
Int(1.1) -> 1
Int(1,5) -> 1
Int(1,7) -> 1

Yang agak sulit, bagaimana jika kita ingin pembulatan selalu keatas? pake fungsi apa ya?, hmmm… saya sempat bingung juga, tapi akhirnya ketemu caranya juga, caranya sebagai berikut :

Buat fungsi berikut :

Function Ceiling(number As Double) As Long
    Ceiling = -Int(-number)
End Function

Cara penggunaannya :
x=Ceiling(1.1) -> x=2
x=Ceiling(1,5) -> x=2
x=Ceiling(1,7) -> x=2

Filed under: VB 6

Menghitung Umur (tahun, bulan dan hari) dengan VB6

Contoh program untuk menghitung umur dengan Visual Basic 6.
1. Fungsi calculateAge adalah fungsi untuk menghitung umur yang akan mengembalikan nilai string yang berisi informasi x Tahun, x Bulan dan x Hari

2. Sub test adalah contoh untuk memanggil fungsi calculateAge


Function calculateAge(dateOfBird As Date, fromData As Date) As String
    Dim dateNow As Date
    Dim tgl As Date
    Dim tgl1 As Date

    Dim years As Long
    Dim months As Long
    Dim days As Long

    Dim yearWord As String
    Dim monthWord As String
    Dim dayWord As String

    dateNow = fromData
    tgl = dateOfBird

    ' menghitung tahun
    years = DateDiff("yyyy", tgl, dateNow)
    If month(tgl) > month(dateNow) Then
        years = years - 1
    ElseIf month(tgl) = month(dateNow) And day(tgl) > day(dateNow) Then
        years = years - 1
    ElseIf month(tgl) = month(dateNow) And day(tgl) = day(dateNow) Then
        GoTo finally ' jika bulan dan tanggal sama maka perhitungan selesai
    End If

    ' menghitung bulan
    tgl = DateAdd("yyyy", years, tgl)
    months = DateDiff("m", tgl, dateNow)
    If day(tgl) > day(dateNow) Then
        months = months - 1
    ElseIf month(tgl) = month(dateNow) And day(tgl) >= day(dateNow) Then
        months = months - 1
    End If

    tgl = DateAdd("m", months, tgl)

    ' menghitung hari
    days = DateDiff("d", tgl, dateNow)

finally:
    yearWord = IIf(years = 0, "", years & " Tahun ")
    monthWord = IIf(months = 0, "", months & " Bulan ")
    dayWord = IIf(days = 0, "", days & " Hari ")

    calculateAge = yearWord & monthWord & dayWord
    calculateAge = Trim(calculateAge)
End Function

Private Sub test()
    Dim strMsg As String
    strMsg = "Umur : " & calculateAge(#1/30/2000#, #6/26/2008#)
    'result = "Umur : 8 Tahun 4 Bulan 27 Hari"
    MsgBox strMsg, vbInformation
End Sub

Filed under: VB 6

VB6 : Membuka berbagai jenis file

Berikut cara untuk berbagai jenis file seperti file .txt, .doc, dll….
Anda bisa saja cuma menggunakan keyword shell, tapi biasanya ini cuma sukses untuk memanggil bat file (*.bat).

Anda dapat menggunakan file shell32.dll, sintaknya sebagai berikut :

' membuat enum data untuk mode windows state
Enum State
    SHOWNORMAL = 1
    SHOWMINIMIZED = 2
    SHOWMAXIMIZED = 3
    SHOWMINNOACTIVE = 7
    SHOWDEFAULT = 10
End Enum

' mendeklarasikan fungsi yang memanggil library dari shell32.dll
Private Declare Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" (ByVal hWnd As Long, _
        ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long

' fungsi untuk membuka file
Public Function OpenLocation(URL As String, _
    WindowsState As State) As Long

    Dim lHWnd As Long
    Dim lAns As Long

    lAns = ShellExecute(lHWnd, "open", URL, vbNullString, _
    vbNullString, WindowsState)
    OpenLocation = lAns
End Function

Sub Main()
    OpenLocation "c:\test.txt", SHOWNORMAL
End Sub

Filed under: VB 6

VB6 : Error 28: “Out of Stack Space” saat package VB Project + Crystal Report 8.5 dengan PDW

Jika anda sedang membuat package menggunakan tool Packaging and Development Wizard (PDW) dan anda mengalami masalah Error 28: “Out of Stack Space”, untuk pemecahannya silahkan anda kunjungi link berikut : http://support.microsoft.com/kb/305558#top.

Link ini saya dapat dari milis visualbasic6programming@yahoogroups.com

Filed under: VB 6

VB6 : Contoh Fungsi yang mengembalikan nilai array

Di suatu milis dulu pernah ada yang tanya apakah bisa suatu fungsi mengembalikan nilai array, saat itu saya ikut jawab tidak bisa, karena saya mengacu pada cara penulisan fungsi yang sama dengan cara penulisan array.
Akan tetapi ternyata bisa jika suatu fungsi mengembalikan nilai bertipe array, contohnya sebagai berikut :

'fungsi getArray akan mengembalikan data array bertipe Long Integer
Function getArray() As Long()
    Dim myLocalArray() As Long
    Dim i As Integer
    ReDim myLocalArray(100) As Long
    For i = 0 To 100
        myLocalArray(i) = i * 10
    Next i
    getArray = myLocalArray
End Function

Sub main()
    Dim myArray() As Long
    myArray = getArray
End Sub

Filed under: VB 6

VB6 : Angka Terbilang Library – Penerjemah angka kedalam kata-kata

Angka Terbilang Library (KWATerbilang6.dll) adalah library yang berfungsi untuk menerjemahkan angka kedalam bentuk kata-kata untuk VB 6. Fungsi dan penggunaanya hampir sama dengan KWATebilang.dll untuk .Net (VB 2005 : Angka Terbilang Library – Penerjemah angka kedalam kata-kata).
Library dapat didownload di http://astawan008.googlepages.com/KWATerbilang6.dll dan bebas digunakan pada project anda, baik komersil maupun tidak.

Jika ada bug error silahkan anda kirim bug error tersebut ke email saya di astawan008@gmail.com

Silahkan download dan copy file KWATerbilang6.dll ke komputer anda, lalu load library melalui menu Project – Reference, tekan tombol Browse, lalu cari file library yang telah anda copy tadi, jika telah ditemukan, pilih dan tekan tombol OK, setelah itu akan daftar Available Reference akan muncul KWATerbilang Library for VB 6.

Cara lain untuk meregistrasikan library adalah, copy library ke direktori sistem anda (ex: c:\windows\system32), lalu masuk ke Command Prompt kemudian ketikan regsvr32  c:\windows\system32\KWATerbilang6.dll, tekan Enter.

Contoh coding penerapan pada aplikasi VB 6:

Sub main()
    ' buat object instant dari kwaTerbilang
    Dim at As New KwaTerbilang6.cKWATerbilang

    Dim angka As Double
    Dim angkaTerbilang As String

    angka = 1545600
    ' terjemahkan angka menggunakan method KwaTerbilang
    angkaTerbilang = at.KwaTerbilang(angka)

    ' hasilnya adalah "Satu Juta Lima Ratus Empat Puluh Lima Ribu Enam Ratus"
End Sub

Filed under: VB 6