Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> связь полосы прокрутки с текстом, выводимым на фор, текст не перемещается 
V
    Опции темы
Buka1214
Дата 8.5.2013, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.5.2013

Репутация: нет
Всего: нет



Задача почти конкурсная ряд форумов решить ее не могут.
Я самоучка и, видимо, что-то пропускаю в учебниках, либо учебники барахло, поэтому просьба ответ дать в виде кода с комментариями. Необходимо решить именно эту задачу, а не искать обходных путей типа ListBox, TextBox, Grid и т. д.
Суть:
В Microsoft Visual Basic 6.0 на форму в цикле командой Print выводится текст более чем в 100 строк. Установлена полоса прокрутки и ее свойства. При перемещении движка текст не перемещается. При щелчке на полосе прокрутке выводится процедура
Private Sub VScroll1_Change()

End Sub
Видимо в нее надо что-то вставить или как-то связать полосу прокрутки либо с формой, либо с текстом. Вставка Form1 = VScrollBar.Value не помогла.
Как перемещать текст при перемещении движка полосы прокрутки?

PM MAIL   Вверх
Akina
Дата 8.5.2013, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Buka1214 @  8.5.2013,  18:28 Найти цитируемый пост)
что-то пропускаю в учебниках

Именно. Внимательнейшим образом изучите, что из себя представляет объект "Форма" в VB6.

Цитата(Buka1214 @  8.5.2013,  18:28 Найти цитируемый пост)
Задача почти конкурсная ряд форумов решить ее не могут.

Задача - штатными средствами нерешаемая.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Сергейчик
Дата 20.5.2013, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.5.2013

Репутация: нет
Всего: нет



предположу что при движении полосы прокрутки текст тупо перепечатывается
каждый раз уменьшая печатаемых количество строк или увеличивая

или каждый раз печатая с определённой позиции экрана тем самым будет типа эффекта прокручивания?

PM MAIL   Вверх
Сергейчик
Дата 21.5.2013, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.5.2013

Репутация: нет
Всего: нет



Dim a As Integer, b As String
'
Код

Private Sub VScroll1_Change()
b = "ВАШТЕКСТ"
Label1 = VScroll1.Value
If Label1 = 0 Then
    Form1.Cls
    Print b
Else
    Form1.Cls
    For a = 1 To Label1
        Print
    Next a
    Print b
End If
End Sub

незабудь Label1 на форму кинуть или создай ещё одну переменную заместо Label1 
 smile 

Это сообщение отредактировал(а) Akina - 21.5.2013, 07:52
PM MAIL   Вверх
Сергейчик
Дата 21.5.2013, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.5.2013

Репутация: нет
Всего: нет



Вот ваша задача только не на 100 а на 100000 строк? smile  smile 
'кнопка загрузки текста сразу из файла или накопителя 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:44
PM MAIL   Вверх
Сергейчик
Дата 21.5.2013, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.5.2013

Репутация: нет
Всего: нет



Правда такой объём врядли загрузите или циклы может надо переделывать?
а лучше с постепенной подгрузкой. 
я 7000-10000 строк пробывал,в строке 90 символов=900000 символов.

Это сообщение отредактировал(а) Сергейчик - 21.5.2013, 20:00
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0733 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.