Home » » Cara Mengganti Warna Border dari Kontrol

Cara Mengganti Warna Border dari Kontrol

Unknown | 07.08 | 0 comments

Cara Mengganti Warna Border dari KontrolKontrol-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.

Semoga Berhasil J



Komentar Anda :
Share this article :
 

Copyright © 2011. Rama BLog - All Rights Reserved
Template Trick-Collection Editing Full Template By Team Blogger