Thursday, July 11, 2013

VB6 PictureBox - Print Left Center Right Align - PictureBox

Di bawah ini merupakan contoh print left - center - right pada PictureBox, seperti pada gambar di bawah ini:

VB6 Print Left Center Right Align PictureBox
Gambar - VB6 Print Left Center Right Align PictureBox

Option Explicit

'-------------------------------------------------------------------------
'http://khoiriyyah.blogspot.com
'-------------------------------------------------------------------------
'Print right align pada objek PictureBox
Private Sub PrintRightAlign(ByVal Teks As String, pic As PictureBox)
With pic
.CurrentX = pic.ScaleWidth - pic.TextWidth(Teks)
pic.Print Teks
End With
End Sub

'Print center pada objek PictureBox
Private Sub PrintCenter(ByVal Teks As String, pic As PictureBox)
With pic
.CurrentX = (pic.ScaleWidth - pic.TextWidth(Teks)) / 2
pic.Print Teks
End With
End Sub

'Print left pada objek PictureBox
Private Sub PrintLeft(ByVal Teks As String, pic As PictureBox)
With pic
pic.Print Teks
End With
End Sub

Private Sub Form_Load()
Picture1.AutoRedraw = True
End Sub

'Contoh print left align
Private Sub cmdLeft_Click()
Static i As Long
i = i + 1
Call PrintLeft(i, Picture1)
End Sub

'Contoh print center
Private Sub cmdCenter_Click()
Static i As Long
i = i + 1
Call PrintCenter(i, Picture1)
End Sub

'Contoh print right
Private Sub cmdRight_Click()
Static i As Long
i = i + 1
Call PrintRightAlign(i, Picture1)
End Sub

Download: vb6_print_center_right_left.zip

READ MORE - VB6 PictureBox - Print Left Center Right Align - PictureBox

Wednesday, July 10, 2013

VB6 API - Menghilangkan Border TextBox, ListBox, etc.

Mengenai cara menghilangkan border object TextBox, ListBox, dan lain sebagainya.
Option Explicit 

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function
SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const WS_EX_CLIENTEDGE = &H200
Private Const GWL_EXSTYLE = (-20)

Private Sub RemoveBorder(ctl As Control)
Dim lStyle As Long
ctl.Appearance = 1
lStyle = GetWindowLong(ctl.hwnd, GWL_EXSTYLE)
lStyle = lStyle And Not WS_EX_CLIENTEDGE
SetWindowLong ctl.hwnd, GWL_EXSTYLE, lStyle
ctl.Appearance = 0
End Sub
Contoh penggunaan:
Private Sub Command1_Click() 
Call RemoveBorder(Text1)
End Sub
READ MORE - VB6 API - Menghilangkan Border TextBox, ListBox, etc.

Tuesday, July 9, 2013

VB6 ListBox - Mengetahui Item Height Object ListBox

Untuk tujuan tertentu, terkadang kita memerlukan sebuah fungsi untuk mengukur Item Heigh sebuah object ListBox dan di bawah ini merupakan salah satu contohnya dengan menggunakan fungsi API.

Option Explicit   

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Const LB_GETITEMRECT As Long = &H198

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Function ListBoxItemHeight(lst As ListBox) As Integer
Dim rc As RECT, i As Long, dy As Long
If lst.ListCount = 0 Then Exit Function
SendMessage lst.hwnd, LB_GETITEMRECT, ByVal 0&, rc
dy = rc.Bottom - rc.Top
ListBoxItemHeight = (dy * Screen.TwipsPerPixelY)
End Function

Contoh penggunaan:

Private Sub Command1_Click() 
List1.AddItem "A"
MsgBox ListBoxItemHeight(List1)
End Sub
READ MORE - VB6 ListBox - Mengetahui Item Height Object ListBox

Friday, July 5, 2013

VB6 Date Time: Cara Mudah Menghitung Selisih Waktu

Menjelaskan cara mudah/termudah untuk menghitung selisih waktu - Mengapa disebut sebagai cara termudah? Karena ia hanya membutuhkan satu baris kode saja.

Untuk memahami manipulasi Date and Time seperti fungsi built-in dalam VB6 (DateAdd, DatePart, dan sebagainya) atau fungsi-fungsi date custom (bukan built-in), ada baiknya Anda mengetahui fakta mengenai data type date di bawah ini:

  1. Data type date sama seperti data type number lainnya (integer, long, double) yang ditampilkan dengan format tertentu.
  2. Bilangan 0 pada data type number (integer, long, double) padanannya dalam data type date adalah 30 December 1899, Jadi yang kurang dari tanggal 30 December 1899 menjadi bilangan negatif dan yang lebih dari 30 December 1899 akan menjadi bilangan positif.
  3. Limit bilangan negatif untuk data type date adalah: 1 January 100 (-657434) dan untuk bilangan positif: 31 December 9999 (2958465) .
  4. Date type date adalah angka 0,0000115740740740741 yang terus menerus ditambahkan atau terus menerus dikurangkan. 0,0000115740740740741 adalah 1 detik. Jadi (0,0000115740740740741 * 3600 * 24) hasilnya adalah 1. Angka 1 itu maksudnya adalah satu hari.
  5. Seluruh tanggal berada di depan koma dan seluruh jam berada di belakang koma [tanggal, jam] dan sekarang (pada saat saya menulis artikel ini) adalah tanggal/jam: 41460,9088310185
  6. Jika tidak ada tulisan 'ditampilkan dengan format tertentu' pada poin kesatu, apabila orang bertanya: "Jam berapa sekarang?" jawabannya, sekarang jam: 0,904872685185185.
  7. Dan sebagainya, dan sebagainya, dan lain sebagainya.

Dari statement di atas maka, berapa selisih waktu antara: "10:11:01" s/d "11:23:01", jawabannya adalah:

CDate ("11:23:01") - CDate ("10:11:01") hasilnya adalah: 0,049537037037037. Duh, yang benar saja Mang, jadi pusing membacanya. Ingat pada point yang kesatu 'ditampilkan dengan format tertentu' sehingga: CDate (0,049537037037037) hasilnya adalah selisih waktu yang sebenarnya. Atau:

MsgBox  CDate (CDate ("11:23:01") - CDate ("10:11:01")) 'hasilnya adalah selisih waktu yang sebenarnya atau 1:12:00.

Kesimpulannya: Untuk menghitung selisih waktu, kita bisa menggunakan fungsi: CDate (CDate (Time) - CDate (Time)), sehingga tidak harus mengkonversi jam ke detik, menit ke detik dengan bantuan fungsi Abs atau Mod kemudian dari detik dikonversi lagi ke jam, menit, dan detik. Walaupun hasinya sama, tetapi CDate (CDate (Time) - CDate (Time)) jauh lebih simple, bukankah demikian? Nah, bagaimana jika selisih waktunya ditambah hari? Contohnya: berapa selisih waktu antara 18/02/2013 s/d 25/03/2013 hmm... ingat pada point ke satu: 'seperti bilangan lainnya hanya saja ditampilkan dengan format tertentu.'

Keywords: cara, menghitung, jam, selisih, waktu, vb6, date, perbedaan, mencari, angka, time, menit, detik, bilangan

READ MORE - VB6 Date Time: Cara Mudah Menghitung Selisih Waktu