Anda di halaman 1dari 11

BAB 2 Control ActiveX Form / Windows Region

Ruang Lingkup Pembahasan

Dalam Bab kali ini akan membahas mengenai Windows Region pada pemrograman api .dimana nanti dijelaskan mengenai jenis-jenis manipulasi form, cara penerapannya pada form, beserta contoh program sehingga tampilan form bisa menarik.

Tujuan
Setelah mempelajari bab ini, mahasiswa diharapkan mampu: Memahami tentang Control Activex Form. Mengetahui macam-macam Control Activex Form. Mengimplementasikan Control Activex terhadap form yang dibuat.

2
PENGENALAN WINDOWS REGION 1.1 Latar Belakang Region adalah wilayah/daerah pada form dalam Windows. Manipulasi region pada Visual Basic ini menggunakan Library Gdi32.dll, didalam library Gdi32.dll, menyediakan API untuk memanipulasi region seperti: membuat region kotak, elips, polygon, dsb. Selain membuat region, Library ini juga bisa untuk menggabungkan antara region yang satu dengan yang lain. Manipulasi form ini pada dasarnya bertujuan membentuk form selain bentuk default dari windows. Dengan API region ini kita bisa menciptakan style form yang berbeda.

1.2 Windows Form Region API manipulation region terbagi menjadi beberapa function untuk memanipulasi sebuah form yang mana setiap fungsi memiliki fungsi yang berbeda, jenis-jenisnya yaitu: CombineRgn CreateEllipticRgn CreateEllipticRgnIndirect CreatePolygonRgn CreatePolyPolygonRgn CreateRectRgn

CreateRectRgnIndirect CreateRoundRectRgn OffsetRgn PathToRegion PtlnRegion Pembahasan pertama dalam manipulasi form ini kita akan 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 : 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 : 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. 1.3 Combine Region Pengembangan teknik selanjutnya dari teknik di atas adalah membuat kontrol yang menyebabkan penggabungan dari beberapa gungsi . Untuk membuatnya, kita memerlukan satu lagi fungsi API, yaitu CombineRgn yang yang telah berfungsi terbentuk

menggabungkan

region-region

sebelumnya berdasarkan pola tertentu

Macam-macam pola proses dalam fungsi CombineRgn

Ilustrasi combine

REFERENSI
1. http://fat04.wordpress.com , 02 Oktober 2013, 20.10 2. http://www.downloadebookgratis.com , 02 Oktober 2013, 20.28 3. http://id.wikipedia.org/w/index.php?title= Window_region , 02 Oktober 2013,21.05

1.

Membuat huruf Thailand dengan menggunakan Windows Region pada Visual Basic 6

1.

Pertama buka Visual basic , pilih standart exe . Kemudian setting properties seperti gambar berikut :

Gambar 1.1 Setting Properties 2. Setelah itu maka tampilan form akan berubah .

Gambar 1.2 Tampilan awal form

3.

Klik 2 kali pada area form . kemudian isikan fungsifungsi yang bakal kita pakai nanti . untuk melihat rincian tentang function-function bisa diliat pada API Guide .

Gambar 1.3 Function yang dipakai dalam form 4. Setelah pengisian Fungsi pada form , kemudian pada private sub , isikan source code untuk membentuk huruf thailand yang diinginkan . berikut source code lengkapnya beserta function-nya : 'buat lingkaran elips : Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long 'buat kotak sudut tumpul : Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long 'buat kokmbinasi : Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long 'buat menampilkan : Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) 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 Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_Load() 'HURUF PERTAMA a1 = CreateRoundRectRgn(70, 190, 220, 220, 50, 50) 'garis horizontal(a) a2 = CreateRoundRectRgn(90, 90, 120, 210, 30, 30) 'garis vertikal(b) a3 = CreateEllipticRgn(120, 120, 50, 50) 'bulat luar a4 = CreateEllipticRgn(100, 95, 70, 70) 'bulat didalam '---------------------------------------------------------------------a5 = CreateRoundRectRgn(190, 40, 220, 220, 50, 50) 'garis vertikal(c) a6 = CreateEllipticRgn(220, 80, 150, 10) 'bulat luar a7 = CreateEllipticRgn(200, 55, 170, 30) 'bulat didalam a8 = CreateEllipticRgn(215, 220, 145, 150) 'bulat utk potongan tikungan a9 = CreateEllipticRgn(195, 192, 138, 138) 'bulat dlm utk potongan1 a10 = CreateRoundRectRgn(140, 180, 160, 192, 0, 0) '------------------------------------------------------------------------'------------------------------------------------------------------------'HURUF KEDUA b1 = CreateRoundRectRgn(290, 80, 400, 50, 0, 0) 'garis atas b2 = CreateEllipticRgn(250, 50, 320, 140) ' bulat belok b3 = CreateEllipticRgn(270, 70, 350, 160) 'isi bulatan b4 = CreateRoundRectRgn(270, 135, 370, 105, 0, 0) 'garis bawahnya garis atas b5 = CreateEllipticRgn(330, 105, 400, 215) ' bulat belok b6 = CreateEllipticRgn(300, 125, 380, 205) 'isi bulatan b7 = CreateEllipticRgn(390, 220, 320, 150) 'bulat luar b8 = CreateEllipticRgn(370, 160, 330, 200) 'bulat didalam '-------------------------------------------------------------------------'-------------------------------------------------------------------------'HURUF KETIGA c1 = CreateRoundRectRgn(295, 290, 320, 410, 0, 0) 'garis vertikal c2 = CreateEllipticRgn(320, 320, 250, 250) 'bulat luar c3 = CreateEllipticRgn(300, 295, 270, 270) 'bulat didalam c4 = CreateEllipticRgn(310, 330, 450, 410) ' bulat melengkung

