Pada artikel kali ini Admin akan berbagi sebuah kode yang berfungsi untuk membuat sebuah Splitter.
Splitter ini berfungsi untuk menyesuaikan ukuran panel dengan cara menyeret pemisah diantara dua area.
Untuk lebih jelasnya tentang Splitter perhatikan gambar dibawah ini :
Contoh Splitter di vb6 |
Setelah kita mengetahui bagaimana bentuk splitter, sekarang kita akan membuatnya dengan menggunakan vb6 dengan hasil yang sama seperti gambar diatas.
Berikut adalah langkah-langkah cara membuat Splitter Control menggunakan vb6 :
1. Buka Form VB6 Standar EXE
2. Pada Form tanamkan control berikut :
3 PictureBox masing-masing dengan urutan :
PictureBox1 beri Name:picLeft letakan disebelah kiri
PictureBox2 beri Name:picRight letakan disebelah kanan
PictureBox3 beri Name:picSplitter letakan ditengah antara Picturebox1 dan 2, width:30
Desain Form |
3. Tambahkan 1 buah Module
4. Pengkodean :
Pada bagian Module1 tambahkan kode dibawah ini :
Type POINTAPI
X As Long
Y As Long
End Type
Pada kode Form1 pilih (General) - (Declarations), lalu Copy-Paste kode dibawah ini :
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private IsDragging As Boolean
Private InitialX As Long
Private Sub Form_Load()
picLeft.Move 0, 0, Me.ScaleWidth / 2, Me.ScaleHeight
picSplitter.Move picLeft.Width, 0, 5, Me.ScaleHeight
picRight.Move picSplitter.Left + picSplitter.Width, 0, Me.ScaleWidth - picSplitter.Left - picSplitter.Width, Me.ScaleHeight
picLeft.BackColor = vbRed
picRight.BackColor = vbWhite
picSplitter.BackColor = vbGreen
picSplitter.Width = 30
End Sub
Private Sub picSplitter_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Dim pt As POINTAPI
GetCursorPos pt
ScreenToClient Me.hwnd, pt
InitialX = pt.X
SetCapture picSplitter.hwnd
IsDragging = True
End If
End Sub
Private Sub picSplitter_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If IsDragging Then
Dim ptCurrent As POINTAPI
GetCursorPos ptCurrent
ScreenToClient Me.hwnd, ptCurrent
Dim DeltaX As Long
DeltaX = ptCurrent.X - InitialX
' Hitung lebar baru untuk panel kiri
Dim NewWidth As Long
NewWidth = picLeft.Width + DeltaX
' Batasi ukuran minimum dan maksimum
If NewWidth < 50 Then NewWidth = 50
If NewWidth > Me.ScaleWidth - picSplitter.Width - 50 Then NewWidth = Me.ScaleWidth - picSplitter.Width - 50
' Update ukuran panel dan posisi splitter
picLeft.Width = NewWidth
picSplitter.Left = picLeft.Left + picLeft.Width
picRight.Left = picSplitter.Left + picSplitter.Width
picRight.Width = Me.ScaleWidth - picRight.Left
InitialX = ptCurrent.X ' Perbarui posisi awal
End If
End Sub
Private Sub picSplitter_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
IsDragging = False
End Sub
Private Sub Form_Resize()
On Error Resume Next ' Hindari error jika kontrol belum diinisialisasi
picLeft.Height = Me.ScaleHeight
picSplitter.Height = Me.ScaleHeight
picRight.Height = Me.ScaleHeight
picRight.Width = Me.ScaleWidth - (picSplitter.Left + picSplitter.Width)
End Sub
No comments:
Post a Comment