Membuat Splitter Control di VB6

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

Setelah mengCopy-Paste kode secara lengkap seperti diatas, sekarang jalankan Project Anda, jika tidak ada error maka hasilnya seperti pada gambar Splitter diatas.

Sekarang saatnya Anda mengeksekusi Splitter dengan mendrag garis tengah dengan tanda garis kanan-kiri dengan menahan sambil mendrag ke kiri atau ke kanan.

No comments: