pcworld online logo

Liste kutusuna yatay kaydırma çubuğu eklemek!

visual basic resim3 Aralarından seçim yapabileceğimiz verileri listelemek için Liste kutularını kullanırız. Ama eminim aranızda bu kontrolün bir özelliğinden çok yakınanlarınız vardır. Bildiğiniz gibi bu kontrol yatay kaydırma çubuklarını kabul etmez. Ama artık şu meşhur Api fonksiyonlarından birini kullanarak bunun üstesinden gelebiliriz.

 
SendMessage(hWnd%, LB_SETHORIZONTALEXTENT, wParam%, lParam&)

hWnd%   - Liste kutusunun kontrolünü alır
wParam% - Liste kutusunun kaç piksele kadar kaydırılabileceğini
tayin eder.
lParam% - Kullanılmaz
Not: Bu Api fonksiyonu sadece büyük harflerle yazılan sabitle kullanılır.

Bu fonksiyonu daha iyi açıklayabilmek için üzerinde bir liste kutusu bir de komut butonu olan bir form yaratın, sonra da aşağıdaki kodları ilgili yerlere girin.

'Formun General - Declarations bölümüne yazılacak 
ve her sabit tek satırda olacak
Declare Function SendMessage& Lib "user" (ByVal hWnd%, 
ByVal wMsg%, ByVal wParam%, ByVal lParam&)
Declare Function GetFocus Lib "User" () As Integer

Sub Command1_Click ()
Const LB_SETHORIZONTALEXTENT = &H400 + 21 'Sabitler...
Const NUL = &O0
ScaleMode = 3
List1.SetFocus
ListHwnd% = GetFocus()

' İlk karşımıza gelecek değişken
ListString1$ = "PCWORLD "

' Bu değişkeni görebilmek için ise liste
kutusunu yana doğru biraz kaydırmalısınız.
ListString2$ = "Türkiye'de Bir numara !"

ExtraPixels% = TextWidth(ListString2$)
BoxWidth% = TextWidth(ListString1$) + 50

' Liste kutumuzun boyutlarını tekrar belirleyelim
List1.Move List1.Left, List1.Top, BoxWidth%

' Yatak kaydırma çubuğumuzu ekleyelim ve sınırlarını çizelim
X& = SendMessage(ListHwnd%, LB_SETHORIZONTALEXTENT, BoxWidth% +
ExtraPixels%, NUL)

' Örneğimizi liste kutusuna ekleyelim....
List1.AddItem ListString1$ + ListString2$
End Sub

Bu kadar kolay!