Minggu, 25 Desember 2011

Mengganti Warna Border dari Kontrol

Kontrol-kontrol yang ada di VB tidak menyediakan properti untuk mengganti warna bordernya. Jadi jika Anda ingin mengubah warna bordernya diperlukan kode tambahan.
Cara pembuatannya seperti di bawah ini :

Buat Project baru dengan sebuah Form dan sebuah Module didalamnya.
Di Module ketikkan kode berikut :

[ VB 6.0 ]
Private Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32.dll" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateSolidBrush Lib "gdi32.dll" (ByVal crColor As Long) As Long
Private Declare Function FrameRgn Lib "gdi32.dll" (ByVal hDC As Long, ByVal hRgn As Long, ByVal hBrush As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long

Public Sub BorderColor(ByVal Ctl As Control, ByVal lColor As OLE_COLOR, Optional ByVal BorderWidth As Integer = 2)
    Dim l As Long
   
    l = CreateRectRgn(BorderWidth, BorderWidth, (Ctl.Width / Screen.TwipsPerPixelX) - BorderWidth, (Ctl.Height / Screen.TwipsPerPixelY) - BorderWidth)
    SetWindowRgn Ctl.hwnd, l, False

    l = CreateRectRgn(Ctl.Left / Screen.TwipsPerPixelX, Ctl.Top / Screen.TwipsPerPixelY, Ctl.Width / Screen.TwipsPerPixelX + (Ctl.Left / Screen.TwipsPerPixelX), Ctl.Height / Screen.TwipsPerPixelY + (Ctl.Top / Screen.TwipsPerPixelY))
    FrameRgn Ctl.Container.hDC, l, CreateSolidBrush(lColor), BorderWidth, BorderWidth
End Sub

[ VB .NET ]
Private Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Integer, ByVal Y1 As Integer, ByVal X2 As Integer, ByVal Y2 As Integer) As Integer
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Integer, ByVal hRgn As Integer, ByVal bRedraw As Boolean) As Integer
Private Declare Function CreateSolidBrush Lib "gdi32.dll" (ByVal crColor As Integer) As Integer
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Integer) As Integer
Private Declare Function FrameRgn Lib "gdi32.dll" (ByVal hdc As Integer, ByVal hRgn As Integer, ByVal hBrush As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer

Public Sub BorderColor(ByVal Ctl As Control, ByVal lColor As Color, Optional ByVal BorderWidth As Integer = 1)
        Dim i As Integer

        i = CreateRectRgn(BorderWidth, BorderWidth, Ctl.Width - BorderWidth, Ctl.Height - BorderWidth)
        SetWindowRgn(Ctl.Handle, i, False)

        i = CreateRectRgn(Ctl.Left, Ctl.Top, Ctl.Width + Ctl.Left, Ctl.Height + Ctl.Top)
        FrameRgn(GetDC(Ctl.Parent.Handle), i, CreateSolidBrush(CInt(ColorTranslator.ToWin32(lColor))), BorderWidth, BorderWidth)
End Sub



Sekarang buatlah sebuah TextBox di Form1 dan misalnya Anda ingin diubah warna bordernya menjadi warna biru, maka tuliskan kode berikut ini di bagian 'Form_Paint' dari Form1 :
[ VB 6.0 ]
BorderColor Text1, vbBlue
[ VB .NET ]
BorderColor(TextBox1, Color.Blue)



CATATAN :
- Bagi pengguna VB 6.0,  apabila Kontrol yang akan diganti warna bordernya ditempatkan di PictureBox, maka properti "AutoRedraw" dari PicturBox tersebut harus bernilai "True".
- Bagi pengguna VB 6.0,  apabila Kontrol yang akan diganti warna bordernya ditempatkan di Frame atau Tab, maka cara diatas tidak dapat digunakan. Solusinya buatlah sebuah PictureBox (properti AutoRedraw=True; BorderStyle=0) ke dalam Frame atau Tab tersebut, baru Kontrol yang akan diganti warna bordernya ditempatkan di PictureBox tersebut.

Label: , , ,

Jumat, 23 Desember 2011

Menghilangkan Border dari Kontrol

Tidak semua Kontrol yang ada di VB menyediakan properti untuk menghilangkan border / pinggiran-nya. Karena itu perlu dibuat kode khusus untuk menghilangkan border tersebut. Berikut contoh pembuatannya :

Buat Project baru dengan sebuah Form dan sebuah Module didalamnya.
Di Module ketikkan kode berikut :

[ VB 6.0 ]
Private Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Public Sub NoBorder(ByVal Ctl As Control, Optional ByVal CropWidth As Integer = 2)
    Dim l As Long
    l = CreateRectRgn(CropWidth, CropWidth, (Ctl.Width / Screen.TwipsPerPixelX) - CropWidth, (Ctl.Height / Screen.TwipsPerPixelY) - CropWidth)
    SetWindowRgn Ctl.hwnd, l, False
End Sub

[ VB .NET ]
Private Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Integer, ByVal Y1 As Integer, ByVal X2 As Integer, ByVal Y2 As Integer) As Integer
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Integer, ByVal hRgn As Integer, ByVal bRedraw As Boolean) As Integer

