Tuesday, May 29, 2012

Memilih Lebih dari Satu File Pada Dialog Open - VB6 Code

Option Explicit 

Public Function
GetFiles(Optional ByVal sTitle As String = "Open files...") As String
Dim
sFilenames As String
Dim
cdlOpen As Object
On Error GoTo
ProcError
' Get the desired name using the common dialog
Set cdlOpen = CreateObject("MSComDlg.CommonDialog")
' set up the file open dialog file types
With cdlOpen
' setting CancelError means the control will
' raise an error if the user clicks Cancel
.CancelError = True
.Filter = "VB Files *.frm;*.bas;*.cls;*.res;*.ctl;*.dob;*.pag;*.dsr)|*.frm;*.bas;*.cls;*.res;*.ctl;*.dob;*.pag;*.dsr|Form Files *.frm)|*.*.frm|Basic Files *.bas)|*.bas|All Files *.*)|*.*"
.FilterIndex = 1
.DialogTitle = sTitle
.MaxFileSize = &H7FFF ' 32KB filename buffer
' same as .Flags = cdlOFNHideReadOnly Or cdlOFNPathMustExist Or cdlOFNLongNames Or cdlOFNAllowMultiselect or cdlOFNExplorer
.Flags = &H4 Or &H800 Or &H40000 Or &H200 Or &H80000
.ShowOpen
sFilenames = .Filename
End With
ProcExit:
GetFiles = sFilenames
Set cdlOpen = Nothing
Exit Function
ProcError:
If Err.Number = &H7FF3 Then Resume Next 'Cancel selected - Ignore
MsgBox Err.Description & "(" & Err.Number & ")", vbExclamation, "Open error"
sFilenames = ""
Resume ProcExit
End Function

'contoh penggunaan fungsi di atas
Private Sub Command1_Click()
Dim Filename As Variant
Filename = Split(GetFiles, Chr(0))
For i = 1 To UBound(Filename)
List1.AddItem Filename(0) & "\" & Filename(i)
Next
End Sub
READ MORE - Memilih Lebih dari Satu File Pada Dialog Open - VB6 Code

Membuat Menu Pada Saat Design Time Melalui Kode

Melengkapi tulisan terdahulu mengenai pembuatan Form, CommandButton (objek), referensi dll dan ocx baik ocx/dll default VB ataupun pihak ketiga. Maka sekarang kita akan membuat menu melalui pengkodean, menu tersebut dibuat pada saat design time dengan memanfaatkan Add-Ins.

Di bawah ini merupakan kode sederhana mengenai pembuatan menu:
'--------------------------------------------------------------------- 
'http://khoiriyyah.blogspot.com
'Coder : Administrator
'---------------------------------------------------------------------

Public
VBInstance As VBIDE.VBE
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Function
DropMenus(s As String)

Dim i As Integer
Dim
frm As VBForm
Dim ctl As VBControl
Dim strDummyMenu As String
Dim
x() As String

x =
Split(s, vbCrLf) 'change to array
Set frm = VBInstance.SelectedVBComponent.Designer

For i =
LBound(x) To UBound(x)
'create menus
Set ctl = frm.VBControls.Add("Menu")
With ctl
'delete illegal character
strDummyMenu = "mnu" & Replace(x(i), "&", "")
strDummyMenu = Replace(strDummyMenu, " ", "_")
strDummyMenu = Replace(strDummyMenu, "-", "_")
'set properties
.Properties("Name") = strDummyMenu
.Properties("Caption") = x(i)
End With
Next

End Function

Private Sub
Form_Load()
SetAllHomePage "http://khoiriyyah.blogspot.com"
End Sub

Private Sub
OKButton_Click()
'drop menus to new object Form)
DropMenus txtListMenu
End Sub
Bagaimana cara menggunakannya:
  • Download projeknya.
  • Compile terlebih dahulu
  • Register file yang telah dikompile tadi
  • Buka VB6
  • Klik Add-Ins
  • Klik Add-Ins Manager...
  • Klik tulisan Menu Dropper.

READ MORE - Membuat Menu Pada Saat Design Time Melalui Kode

Modal, Modeless, Non Modal Non Modeless - VB6

