Coding4Ever Advanced TextBox
Project baru kebetulan harus saya kerjakan menggunakan Visual Basic .NET dan untuk menghemat kode-kode yang enggak produktif terutama yang berhubungan dengan proses input (khususnya TextBox) seperti proses enter, validasi huruf/angka, pemisah ribuan, dan perubahan warna objek pada saat focus/lost focus akhirnya saya sempatkan waktu untuk membuat komponen ini.
Jadi dengan menggunakan komponen ini menurut perkiraan saya (berarti masih bisa salah
) bisa menghemat kode yang enggak berguna sampai 10-20 %.
Untuk saat ini fitur tambahannya masih minim sih, tapi…. lumayan lah
- Conversion ada 2 pilihan Normal dan UpperCase, jika dipilih UpperCase otomatis input menggunakan huruf besar.
- Numeric Only
- Letter Only
- Thousand Separator/pemisah ribuan, untuk fitur ini masih ada kekurangan yaitu belum mendukung digit decimal.
- Auto Enter, agar fitur ini berfungsi dengan baik maka harus diatur terlebih dulu properties TabIndexnya
- EnterFocusColor
- LeaveFocusColor
- SelectionText
Oke kita lihat dulu demonya
klo udah kita masuk ke bagian dalamnya
Imports System.Drawing
Imports System.Windows.Forms
<ToolboxBitmap(GetType(AdvancedTextbox), "AdvancedTextbox.bmp")> _
Public Class AdvancedTextbox
Inherits System.Windows.Forms.TextBox
#Region ">> Enumerators <<"
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)> _
Public Enum EConversion
Normal = 0
UpperCase = 1
End Enum
#End Region
#Region ">> Declarations <<"
Private mEnterFocusColor As Color = Color.White
Private mLeaveFocusColor As Color = Color.White
Private mIsSelectionText As Boolean = False
Private mIsThousandSeparator As Boolean = False
Private mIsNumericOnly As Boolean = False
Private mIsLetterOnly As Boolean = False
Private mIsAutoEnter As Boolean = False
Private mIsDecimal As Boolean = False
Private mConversion As EConversion
#End Region
#Region ">> Properties <<"
Public Overrides Property MaxLength() As Integer
Get
Return MyBase.MaxLength
End Get
Set(ByVal value As Integer)
If Me.mIsThousandSeparator AndAlso value > 15 Then value = 15
MyBase.MaxLength = Value
End Set
End Property
<System.ComponentModel.Category("AdvancedTextbox Properties")> _
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)> _
Public Property EnterFocusColor() As Color
Get
Return mEnterFocusColor
End Get
Set(ByVal value As Color)
mEnterFocusColor = Value
End Set
End Property
<System.ComponentModel.Category("AdvancedTextbox Properties")> _
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)> _
Public Property LeaveFocusColor() As Color
Get
Return mLeaveFocusColor
End Get
Set(ByVal value As Color)
mLeaveFocusColor = Value
End Set
End Property
<System.ComponentModel.Category("AdvancedTextbox Properties")> _
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)> _
Public Property SelectionText() As Boolean
Get
Return mIsSelectionText
End Get
Set(ByVal value As Boolean)
mIsSelectionText = Value
End Set
End Property
<System.ComponentModel.Category("AdvancedTextbox Properties")> _
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)> _
Public Property ThousandSeparator() As Boolean
Get
Return mIsThousandSeparator
End Get
Set(ByVal value As Boolean)
mIsThousandSeparator = Value
If mIsThousandSeparator Then
mIsNumericOnly = True
Me.MaxLength = 15
Me.TextAlign = HorizontalAlignment.Right
Me.Text = "0"
End If
End Set
End Property
<System.ComponentModel.Category("AdvancedTextbox Properties")> _
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)> _
Public Property NumericOnly() As Boolean
Get
Return mIsNumericOnly
End Get
Set(ByVal value As Boolean)
mIsNumericOnly = Value
End Set
End Property
<System.ComponentModel.Category("AdvancedTextbox Properties")> _
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)> _
Public Property LetterOnly() As Boolean
Get
Return mIsLetterOnly
End Get
Set(ByVal value As Boolean)
mIsLetterOnly = Value
End Set
End Property
<System.ComponentModel.Category("AdvancedTextbox Properties")> _
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)> _
Public Property AutoEnter() As Boolean
Get
Return mIsAutoEnter
End Get
Set(ByVal value As Boolean)
mIsAutoEnter = Value
End Set
End Property
<System.ComponentModel.Category("AdvancedTextbox Properties")> _
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)> _
Public Property Conversion() As EConversion
Get
Return mConversion
End Get
Set(ByVal value As EConversion)
mConversion = Value
End Set
End Property
#End Region
#Region ">> Private Function <<"
Private Function ValidasiAngka(ByVal e As System.Windows.Forms.KeyPressEventArgs) As Boolean
Dim strValid As String = "0123456789"
If Not mIsThousandSeparator Then strValid += "."
If Strings.InStr(strValid, e.KeyChar) = 0 And Not (e.KeyChar = Strings.Chr(Keys.Back)) Then
Return True ' not valid
Else
Return False ' valid
End If
End Function ' ValidasiAngka
Private Function ValidasiHuruf(ByVal e As System.Windows.Forms.KeyPressEventArgs) As Boolean
Dim strValid As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. "
If Strings.InStr(strValid, e.KeyChar) = 0 And Not (e.KeyChar = Strings.Chr(Keys.Back)) Then
Return True ' not valid
Else
Return False ' valid
End If
End Function ' ValidasiHuruf
Private Function HurufBesar(ByVal e As System.Windows.Forms.KeyPressEventArgs) As Char
Return CChar(e.KeyChar.ToString().ToUpper())
End Function ' HurufBesar
Private Sub SeleksiText(ByVal sender As System.Windows.Forms.TextBox)
With sender
.SelectionStart = 0
.SelectionLength = .Text.Length
End With
End Sub
#End Region
#Region ">> Control Events <<"
Private Sub AdvancedTextbox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Enter
If Me.mIsSelectionText Then Call SeleksiText(CType(sender, System.Windows.Forms.TextBox))
Me.BackColor = Me.mEnterFocusColor
End Sub
Private Sub AdvancedTextbox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Me.mIsAutoEnter Then If e.KeyChar = Strings.Chr(Keys.Return) Then SendKeys.Send ("{Tab}")
If Me.mIsNumericOnly Then
If mIsDecimal AndAlso e.KeyChar = "." Then
e.Handled = True
Else
e.Handled = ValidasiAngka(e)
End If
ElseIf Me.mIsLetterOnly Then
If Me.mConversion = EConversion.UpperCase Then e.KeyChar = HurufBesar(e)
e.Handled = ValidasiHuruf(e)
ElseIf Me.mConversion = EConversion.UpperCase Then
e.KeyChar = HurufBesar(e)
End If
End Sub
Private Sub AdvancedTextbox_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Leave
If Me.mIsNumericOnly Then If Not (Me.Text.Length > 0) Then Me.Text = "0"
Me.BackColor = Me.mLeaveFocusColor
End Sub
Private Sub AdvancedTextbox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.TextChanged
mIsDecimal = False
Dim index As Integer = Me.Text.IndexOf(".")
mIsDecimal = Not (index < 0)
If Me.mIsNumericOnly AndAlso Me.mIsThousandSeparator Then
If Me.Text.Length > 0 Then
If Me.Text.Substring(0, 1) = "." Then Me.Text = Me.Text.Replace(".", "")
Dim x As Long = CLng(Me.Text.Replace(",", ""))
Dim strAfterFormat As String = Strings.FormatNumber(x, 0)
If Me.Text <> strAfterFormat Then
Dim pos As Integer = Me.Text.Length - Me.SelectionStart
Me.Text = strAfterFormat
If ((Me.Text.Length - pos) < 0) Then
Me.SelectionStart = 0
Else
Me.SelectionStart = Me.Text.Length - pos
End If
End If
End If
End If
End Sub
#End Region
End Class
Referensi : Extended TextBox Component Class – VB.Net
Selamat MENCOBA







wih mantap..thanks..
banyakin om tentang vb.net nya
Pengennya sih, tapi lagi kehabisan ide nih mau posting apa
mau tanya, bagaimana cara menghilangkan [][] pada saat menyimpan data di texbox (multiline).
Mohon pencerahannya.
thanks
Yang mana om ya? Sy udah coba normal-normal aja, tinggal di set true ajakan property Multilinenya.
yup…klo itu sih udah bisa..tapi klo disimpan ke database..misal yang disimpan dlm textbox tersebut Yudhi..pas di lihat didatabase dan kita tampilin ke texbox hasilnya jadi Yudhi[][]..seperti itu maksud saya..nah tanda[][] itu gimana cara ngilanginnya..
Coba dihilangkan waktu menampilkan aja, ex var alamat ada karakter [][] :
Selamat mencoba
mas tanya nk e book vb.Net Punya nggk… pengen belajar ki… tapi yang bahasa indonesia aj ya.. soale nk bahasa laennya agk du**l je
Enggak punya om, adanya cuma yg bahasa londo :
1. Beginning Object-Oriented Programming with VB 2005 From Novice to Professional
2. Beginning VB 2005 Databases From Novice to Professional
3. Pro .NET 2.0 Windows Forms and Custom Controls in VB 2005
4. VISUAL BASIC 2005 BY PRACTICE
5. Visual Basic® 2005 Design and Development
6. Beginning Visual Basic 2005 Databases
7. Expert One on One.Visual Basic 2005 Database Programming
8. Pro VS 2005 Reporting using SQL Server and Crystal Reports
9. Professional Crystal Reports for Visual Studio.NET 2nd Editon
mas itu sepertinya bisa untuk currency yah, (10,250,000), bisa kasih link downloadnya atau ke email saya. thq sebelumnya
downloadnya disini om.
mas untuk penggunaanya bagaimana yah (ThousandSeparator), masih newbie nih.
Tinggal set aja properties ThousandSeparator = true
terima kasih mas , propertynya saat dimana nih mas, waktu KeyPress atau saat TextChanged.
Ya diset langsung aja om di propertiesnya enggak perlu lewat kode, coba lihat lagi gambar ini, di bagian kanan cari properties ThousandSepartor set nilainya menjadi true (nilai defaultnya false).
terima kasih om, jadi ini ud jadi component, n satu lagi om, untuk menyimpannya koq masih dalam format separator yah, untuk kembali ke nilai normal bagaimana yah. sekali lagi terima kasih banget, akhir saya menemukan yang seperti ini.
Coba seperti ini om :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim harga As Integer = CInt(AdvancedTextbox1.Text) MessageBox.Show (harga.ToString()) End SubJadi yg dipanggil pada saat menyimpan adalah variabel harganya.
Selamat mencoba
TERIMA KASIH OM, SDH BISA SMOGA ADA BALASANNYA.
Mas Bisa bantu untuk membuat Log Activity di VB 6..?
Maksudnya gimana om ? Mau buat aplikasi sejenis Keylogger ya? Klo iya udah banyak samplenya kok
OM Saya mau tanya untuk pembulatan bagaimana yah caranya, misalnya saya punya angka 2,666,666 menjadi 2,700,000 dan kalau untuk 2,133,333 menjadi 2,200,000, mohon solusinya OM.
Coba ini om :
Private Function PembulatanKeatas(ByVal nilai As Integer) As Integer Dim hasil As Integer Dim lengthNumber As String Dim pembagi As String Try lengthNumber = CStr(Len(CStr(nilai)) - 2) pembagi = "1" & New String("0", CShort(lengthNumber)) hasil = nilai Mod CInt(pembagi) If hasil > 0 Then nilai += CInt(pembagi) - hasil Return nilai Catch ex As Exception Return 0 End Try End Function Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click Dim nilai As Integer nilai = 2666666 Debug.Print (nilai & " -> " & PembulatanKeatas(nilai)) nilai = 2133333 Debug.Print (nilai & " -> " & PembulatanKeatas(nilai)) End SubItu bukan algoritma pembulatan standar, tapi baru hasil coba2x saja jadi klo hasilnya ngawur harap maklum
.
OK OM, Cukup mewakili untuk sementara, memang saya butuh pembulatannya di ratusan ribu, terima kasih banget om.
Sama2x om
OM kalau fungsi bawaan .Net tidak ada yah, selain roundup itu, sorry om banyak tanya
coba Math.Ceiling() om
Bang mau tanya deklarasi seperti ini _ fungsi nya buat apa si ?
” _”
baris ke 4 bang maksud saya…
Itu cuma buat pindah baris kok om
maaf bang saya mw tnya bagian ini maksudnya apa ya?? saya masih newbie nh bang butuh pemahaman >,<
Dim strValid As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
If Strings.InStr(strValid, e.KeyChar) = 0 And Not (e.KeyChar = Strings.Chr(Keys.Back)) Then
Return True
Else
Return False
End If
Intinya kode diatas untuk validasi karakter yg diinputkan, hanya karakter yg terdaftar dalam variabel strValid yang bisa diinputkan
owh? dan di bagian if string.instr itu apa bang maksudnya??? itu library dari string atau apa bang??
karya blognya bagus2 bang
InStr itu fungsi bawaan vb6 yg ditambahkan di vb .net gunanya untuk mendapatkan posisi karakter.
Bagaimana caranya nambah componen advance textbox ke project??
1. Klik kanan toobox -> choose item
2. Aktifkan tab .NET Framework Component kemudian browse lokasi file Coding4Ever.AdvancedTextbox.dll
Yang tuk vb 6 ada gak mas admin komponen ya …..??
Ada om, textbox yg dipake Smart Library School mempunyai fitur yg sama dg Coding4Ever Advanced TextBox.
Nama komponennya MyTextBox.ocx
wah thaks buanget om…. Semoga ilmu yg disampaikan om admin mendapatkan balasan yg berkah dari ALLOH SWT …..aammiieennn….
Sekali lg thaks ya om …..
Oke om sama-sama
om admin, combo sama tanggal ya pake komponen apa mas yg di smart library school
Pake komponen NeoCalendar om
Trial ya om …. klw yg combo ya guna’in komponen apa om ?
Iya om, tapi biasalah udah di cr*ck
Klo untuk combonya pake combo biasa cuma diflatin
Gimana om cara cr*ck ya, terus cara flat combo ya …..dr td coba” jajal ttp bingung ….:-)
Ya jelas bingung om, sy salah ngasih link ternyata contonnya pake C#
Klo yg VB 6 disini.
Sory om, sya msh blm paham ….bisa gak om admin yg ksh contoh ya ….
Yg namanya kode itu ya bingungin om klo enggak dicoba langsung
udah dicoba tp hasilnya beda dng combo punya aplikasi smart library om….
Coba properties Stylenya diset 2 – Dropdown List
Ya om thaks, nt sya coba dulu
om klw error kyk gini apa ya maksudnya error gambar
Salah link om sory , ini maksudnya …
thank pak postingan anda sangat membantu……
baru kali ini saya mlihat admin yg bener” ngasih service yg sgt memuaskan..
kayaknya saya akan sering” nongkrong disini….
sukses slalu bwt bapak…..
Kalimat di atas kok kesannya saru ya ?