bagian bawah c5 = CreateEllipticRgn(310, 360, 450, 440) ' potongan bulat melengkung bagian bawah c6 = CreateEllipticRgn(447, 410, 377, 340) 'bulat luar yg kanan c7 = CreateEllipticRgn(427, 385, 397, 360) 'bulat didalam yg kanan c8 = CreateRoundRectRgn(375, 255, 400, 380, 0, 0) 'garis vertikal kanan '---------------------------------------------------------------------------'---------------------------------------------------------------------------'HURUF KEEMPAT d1 = CreateEllipticRgn(150, 400, 100, 350) 'bulat luar d2 = CreateEllipticRgn(130, 375, 120, 370) 'bulat didalam d3 = CreateEllipticRgn(150, 400, 100, 330) 'bulat luar 2 d4 = CreateEllipticRgn(250, 400, 120, 320) 'bulat didalam untuk memotong bulat 2 d5 = CreateEllipticRgn(145, 335, 95, 275) 'bulat luar 2 d6 = CreateEllipticRgn(215, 335, 115, 275) 'bulat didalam untuk memotong bulat 2 d7 = CreateEllipticRgn(190, 325, 100, 265) 'bulat lengkungan atas d9 = CreateEllipticRgn(190, 345, 110, 285) 'bulat memotong lengkungan atas d10 = CreateRoundRectRgn(167, 285, 187, 395, 0, 0) 'garis vertikal CombineRgn a1, a2, a1, 2 'kombinasi garis a&b CombineRgn a3, a3, a4, 3 'kombinasi bulat kiri CombineRgn a1, a1, a3, 2 'kombinasi bulat kiri dg garis CombineRgn a5, a5, a1, 2 'kombinasi dg garis c CombineRgn a5, a5, a7, 4 CombineRgn a6, a6, a7, 3 'kombinasi bulat kanan CombineRgn a5, a6, a5, 2 'kombinasi bulat kanan dg garis c CombineRgn a8, a8, a9, 4 'kombinasi bulatan tikungan CombineRgn a5, a5, a8, 2 'kombinasi dg bulatan tikungan CombineRgn a5, a5, a10, 4 '-------------------------------------------------------------------------'-------------------------------------------------------------------------CombineRgn b2, b2, b3, 4

CombineRgn b1, b1, b2, 2 CombineRgn b4, b4, b1, 2 CombineRgn b5, b5, b6, 4 'kombinasi bulatan belok CombineRgn b4, b4, b5, 2 'kombinasi hasil dg bulatan belok CombineRgn b7, b7, b8, 4 CombineRgn b4, b7, b4, 2 'kombinasi hasil jadi '-------------------------------------------------------------------------'-------------------------------------------------------------------------CombineRgn c2, c2, c3, 3 'kombinasi bulat CombineRgn c1, c1, c2, 2 'kombinasi hasil bulat dg garis vertikel CombineRgn c4, c4, c5, 4 'kombinasi bulat melengkung bawah CombineRgn c1, c1, c4, 2 'kombinasi garis vertikal dg bulat melengkung CombineRgn c6, c6, c7, 4 'kombinasi bulat dalam luar CombineRgn c1, c1, c6, 2 'kombinasi garis dg bulatan CombineRgn c1, c1, c8, 2 '-------------------------------------------------------------------------'-------------------------------------------------------------------------CombineRgn d1, d1, d2, 3 'kombinasi bulat CombineRgn d3, d3, d4, 4 'kombinasi mnjdi lengkungan CombineRgn d3, d3, d1, 2 CombineRgn d5, d5, d6, 4 'kombinasi lengkungan kedua CombineRgn d5, d5, d3, 2 CombineRgn d7, d7, d9, 4 'kombinasi lengkungan atas CombineRgn d7, d7, d5, 2 CombineRgn d7, d7, d10, 2 'kombinasi dg garif vertikal CombineRgn a5, a5, b4, 2 'kombinasi kedua huruf CombineRgn a5, a5, c1, 2 'kombinasi ketiga huruf CombineRgn d7, d7, a5, 2 SetWindowRgn Form1.hwnd, d7, True End Sub 'untuk menggerakkan gambar Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ReleaseCapture SendMessage Form1.hwnd, &HA1, 2, 0& End Sub

5.

Setelah itu save project , kemudian jalankan program . maka akan tampil hasil .

Gambar 1.4 tulisan region yang sudah dibuat