Senin, 19 September 2011

ReleaseCapture Kreasi Tampilan Form Sendiri.

Jika anda berkeinginan membuat tampilan form pada aplikasi anda maka anda harus merubah properties BorderStyle menjadi 0 atau None. Namun hal ini akan menjadikan kaku pada tampilan setelah Run (F5) pada aplikasi anda, ini dikarenakan posisi form anda tidak bisa dipindah kemana-mana pada saat mouse di drag pada form anda.

Hal ini dapat diatasi dengan bantuan dari fungsi win API yaitu :
  • ReleaseCapture
  • SendMessage
Dimana ReleaseCapture akan menghapus Caputure  posisi yang lama dari Form anda dan setelah itu posisi form anda yang baru dibentuk oleh fungsi SendMessage, ini semua terjadi pada Event MouseMove pada komponen anda yang ada pada Form











Seperti gambar contoh form yang sudah saya buat diatas.
Adapun Script Command dari form tersebut :

Private Declare Sub ReleaseCapture Lib "user32" ()
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
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2

Private Function imagecontroller(ByVal image As image)
Button1.Visible = True
closen.Visible = True
image.Visible = False
End Function

Private Sub Button1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Button2.Visible = True
Call imagecontroller(Button1)
End Sub

Private Sub Button2_Click()
End
End Sub

Private Sub closen_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
closes.Visible = True
Call imagecontroller(closen)
End Sub

Private Sub closes_Click()
End
End Sub

Private Sub body_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long
   If Button = 1 Then
      Call ReleaseCapture
      lngReturnValue = SendMessage(frmInput.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
  End If
Button1.Visible = True
End Sub

Private Sub topbar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long
   If Button = 1 Then
      Call ReleaseCapture
      lngReturnValue = SendMessage(frmInput.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
  End If
closen.Visible = True
End Sub

Tampak diatas adanya deklarasi win API yaitu :

Private Declare Sub ReleaseCapture
Private Declare Function SendMessage

Yang dipanggil pada Event MouseMove pada saat anda menekan Klik sebelah kiri maka parameter Button = 1. maka form jika dijalankan atau Run (F5) form tersebut bisa dipindah-pindahkan di drag dengan mouse.

Untuk lebih jelasnya silahkan kirim emai anda  dan saya akan kirim contoh programnya ke email anda.

Jika anda sudah mahir mengolahnya maka untuk pengembangannya anda bisa berkreasi sendiri dengan menambah component Image pada form anda.

Tidak ada komentar:

Posting Komentar