Tuesday, August 9, 2011

Membuat Frame Dari CommandButton Standar - Visual Basic 6

Penjelasan mengenai pembuatan objek Frame dari CommandButton standar - Guna mendukung pekerjaan pada posting sebelumnya, yakni mengenai pembuatan dialog options yang wajar, standar, profesional seperti kebanyakan software-software lainnya (themed TabStrip, themed PictureBox, transparent CheckBox, transparent Frame, transparent OptionButton), ada baiknya Anda mengetahui beberapa fakta berikut dengan memperhatikan gambar di bawah ini:

Gambar: Dialog Mouse Properties yang diambil dari Control Panel Windows XP

Gambar di atas memiliki tiga objek Frame. Nah, disini ada pertanyaan, apakah Frame tersebut benar-benar sebuah Class Frame? Apakah Frame tersebut merupakan sebuah Container? ternyata Frame tersebut bukanlah frame sebenarnya tetapi objek yang berasal dari Class Button dan juga bukan sebuah Container, ini bisa dibuktikan dengan cara melakukan spy terhadap tiga objek frame di atas. [Download EliteSpy+ Andrea Batina]. Dari pengetahuan ini kita bisa meniru tingkah laku properties dialog di atas.

Nah, untuk membuat frame dari CommandButton Anda membutuhkan module API di bawah ini:
'Simpan pada form 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ 
        ByVal hWnd As Long, _ 
        ByVal wMsg As Long, _ 
        ByVal wParam As Long, _ 
        lParam As Any) As Long 
         
Private Const BM_SETSTYLE As Long =  &HF4 
Private Const BS_GROUPBOX As Long = &H7& 
 
'Contoh penggunaan 
Private Sub Form_Load() 
    SendMessage Command1.hWnd, BM_SETSTYLE, BS_GROUPBOX, 0 
End Sub 

Sampai disini, mungkin Anda memiliki pertanyaan, mengapa tidak menggunakan objek Frame standar dan malah menggunakan Frame yang berasal CommandButton? tentu saja jawabannya sederhana, karena CommandButton terhook dengan 'ComCtl32.dll' sehingga ia bisa mengikuti warna TabStrip atau themed PictureBox yang telah dijelaskan terdahulu. bersambung ..

Catatan: Selain Frame yang berasal dari CommandButton, Anda pun bisa menggunakan Frame yang berasal dari XPControl.OCX yang dibuat oleh Mirko Marchese.

Akhirnya, saya ucapkan terima kasih kepada Giorgio Brausi (Gibra) pemilik situs VBCorner atas pengetahuan di atas.

Catatan Penting: Rubahlah property ClipControls pada Form menjadi False, ClipControls = False