Membuat Kontrol ActiveX di Visual Basic 6 (Bagian I)

Visual Basic 6

Kontrol ActiveX Form

kontrol form adalah kontrol-kontrol yang berfungsi mengubah tampilan form, antaralain form untuk mengubah bentuk form, memberi warna pada form, dan kontrol untuk memberi skin seperti halnya program WinAmp yang dapat diganti-ganti skin-nya.

Form Berbentuk Elips
Langkah awal yang akan penulis tunjukkan dari manipulasi form menggunakan kontrol ActiveX adalah membuat form menjadi berbentuk elips. Di sini kita akan menggunakan 4 fungsi dari API
Windows, yaitu:
– CreateEllipticRgn untuk membentuk objek baru berbentuk elips/bulat.
– SetWindowRgn untuk mengubah bentuk form sesuai objek yang telah kita bentuk sebelumnya.
– DeleteObject untuk menghapus objek yang telah kita bentuk dari fungsi pertama.
– CreateRectRgn untuk membentuk objek sesuai bentuk form semula.

Cara penulisan CreateEllipticRgn dan CreateRectRgn adalah sebagai berikut:
Variabel (bertype long) = CreateEllipticRgn(x1, y1, x2, y2)
Variabel (bertype long) = CreateRectRgn(x1, y1, x2, y2)
Keterangan:
x1 = koordinat x pojok kiri atas lingkaran
y1 = koordinat y pojok kiri atas lingkaran
x2 = koordinat x pojok kanan bawah lingkaran
y2 = koordinat y pojok kanan bawah lingkaran
Cara penulisan SetWindowRgn adalah sebagai berikut:
SetWindowRgn(handle, variabel, True)
Handle di sini maksudnya adalah handle dari form ataupun kontrol lainnya yang akan diubah atau disesuaikan bentuknya
(untuk form yaitu Form.hwnd).

Sintaks untuk DeleteObject adalah:
DeleteObject(variabel).
Oleh karena form kita berubah bentuk menjadi elips, kita akan kehilangan bar caption dari form sehingga akan menyulitkan kita untuk menggeser form kita yang tidak memiliki bar caption. Oleh
sebab itu supaya dapat menggesernya maka kita menggunakan 2 fungsi API, yaitu SendMessage untuk mengirim pesan tertentu ke window untuk suatu memanggil proses tertentu dari Windows dan
fungsi kedua, yaitu ReleaseCapture untuk menimbulkan proses tombol mouse.

Keuntungan penggunaan ActiveX di sini adalah saat perancangan program setelah ActiveX ini dimasukkan ke dalam form program kita maka form sudah dapat terlihat berbentuk elips sehingga kita
dapat mengatur letak kontrol-kontrol yang lain di dalam form kita tersebut dalam rangka membuat program EXE seperti gambar berikut ini.

Kontrol ActiveX Form berbentuk ellips

Gambar 1. Form Berbentuk Ellips

Adapun cara membuat kontrol ini sangat sederhana sekali. Kita tidak memerlukan kontrol dari toolbox sama sekali. Di ActiveX Wizard, buatlah Property baru bernama elips dengan jenis data
Boolean bernilai False.
Masukkan kode-kode berikut ini di jendela kode:

1. Di bagian General, masukkan keempat fungsi API, yaitu:

Private Declare Function CreateEllipticRgn Lib “gdi32” (ByVal
X1 As
Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long)
As Long
Private Declare Function CreateRectRgn Lib “gdi32” (ByVal X1
As Long,
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib “user32” (ByVal
hWnd As
Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function DeleteObject Lib “gdi32” (ByVal
hObject As
Long) As Long
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 Declare Sub ReleaseCapture Lib “User32” ()
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2

2. Di bagian Get Elips(), tambahkan:

Atur

sehingga kode selengkapnya menjadi:

Public Property Get Elips() As Boolean
Elips = m_Elips
Atur
End Property

3. Di bagian UserControl_InitProperties tambahkan juga:

Atur

Sehingga kode selengkapnya menjadi:
Private Sub UserControl_InitProperties()
m_Elips = m_def_Elips
Atur
End Sub

4.  Masukkan prosedur-prosedur berikut:
Private Sub UserControl_MouseMove(Button As Integer, Shift As
Integer,_
X As Single, Y As Single)
If Button = 1 Then
ReleaseCapture
SendMessage Parent.hWnd, WM_NCLBUTTONDOWN, _
HTCAPTION, 0&
End If
End Sub
Private Sub UserControl_AmbientChanged(PropertyName As
String)
UserControl.BackColor = Ambient.BackColor
End Sub
Private Sub UserControl_Show()
Atur
End Sub
Sub Atur()
Dim var As Long
Parent.ScaleMode = 3
If m_Elips = True Then
Parent.BorderStyle = 0
var = CreateEllipticRgn(30, 30, Parent.ScaleWidth,
Parent.ScaleHeight)
Else
Parent.BorderStyle = 2
var = CreateRectRgn(0, 0, Parent.Width,
Parent.Height)
End If
SetWindowRgn Parent.hWnd, var, True
DeleteObject (var)
End Sub

5. Silakan kompilasi. Untuk menggerakkannya, tahan mouse pada kontrol dan pindahkan ke mana saja.


Advertisements

, ,

  1. #1 by willy on August 7, 2009 - 7:07 am

    langkahnya bagu

  2. #2 by Data Analysis Robot Youth Licensed on December 23, 2011 - 12:49 pm

    ulasan di blog ini sungguh menarik..
    bisa tolong dijelaskan lebih detail mengenai titik x dan y nya?
    saya ingin membuat form dengan bentuk kotak yang bagian ujung nya berbentuk lingkaran (roundRect), tetapi utk membuat RoundRect, titik x y nya ad 3.. x1,y1,x2,y2, dan x3,y3.. saya tdk mengerti bgmn meletakkan ketiga titik ini.. trims sblmnya utk yg bs memecahkan mslh ini.. 🙂

  3. #3 by suungs on January 27, 2012 - 6:27 am

    master, yang di maksud dengan kalimat ini gimana ya”Di ActiveX Wizard, buatlah Property baru bernama elips dengan jenis data
    Boolean bernilai False.”
    mohon di jelaskan

  4. #4 by Achmad Abdul Wahid on June 23, 2012 - 8:08 am

    Waaahh makashinyah atas pencerahanya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: