Cool Control

Control ini dibuat dengan meng-inherits dari usercontrol class dan bisa dimanfaatkan sebagai button. Control ini bergradien warnanya, bisa diatur warna1 dan warna2 nya lewat properties window berikut cursor aktif dan cursor non aktif ketika event mouse hover terjadi. Control ini bisa dimanfaatkan sebagai button atau sebagai label dengan mengatur properti aktif nya ke true atau false...berikut code nya :

Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.ComponentModel

Public Class RoelMultiPurposePanel
    Inherits System.Windows.Forms.UserControl

#Region "Variables Declaration"
    Delegate Sub ClickDelegate(ByVal sender As Object, ByVal e As System.EventArgs)
    Public Event On_Click As ClickDelegate

    Private m_Aktif As Boolean
    Private m_Enabled As Boolean
    Private m_WarnaSatuAktif As Color = Color.Orange
    Private m_WarnaDuaAktif As Color = Color.Yellow
    Private m_WarnaSatuTidakAktif As Color = Color.Blue
    Private m_WarnaDuaTidakAktif As Color = Color.Aquamarine
    Private m_WarnaTeks As Color = Color.White
    Private m_WarnaHoverTeks As Color = Color.Black
    Private m_CursorAktif As Cursor
    Private m_CursorTidakAktif As Cursor
#End Region

#Region "Properties"
    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur bisa diklik atau tidak")> _
    Public Property Enable() As Boolean
        Get
            Return m_Enabled
        End Get
        Set(ByVal Value As Boolean)
            m_Enabled = Value
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur judul teks")> _
    Public Property TeksJudul() As String
        Get
            Return MyBase.Text
        End Get
        Set(ByVal Value As String)
            MyBase.Text = Value
            Me.Invalidate()
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna judul teks")> _
    Public Property WarnaTeks() As Color
        Get
            Return m_WarnaTeks
        End Get
        Set(ByVal Value As Color)
            Me.m_WarnaTeks = Value
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna judul hover teks")> _
    Public Property WarnaHoverTeks() As Color
        Get
            Return Me.m_WarnaHoverTeks
        End Get
        Set(ByVal Value As Color)
            Me.m_WarnaHoverTeks = Value
            Me.Invalidate()
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna aktif gradient kesatu")> _
    Public Property WarnaSatuAktif() As Color
        Get
            Return Me.m_WarnaSatuAktif
        End Get
        Set(ByVal Value As Color)
            Me.m_WarnaSatuAktif = Value
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna aktif gradient kedua")> _
    Public Property WarnaDuaAktif() As Color
        Get
            Return Me.m_WarnaDuaAktif
        End Get
        Set(ByVal Value As Color)
            Me.m_WarnaDuaAktif = Value
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna tidak aktif gradient kesatu")> _
       Public Property WarnaSatuTidakAktif() As Color
        Get
            Return Me.m_WarnaSatuTidakAktif
        End Get
        Set(ByVal Value As Color)
            Me.m_WarnaSatuTidakAktif = Value
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur warna tidak aktif gradient kedua")> _
    Public Property WarnaDuaTidakAktif() As Color
        Get
            Return Me.m_WarnaDuaTidakAktif
        End Get
        Set(ByVal Value As Color)
            Me.m_WarnaDuaTidakAktif = Value
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur cursor ketika teks aktif")> _
    Public Property CursorAktif() As Cursor
        Get
            Return Me.m_CursorAktif
        End Get
        Set(ByVal Value As Cursor)
            Me.m_CursorAktif = Value
        End Set
    End Property

    <Browsable(True), Category("Roel's Appearance"), Description("Untuk mengatur cursor ketika teks tidak aktif")> _
    Public Property CursorTidakAktif() As Cursor
        Get
            Return Me.m_CursorTidakAktif
        End Get
        Set(ByVal Value As Cursor)
            Me.m_CursorTidakAktif = Value
        End Set
    End Property

    <Browsable(False), Category("Roel's Appearance"), Description("Untuk menentukan aktif atau tidak panelnya")> Public Property Aktif() As Boolean
        Get
            Return Me.m_Aktif
        End Get
        Set(ByVal Value As Boolean)
            Me.m_Aktif = Value
        End Set
    End Property
#End Region

#Region "GDI+"
    Private Sub DrawRect(ByVal g As Graphics)
        Dim lgd As LinearGradientBrush
        Dim r As New Rectangle(0, 0, Me.Width, Me.Height)
        If Me.Aktif = True Then
            lgd = New LinearGradientBrush(r, Me.WarnaSatuAktif, Me.WarnaDuaAktif, 270)
            g.FillRectangle(lgd, r)
        Else
            lgd = New LinearGradientBrush(r, Me.WarnaSatuTidakAktif, Me.WarnaDuaTidakAktif, 270)
            g.FillRectangle(lgd, r)
        End If
    End Sub

    Private Sub DrawHeaderText(ByVal g As Graphics)
        If Me.Aktif = True Then
            g.DrawString(Me.Text, Me.Font, New SolidBrush(Me.WarnaHoverTeks), 0, 0, StringFormat.GenericDefault)
        Else
            g.DrawString(Me.Text, Me.Font, New SolidBrush(Me.WarnaTeks), 0, 0, StringFormat.GenericDefault)
        End If
    End Sub
#End Region

#Region "Overrides"
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        Me.DrawRect(e.Graphics)
        Me.DrawHeaderText(e.Graphics)
        MyBase.OnPaint(e)
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
        Me.Invalidate()
        MyBase.OnResize(e)
    End Sub

    Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
        MyBase.OnMouseLeave(e)
        If Me.Enable = True Then
            Me.Aktif = False
            Me.Invalidate()
        End If
        Me.Cursor = Me.CursorTidakAktif
    End Sub

    Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
        MyBase.OnMouseEnter(e)
        If Me.Enable = True Then
            Me.Aktif = True
            Me.Cursor = Me.CursorAktif
            Me.Invalidate()
        Else
            Me.Cursor = Me.CursorTidakAktif
        End If
    End Sub
#End Region

#Region "Events"
    Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
        If Me.Enable = True Then
            MyBase.OnClick(e)
            RaiseEvent On_Click(Me, EventArgs.Empty)
        End If
    End Sub
#End Region

End Class


Share this post: | | | |
Published Friday, July 21, 2006 10:02 AM by yulian
Filed under:

Comments

No Comments
Powered by Community Server (Commercial Edition), by Telligent Systems