GÜNLÜK hayatınızda sık sık karşınıza çıkan, belki de pek dikkat etmediğiniz bir ' arabirim püf noktası' verelim. Windows 95 altında çalışırken Windows Gezgini'ni açtınız diyelim. Karşınıza ince bir çizgiyle ayrılmış iki ayrı pencere gelir. Ortadaki çizgiyi sağa veya sola ötelediğinizde pencereler buna göre yeniden durum alarak ya genişler ya da daralır. Aynı durum formun büyüklüğüyle oynandığında da karşınıza çıkar ve formun yeni büyüklüğüne göre kontroller yeni yerlerini alır.Yukarıda anlattığımız iki işlemi programlarınızda uygulamak pek de zor değildir. Örnek resimde gördüğünüz kontrolleri form üzerinde oluşturduktan sonra liste kutusunun ismini ' listsol' metin kutusunun ismini textsag olarak belirleyin. Form üzerinde bu iki kontrol dışında bir de resim kutusu oluşturarak ismini ' ayirac' olarak atayın.
Programı çalıştırıp ortadaki ayıracı sağa sola kaydırın, formu küçültüp büyültün, tıpkı Windows Gezgini gibi şekil alacaktır.
' Aşağıdaki kodlar boş bir BAS modülünün içinde ' General-Declarations bölümüne yazılacak. Option Explicit Private Const SPLT_WDTH As Integer = 5 Private currSplitPosX As Long Dim CTRL_OFFSET As Integer Dim SPLT_COLOUR As Long ' Aşağıdaki kodlar formun ilgili ' yerlerine yerleştirilecek. Private Sub Form_Load() CTRL_OFFSET = 5 SPLT_COLOUR = &H808080 currSplitPosX = &H7FFFFFFF listsol.AddItem ' Listedeki 1. öğe' listsol.AddItem ' Listedeki 2. öğe' textsag.Text = ' Örnek bir metin' End Sub Private Sub Form_Resize() Dim x1 As Integer Dim x2 As Integer Dim height1 As Integer Dim width1 As Integer Dim width2 As Integer On Error Resume Next height1 = ScaleHeight - (CTRL_OFFSET * 2) width1 = listsol.Width x1 = CTRL_OFFSET x2 = x1 + width1 + SPLT_WDTH - 1 width2 = ScaleWidth - x2 - CTRL_OFFSET listsol.Move x1 - 1, CTRL_OFFSET, width1, height1 textsag.Move x2, CTRL_OFFSET, width2 + 1, height1 ayirac.Move x1 + listsol.Width - 1, CTRL_OFFSET, SPLT_WDTH, height1 End Sub Private Sub ayirac_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If Button = vbLeftButton Then ayirac.BackColor = SPLT_COLOUR currSplitPosX = CLng(x) Else If currSplitPosX <> &H7FFFFFFF Then ayirac_MouseUp Button, Shift, x, y currSplitPosX = &H7FFFFFFF End If End Sub Private Sub ayirac_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) If currSplitPosX& <> &H7FFFFFFF Then If CLng(x) <> currSplitPosX Then ayirac.Move ayirac.Left + x, CTRL_OFFSET, SPLT_WDTH, ScaleHeight - (CTRL_OFFSET * 2) currSplitPosX = CLng(x) End If End If End Sub Private Sub ayirac_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) If currSplitPosX <> &H7FFFFFFF Then If CLng(x) <> currSplitPosX Then ayirac.Move ayirac.Left + x, CTRL_OFFSET, SPLT_WDTH, ScaleHeight - (CTRL_OFFSET * 2) End If currSplitPosX = &H7FFFFFFF ayirac.BackColor = &H8000000F If ayirac.Left > 60 And ayirac.Left < (ScaleWidth - 60) Then listsol.Width = ayirac.Left - listsol.Left ElseIf ayirac.Left < 60 Then listsol.Width = 60 Else: listsol.Width = ScaleWidth - 60 End If Form_Resize End If End Sub