Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Как приделать скроллбар к текстбоксу? Добавлено: 27.04.07 00:10  

Автор вопроса:  Vasiliy
Здраствуйте, есть 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


но как его приделать к ТекстБоксу ума не приложу

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 intel-DX



ICQ: 445091742 

Вопросов: 4
Ответов: 169
 Профиль | | #1 Добавлено: 27.04.07 00:48
Есть у ТекстБокса свойство ScrollBars, оно задает
какие линейки будут в ТекстБоксе
Text1.ScrollBars = 0 -без скролов
Text1.ScrollBars = 1 -горизонтальный скрол
Text1.ScrollBars = 2 -вертикальный скрол
Text1.ScrollBars = 3 -и тот и тот.

Ответить

Номер ответа: 2
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #2 Добавлено: 27.04.07 01:15
блин.. сколько часов я потратил..

ну спасибо что сказали - будем знать :)

Ответить

Номер ответа: 3
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #3 Добавлено: 27.04.07 01:42
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

И посмотрите справку по ScrollBar, кое-что есть ;-)

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 28.04.07 00:26
Вы ебята (<- это опечатка!) похоже все нешарите, щас запостить квалиФФицированный специалист )))

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 '&#208;&#243;&#247;&#234;&#224;&#236;&#232; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#232;&#242;&#252;!
    
    Text1 = "1" & vbCrLf & "2" & vbCrLf & "3" & vbCrLf & "4" & vbCrLf & "5" & vbCrLf _
    & "5" & vbCrLf & "6" & vbCrLf & "7" & vbCrLf & "8" & vbCrLf & "9" & vbCrLf & "10" & _
    vbCrLf & "11" & vbCrLf & "12" & vbCrLf & "13" & vbCrLf & "14" & vbCrLf & "15" & _
    vbCrLf & "16" & vbCrLf & "17" & vbCrLf & "18" & vbCrLf & "19" '&#227;&#251; )
    
    VScroll1.Max = 20
End Sub

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 чисто абстрактно, но идея я думаю ясна...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам