| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > связь полосы прокрутки с текстом, выводимым на фор |
| Автор: Buka1214 8.5.2013, 17:28 |
| Задача почти конкурсная ряд форумов решить ее не могут. Я самоучка и, видимо, что-то пропускаю в учебниках, либо учебники барахло, поэтому просьба ответ дать в виде кода с комментариями. Необходимо решить именно эту задачу, а не искать обходных путей типа ListBox, TextBox, Grid и т. д. Суть: В Microsoft Visual Basic 6.0 на форму в цикле командой Print выводится текст более чем в 100 строк. Установлена полоса прокрутки и ее свойства. При перемещении движка текст не перемещается. При щелчке на полосе прокрутке выводится процедура Private Sub VScroll1_Change() End Sub Видимо в нее надо что-то вставить или как-то связать полосу прокрутки либо с формой, либо с текстом. Вставка Form1 = VScrollBar.Value не помогла. Как перемещать текст при перемещении движка полосы прокрутки? |
| Автор: Akina 8.5.2013, 20:35 |
Именно. Внимательнейшим образом изучите, что из себя представляет объект "Форма" в VB6. Задача - штатными средствами нерешаемая. |
| Автор: Сергейчик 20.5.2013, 22:25 |
| предположу что при движении полосы прокрутки текст тупо перепечатывается каждый раз уменьшая печатаемых количество строк или увеличивая или каждый раз печатая с определённой позиции экрана тем самым будет типа эффекта прокручивания? |
| Автор: Сергейчик 21.5.2013, 00:08 | ||
| Dim a As Integer, b As String '
незабудь Label1 на форму кинуть или создай ещё одну переменную заместо Label1 |
| Автор: Сергейчик 21.5.2013, 19:35 |
| Вот ваша задача только не на 100 а на 100000 строк? 'кнопка загрузки текста сразу из файла или накопителя lдля вас не делал поэтому из окна Textboxa туда копируете и загружаете. ' Dim A, B As Integer Dim D(100000), C As String Private Sub Command1_Click() C = Text1.Text A = 0 Do Until A = Len© A = A + 1 If Mid$(C, A, 2) = vbCrLf Then C = Mid$(C, 1, A - 1) & Mid$(C, A + 2, Len© - A - 1): A = A - 1 Loop Text1.Text = "" A = 0 Do Until A = Int(Len© / 90) + 1 A = A + 1 If A = 1 Then D(A) = Mid$(C, 1, 90) If A > 1 Then D(A) = Mid$(C, (A * 90) / 2 + 1, 90) If A > Int(Len© / 90) Then D(A) = Mid$(C, A * 90 - 89, Len© - ((A - 1) * 90) + 1) Loop End Sub ' Впрокрутку вставляем Private Sub VScroll1_Change() Form1.FontSize = 8 Label1 = VScroll1.Value Form1.Cls Print , vbCrLf + vbCrLf For B = Label1 To Label1 + 45 Print , D(B) '(следующая строка в одну строку) If B > A Then Form1.Cls: Form1.FontSize = 25: Print , vbCrLf + vbCrLf: Print , "Конец": Print , "Загрузите новый файл": Print , vbCrLf + vbCrLf: Print , "Конец": Print , "Загрузите новый файл": Print , vbCrLf + vbCrLf: Print , "Конец": Print , "Загрузите новый файл" Next B End Sub 'Кнопка загрузки снизу с права 1/3-ть экрана текстбокс и слева от него прокрутка. |
| Автор: Сергейчик 21.5.2013, 19:59 |
| Правда такой объём врядли загрузите или циклы может надо переделывать? а лучше с постепенной подгрузкой. я 7000-10000 строк пробывал,в строке 90 символов=900000 символов. |