Sunday - July 20, 2008

Home | Site Map | Channels | Profile | Press Room | Services | Contact 

currently 7 user(s) online

search 

   Latest News

»

sony-ak.com Luncurkan Kamus Teknologi Informasi (May 27, 2006)

»

sony-ak.com Luncurkan IT Event Calendar (May 20, 2006)

»

Web Chat Berbasis AJAX dari sony-ak.com (May 09, 2006)

»

sony-ak.com Advertising Program (May 01, 2006)

»

Sony AK di Tabloid PCplus (April 18, 2006)

news archives » 


   Random Article

»

Uraian Singkat: Mengenal Loseless dan Lossy Compression (1860)

»

Bagaimana Caranya Menjadi Seorang Programmer Komputer? (7465)

»

Berbagai Macam WAP Emulator Berbasis Web di Internet (6242)

»

Apa itu Virus Hoax? (5443)

»

Internet Melalui Teknologi TV (8044)

   Newsletter

Join our newsletter, you will get alert about content updates

powered by Yahoo! Groups















Nedstat Basic - Free web site statistics

 
 
Tips Visual Basic: Membuat Kontrol TextBox Anda Menjadi Flat Dengan Windows API

Author: Sony Arianto Kurniawan
Published: August 04, 2002
Visits: 3855 - Category: Visual Basic
 
     
 

Anda pasti pernah menggunakan kontrol TextBox di Visual Basic. Property Appearance pada kontrol TextBox memiliki dua kemungkinan yaitu 3D dan Flat. Secara default property ini akan di set ke 3D. Melalui tulisan ini kita akan mencoba membuat kontrol TextBox Anda menjadi flat seperti tampilan TextBox pada aplikasi MS Office atau Windows XP. OK, sebelum kita lanjutkan, simak dulu pesan-pesan berikut ini.

Tulisan ini bersifat terbuka dan Anda bisa menyebarluaskan atau mengutip dengan bebas seluruh atau secuil dari tulisan ini dengan catatan Anda harus menyebutkan sumber aslinya. Anda bisa memberikan kritik atau saran melalui sony-ak@sony-ak.com. Penulis tidak bertanggung jawab atas segala akibat yang ditimbulkan oleh tulisan ini dan semata-mata tulisan ini hanya demi kepentingan pendidikan.

Code untuk pembuatan flat TextBox-nya penulis ambil dari source code aplikasi EliteSpy+ buatan Andrea Batina. Model flat default yang disediakan oleh kontrol TextBox penulis rasa kurang "enak" dilihat karena tampilannya tidak seperti style "flat"-nya pada MS Office atau Windows XP. Anda bisa lihat perbandingannya seperti di bawah:

Nah, sekarang kita akan membuat flat pada TextBox menjadi seperti gambar TextBox yang kedua seperti pada gambar di atas. Penulis menggunakan Visual Basic 6.0 dalam demo ini. Langkah-langkah -nya adalah sebagai berikut:
Buka Visual Basic Anda dan buat project baru (Standard EXE).
Letakkan sebuah sebuah kontrol Button dan TextBox pada form.
Tambahkan sebuah module pada project. Ini nantinya akan berisi berbagai deklarasi Windows API.
Tuliskan code di bawah ini pada bagian module tadi.

Option Explicit

Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_STYLE = (-16)
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_CLIENTEDGE = &H200&
Public Const WS_EX_STATICEDGE = &H20000
Public Const WS_BORDER = &H800000
Public Const WS_CAPTION = &HC00000
Public Const WS_CHILD = &H40000000
Public Const WS_CLIPCHILDREN = &H2000000
Public Const WS_CLIPSIBLINGS = &H4000000
Public Const WS_DLGFRAME = &H400000
Public Const WS_GROUP = &H20000
Public Const WS_HSCROLL = &H100000
Public Const WS_MAXIMIZEBOX = &H10000
Public Const WS_MINIMIZEBOX = &H20000
Public Const WS_SYSMENU = &H80000
Public Const WS_POPUP = &H80000000
Public Const WS_POPUPWINDOW = (WS_POPUP Or WS_BORDER Or WS_SYSMENU)
Public Const WS_TABSTOP = &H10000
Public Const WS_THICKFRAME = &H40000
Public Const WS_SIZEBOX = WS_THICKFRAME
Public Const WS_VISIBLE = &H10000000
Public Const WS_VSCROLL = &H200000
Public Const WM_CLOSE = &H10
Public Const SWP_FRAMECHANGED = &H20
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_NOZORDER = &H4
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2

Public Sub RemoveBorder(lhWnd As Long)
Dim lStyle As Long
'Get window style
lStyle = GetWindowLong(lhWnd, GWL_STYLE)
'Setup window styles
lStyle = lStyle And Not (WS_BORDER Or WS_DLGFRAME Or WS_CAPTION Or WS_BORDER Or WS_SIZEBOX Or WS_THICKFRAME)
'Set window style
SetWindowLong lhWnd, GWL_STYLE, lStyle
'Update window
SetWindowPos lhWnd, 0, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_NOZORDER Or SWP_FRAMECHANGED Or SWP_NOSIZE Or SWP_NOMOVE
End Sub

Public Sub MakeFlat(lhWnd As Long)
Dim lStyle As Long
'Get window style
lStyle = GetWindowLong(lhWnd, GWL_EXSTYLE)
'Setup window styles
lStyle = lStyle And Not WS_EX_CLIENTEDGE Or WS_EX_STATICEDGE
'Set window style
SetWindowLong lhWnd, GWL_EXSTYLE, lStyle
RemoveBorder lhWnd
End Sub

Tulis code di bawah pada bagian deklarasi umum di Form1

Option Explicit

Private Sub Command1_Click()
MakeFlat Text1.hwnd
End Sub

Jalankan project Anda dengan menekan F5. Kemudian tekan tombol Command1 dan secara otomatis kontrol di sebelahnya akan menjadi flat.
OK, proses perubahan menjadi flat di atas dilakukan dengan cara memanggil prosedur MakeFlat yang kalau kita lihat di dalamnya berisi pemanggilan ke beberapa fungsi-fungsi Windows API seperti GetWindowLong, SetWindowLong dan SetWindowPos. Prosedur MakeFlat sendiri mempunyai sebuat paramater yaitu window handle dari kontrol yang akan diubah tampilannya menjadi flat. Nah Anda bisa coba apply prosedur ini ke kontrol lain selain TextBox. Penulis sudah mencoba meng-apply prrosedur MakeFlat ini ke kontrol Button dan ListBox dan hasilnya kontrol-kontrol tersebut mempunyai efek flat yang menarik. Anda bisa melihat contohnya seperti gambar di bawah ini:

Sekian dulu tulisan kali ini dan semoga berguna bagi pembaca semua. Jika ada komentar, kritik atau saran silakan saja kirim melalui sony-ak@sony-ak.com.

Terakhir penulis tidak lupa untuk mengucapkan terimakasih kepada pihak-pihak berikut:

- Andrea Batina, your EliteSpy+ source code is very great !! Thanks for share it around the world.
- Esa Ivani, thanks for your support and love. I miss you tonight !!

Source code dari project ini bisa Anda download di sini.

Mission completed on 23:40 PM.




 Recommended articles
 

»

Apa Beda "beta" Testing dan "alpha" Testing? (2437)

»

Free Postnuke Hosting di MobyNuke (2564)

»

Dumping dan Restore Database Pada MySQL (3983)

»

E-Book: Cepat Mahir ASP - Bab I Sampai Bab II (4027)

»

Opini Singkat: Microsoft Selalu Memilih Nama yang Mudah Diingat untuk Semua Produknya (1991)

 Send your comments or suggestions
Full Name :
E-mail :
Comments :
 
 

  Privacy | Site Map | Advertise

  Copyright © 2003 - 2006 Sony AK Knowledge Center - all rights reserved

  info@sony-ak.com