Public Sub NoBorder(ByVal Ctl As Control, Optional ByVal CropWidth As Integer = 1)
    Dim i As Integer
    i = CreateRectRgn(CropWidth, CropWidth, Ctl.Width - CropWidth, Ctl.Height - CropWidth)
    SetWindowRgn(Ctl.Handle, i, False)
End Sub


Sekarang untuk percobaanya buat beberapa Kontrol ke dalam Form. Lalu ketikkan kode sesuai dengan nama Kontrol-nya di bagian 'Form_Load' dari Form seperti ini :
NoBorder TextBox1 'nama kontolnya adlh TextBox1

Label: , , ,

Senin, 19 Desember 2011

Fungsi Semua Terisi

Fungsi Semua Terisi ini adalah fungsi untuk memudahkan Anda apakah User telah mengisi seluruh kontrol isian (seperti TextBox atau ComboBox) dalam suatu Form. Agar lebih jelas, berikut cara membuatnya :

Buat Project baru dengan sebuah Form dan sebuah Module didalamnya.
Di Module ketikkan kode berikut :
Public Function SemuaTerisi(ByVal Frm As Form) As Boolean
    Dim c As Control
    Dim b As Boolean
  
    b = True
  
    For Each c In Frm.Controls
        If (TypeOf c Is TextBox) Or (TypeOf c Is ComboBox) Then 'utk TextBox dan ComboBox
           b = Not (Trim(c.Text) = "")
        End If
      
        If b = False Then
            c.SetFocus
            Exit For
        End If
    Next
  
    SemuaTerisi = b
End Function
(bagi pengguna VB .NET gantikan kode yang berwarna merah dengan kode "c.Focus()"

Untuk percobaan, buatlah 3 buah Textbox dan 1 Tombol/ Button ke dalam Form. Lalu ketikkan kode berikut di Tombol/ Button_Click :
If SemuaTerisi(Me) Then
    MsgBox "Data sudah lengkap", vbInformation
Else
    MsgBox "Data belum lengkap", vbCritical
End If

Jalankan, kemudian tes dengan mengisi atau mengosongkan TextBox.

Label: , , , ,

Kamis, 15 Desember 2011

Form Ber-Icon Animasi

Secara default, properti Icon di Form hanya bisa diisi file gambar *.ico dan tidak bisa diisi file gambar gerak / animasi seperti *.gif. Tapi dengan sedikit trik, hal ini bisa dilakukan.

Label: , , ,

Selasa, 13 Desember 2011

BindingSource + BindingNavigator + DataGridView

Mungkin masih jarang yang mengkombinasikan BindingSource, BindingNavigator, dan DataGridView, padahal cara ini dapat mempermudah pembuatan aplikasi database.
Masing-masing kontrol memiliki fungsi sendiri-sendiri, DataGridView sebagai tampilan tabelnya, BindingNavigator sebagai tombol-tombol navigasi, dan BindingSource sebagai penghubungnya.

Label: , , ,

Menyimpan DataGridView

Seperti diketahui secara umum bahwa data yang ditampilkan di kontrol DataGridView tidak ter-link / terhubung langsung dengan data yang ada di databasenya.
Berikut ini contoh bagaimana menyimpan data di DataGridView ke databasenya sehingga saling terhubung.

Label: , , ,

Minggu, 11 Desember 2011

Awal Kapital Otomatis di TextBox

Yang dimaksud disini adalah dimana ketika User mengetikkan suatu kalimat di TextBox, maka secara otomatis huruf pertama setiap kata dalam kalimat tersebut diubah menjadi huruf kapital / besar. Cara ini berguna untuk mempermudah pengisian dan mengurangi resiko kesalahan pengetikan pada TextBox tertentu, seperti TextBox untuk mengisi nama orang.
Caranya buat sebuah kontrol TextBox ke dalam Form. Lalu ketikkan kode berikut :

[ VB 6.0 ]
Di bagian 'Text1_Change' :
Dim i As Integer
i = Text1.SelStart
Text1.Text = StrConv(Text1.Text, vbProperCase)
Text1.SelStart = i

[ VB .NET ]
Di bagian 'TextBox1_TextChanged' :
Dim i As Integer = TextBox1.SelectionStart
TextBox1.Text = StrConv(TextBox1.Text, VbStrConv.ProperCase)
TextBox1.SelectionStart = i

Jalankan, kemudian ketikkan beberapa kata dalam TextBox tersebut.

Label: , , ,

Kamis, 01 Desember 2011

Performance Counter

Aplikasi ini adalah aplikasi penghitung performance atau kinerja komputer secara real-time yang akan menghitung performance meliputi processor, memory, dan network.
Dalam pembuatannya menggunakan kontrol PerformanceCounter sebagai kontrol utamanya dan tanpa menggunakan Fungsi API. Kontrol PerformanceCounter itu sendiri adalah kontrol yang digunakan untuk mendapatkan nilai kinerja bagian-bagian komputer, seperti processor, memory, local disk, server, network, process, dll.

Label: , , , ,