Здраствуйте, есть MultiLine ТекстБокс в него считываются посточный текст из файла, но текст занимает больше строк чем размер ТекстБокса, как можно приделать вертикальный скроллбар чтобы им скролить текст?
пока максимум смог определить размерность скролбара..
Private Sub Form_Load()
Dim text As String
Dim a As Integer
Dim F As Byte
F = FreeFile
Open App.Path + "\key_words.txt" For Input As #F
Do Until EOF(F)
a = a + 1
Line Input #F, text
words.text = words.text + text + vbNewLine
Loop
Close #F
words.ToolTipText = words.text
VScroll1.Value = 1
VScroll1.Max = a
VScroll1.Min = 1
VScroll1.LargeChange = 4
VScroll1.SmallChange = 1
End Sub
Есть у ТекстБокса свойство ScrollBars, оно задает
какие линейки будут в ТекстБоксе
Text1.ScrollBars = 0 -без скролов
Text1.ScrollBars = 1 -горизонтальный скрол
Text1.ScrollBars = 2 -вертикальный скрол
Text1.ScrollBars = 3 -и тот и тот.
Vasiliy,Так это у вас VB, а не VBA(судя по Form_Load и VScroll)? Если так, то нужно делать что-то подобное:
Private Sub Form_Load()
With VScroll1
.Value = -32768
.Max = 32767
.Min = -32768
.LargeChange = 100
.SmallChange = 1
End With
End Sub
Private Sub VScroll1_Change()
Text1.Text = VScroll1.Value
Ну а если все-таки VBA, то что-то такого:
Private Sub UserForm_Initialize()
With ScrollBar1
.Value = 0
.Max = 32767
.Min = 0
.LargeChange = 100
.SmallChange = 1
End With
End Sub
Private Sub ScrollBar1_Change()
Text1.Text = ScrollBar1.Value
End Sub
Вы ебята (<- это опечатка!) похоже все нешарите, щас запостить квалиФФицированный специалист )))
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Const WM_VSCROLL = &H115
Private Sub Form_Load()
'Text1.MultiLine = True 'Ðó÷êàìè óñòàíîâèòü!
Private Sub VScroll1_Change()
Call VScroll1_Scroll
End Sub
Private Sub VScroll1_Scroll()
Static pos As Integer
If pos > VScroll1 Then
Call SendMessage(Text1.hwnd, WM_VSCROLL, 0, 0)
ElseIf pos < VScroll1 Then
Call SendMessage(Text1.hwnd, WM_VSCROLL, 1, 0)
End If
pos = VScroll1
End Sub
эээмм только что-то влом искать пример как получить кол-во строчек в мультилайновском текстбоксе ))) поэтому VScroll1.Max = 20 чисто абстрактно, но идея я думаю ясна...