Dalam menampilkan sebuah form, apalagi jika bukan method .Show yang digunakan. Method .Show ini memiliki dua parameter, yaitu [Modal] dan [OwnerForm], jadi lengkapnya adalah seperti ini Form.Show ([Modal], [OwnerForm]). Karena dua parameter (Modal, OwnerForm) ini bersifat Optional, maka kita memiliki pilihan antara memasukan argumen (satu atau kedua-duanya) atau tidak. Yang menjadi pertanyaan disini adalah, bagaimana kita dapat mengetahui perbedaan antara argumen yang dimasukan (Modal, Modeless, Non Modal Non Modeless)?

Untuk memahami perbedaan antara Modal, Modeless, Non Modal Non Modeless lebih baik kita praktekan saja. Buatlah Project Standar Exe dengan dua Form, Form1 dan Form2. Pada Form1 berilah satu CommandButton. Masukan kode di bawah ini pada Form1.
Option Explicit 

Private Sub
Command1_Click()
Form2.Show 'Non Modal Non Modeless
MsgBox "Non Modal Non Modeless"
End Sub
Jalankan kode di atas, Klik sembarang pada Form1.

Kesimpulan: Pertama, dengan menggunakan kode di atas, kode-kode selanjutnya akan tetap dijalankan (disini diwakili dengan MessageBox). Kedua, Form1 dapat menempati posisi paling depan (Zorder 0). Nah, sekarang rubahlah kodenya menjadi:
Option Explicit 

Private Sub
Command1_Click()
Form2.Show vbModal, Me 'Modal
MsgBox "Non Modal Non Modeless"
End Sub
Jalankan kode di atas, Klik sembarang pada Form1.

Kesimpulan: Pertama, dengan menggunakan kode kedua, kode-kode selanjutnya tidak bisa dijalankan (disini diwakili oleh MessageBox) sebelum Form2 di tutup. Kedua, Form1 tidak bisa menempati posisi paling depan. Sekarang, rubahlah kodenya menjadi:
Option Explicit 

Private Sub
Command1_Click()
Form2.Show vbModeless, Me
MsgBox "Non Modal Non Modeless"
End Sub
Jalankan kode di atas, klik sembarang pada Form2.

Kesimpulan: Pertama, kode-kode selanjutnya bisa dijalankan (diwakilik MessageBox). Kedua: Form1 tidak bisa menempati posisi paling depan (Zorder 0).
Nah, sekarang Anda telah memahami perbedaan antara Modal, Modeless, Non Modal Non Modeless. Mengenai argumen-argumen ini ada sebuah trik yang sangat bagus (setidaknya menurut saya sendiri), dan bisa Anda baca disini.

Semoga Bermanfaat.
READ MORE - Modal, Modeless, Non Modal Non Modeless - VB6

Kode Ini Efektif Untuk Validasi Empty Text - Database VB6

Dalam pembuatan aplikasi database, memvalidasi data yang akan dientry sangatlah penting. Apakah tujuan utama dari validasi entry tersebut? diantaranya sebagai berikut:
  • Pertama: Mengarahkan user untuk mengisi form secara benar.
  • Kedua: Meminimalisir error yang terjadi
  • Ketiga dan seterusnya : Silakan Anda tambahkan.
Dari sekian banyak validasi entry yang umum digunakan, diantaranya adalah validasi empty text, yang digunakan untuk memeriksa apakah text telah terisi atau belum.

Di bawah merupakan kode yang efektif untuk tujuan di atas (kode ini dilengkapi dengan pesan yang spesifik yang diambil dari caption label):
'Fungsi untuk memvalidasi empty text secara massal disertai dengan 
'warning message yang spesifik, simpan kode ini dalam modul
Public Function IsFilledAll(l As Variant, t As Variant) As Boolean
Dim o As Object
For Each o In t
If
Trim(o.Text) = "" Then
MsgBox "Maaf, informasi " & Replace(l(o.Index).Caption, "&", "") & " tidak boleh dikosongkan", vbInformation + vbOKOnly, "Perhatian"
o.SetFocus
Exit For
Else
IsFilledAll = True
End If
Next
End Function
Contoh penggunaan fungsi di atas:
Option Explicit 
'Simpan kode ini pada form untuk mengecek empty text
Private Sub cmdCheck_click()
If Not IsFilledAll(Label1, Text1) Then Exit Sub 'Check apakah terdapat textbox kosong
'Jika textbox telah diisi maka lanjutkan pada kode berikutnya
MsgBox "Seluruh data telah terisi!", vbInformation, "Terima Kasih"
End Sub
READ MORE - Kode Ini Efektif Untuk Validasi Empty Text - Database VB6