Membuat Text Pada Msgbox Berwarna dengan GetSysColor

Msgbox atau Message box adalah sebuah popup windows yang banyak sekali digunakan dalam pembuatan aplikasi. Salah satu fungsi dari msgbox ini adalah sebagai windows informasi kepada user, atau digunakn sebagai media konfirmasi kepada user. seperti pertanyaan simpan, informasi Error atau informasi telah berhasil disimpan.

Pada Artikel sebelumnya, ExcelNoob telah membahas bagaimana membuat Msgbox menutup otomatis. Pada kesempatan kali ini, saya ingin membahas bagaimana membuat text atau tulisan pada Msgbox memiliki warna. secara default tulisan dalam msgbox ini adalah berwarna hitam. tetapi kali ini saya akan coba merubahnya dengan warna lain.

Merubah Warna Text Msgbox dengan GetSysColor

Untuk merubah warna tulisan dalam msgbox kita akan menggunakan sebuah Windows API dari user32.dll yg bernama GetSysColor. Silahkan kamu buka Visual Basic Editor dengan cara menekan ALT+F11 dan buatlah sebuah modul, lalu pastekan kode berikut ini

 Visual Basic Editor 
#If Win64 Then
    Private Declare PtrSafe Function GetSysColor Lib "user32"(ByVal nIndex As Long) As Long
    Private Declare PtrSafe Function SetSysColors Lib "user32" _
        (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long
#Else
    Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
    Private Declare Function SetSysColors Lib "user32" _
        (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long
#End If

Private Const COLOR_WINDOWTEXT As Long = 8
Private Const CHANGE_INDEX As Long = 1

Kode diatas adalah deklarasi untuk memanggil Windows API. untuk penggunaan pada Msgbox adalah sebagai berikut.

 Visual Basic Editor 
Public Sub TestWarnaMsgbox()
'// Auth : Excelnoob.com
'// --------------------
Dim Warnadefault As Long

Warnadefault = GetSysColor(COLOR_WINDOWTEXT)

'//Set Warna system ke Merah menggunakan vbred
 SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, vbRed
 MsgBox "Ini adalah Pesan text Merah...", vbCritical + vbOKOnly, "ExcelNoob"

'//selain menggunakan VB color
'//Set warna bisa juga dengan Menggunakan RGB
SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, RGB(51, 204, 204)
MsgBox "Ini adalah pesan dengan warna RGB...", vbCritical + vbOKOnly, "ExcelNoob"

'// Kembalikan warna System ke Asal
SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, warnadefault

End Sub

dan hasilnya akan seperti ini

Kenapa Variable warnadefault ada pada awal dan akhir kode? ini berfungsi untuk mengembalikan warna System kembali ke semula, karena jika tidak dikembalikan, semua text akan menggunakan warna tersebut, seperti contohnya pada gambar dibawah ini

Warna text System pada gambar diatas masih menggunaan vbred sebagai warna COLOR_WINDOWTEXT

Be the first to comment

Leave a Reply

Your email address will not be published.


*