Как загрузить несколько файлов в RichTextBox?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Как загрузить несколько файлов в RichTextBox?

Сообщение GRS » 05.12.2005 (Пн) 8:56

Что скажете?

Смысл такой: в электронной книге есть глава, а в главе 5 разделов и каждый хранится в отдельном файле: Book.001, Book.002, Boo... и т.д.

Выбирая раздел - открываем нужный файл - это понятно. Открываем так:
Код: Выделить всё
RichTextBox.LoadFile "Book.001" '(для примера).

Сложность начинается, если я хочу посмотреть главу: мне надо все пять файлов последовательно отобразить в RichTextBox, но как их туда открыть я не знаю. Пробовал содавать временный файл и последовательно добавлял в него содержимое тех пяти разделов, но это ничего не дает, т.к. у *RTF свои тэги, нарушая их конструкцию - рушится содержимое. А хотелось бы "малой кровью", так сказать.

PS ---> Размер разделов 170-250 листов, т.е. засовывать в переменную файл весом 3 МБ как-то не хотелось бы.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 05.12.2005 (Пн) 12:10

Либо через свойство TextRTF, если оно не возвращает всю RTF-разметку с хидером, либо писать собственный простенький парсер и выбрасывать из файлов хидер, а остальное добавлять в то же самое TextRTF.

Так или иначе, маленького расхода памяти ты здесь не добьешься - если тебе нужно ВСЕ показать, то даже расчитывать на экономию бессмысленно. Правда, лично мне непонятно, зачем показывать содержимое 20 файлов, если юзер больше одного сразу не увидит. Если только для Ctrl+A...

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 05.12.2005 (Пн) 12:35

Делаешь скрытый РичБокс, в который последовательно грузишь необходимые страницы, который после загрузки копируешь в нормальный РичБокс.
Код: Выделить всё
  RichTextBox1.Text = ""
  RichTextBox2.LoadFile "x.rtf", rtfRTF
  RichTextBox1.SelText = RichTextBox2.Text
  RichTextBox2.LoadFile "y.rtf", rtfRTF
  RichTextBox1.SelText = RichTextBox2.Text
...
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 05.12.2005 (Пн) 13:02

TO VI:

ты порбывал то, что написал? Попробуй :evil:

TO Ennor:

к этому я и пришел. Логически. А про "непонимание" хочу сказать, что если пользователь захочет читать всю книгу целиком и рыскать в поисках нужной инфы, то куда удобней, когда вся книга скролится, а не вылетать в меню и выбирать очередной раздел или главу, не так ли?

Всем спасибо.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.12.2005 (Пн) 14:32

Vi, лучше использовать свойство SelRTF. И форматирование сохранится, и лишних тэгов не добавится.
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 05.12.2005 (Пн) 15:05

Нет, не удобней. Человек все равно не сможет увидеть на экране все содержимое одномоментно. Иначе это будет семь шапок из овцы - максимум вторым кеглем. Соответственно, поскольку все он увидеть не сможет, можно это все и не выводить.

Далее, если ты хочешь повышения юзабилити - ну сделай хоткеи "Следующая часть" / "Предыдущая часть", никто ж не мешает. Переключиться на следующий файл по порядку можно кучей способов, и меню, если честно, один из самых раздражающих.

Ну а поиск - так это ж надо в диалоге сделать выбор области охвата, в которой поиск будет производиться. Выделение, текущая часть, вся глава, вся книга - что там у тебя еще есть. Ну а дальше уже твоя работа, как программера...

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 06.12.2005 (Вт) 9:36

...если ты хочешь повышения юзабилити - ну сделай хоткеи "Следующая часть" / "Предыдущая часть", никто ж не мешает. Переключиться на следующий файл по порядку можно кучей способов, и меню, если честно, один из самых раздражающих...


Не могу с тобой не согласиться - так и есть. Благодарю за идею.

И все же, разделы не маленькие и идея в том, чтобы свести на минимум время ожидания от загрузки. При том, если я правильно понял уважаемого Ennor'a, то реализация должна быть такова: существует определеный порядок, очередь разделов и как только пользователь долистывает до конца одного, тут же происходит загрузка следующего, а если он в этот момент тут же возвращается и листает назад - загрузка предыдущего с установкой позиции в конец. так? Тогда торможение неизбежно.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.12.2005 (Вт) 10:13

Еще можно сделать два RTB, видимый и невидимый.
В видимый загружается первая часть. Когда пользователь долистывает до 90%, во второй (невидимый) загружается вторая часть и когда пользователь долистывает до конца (или переключается на следующую часть), то видимый и невидимый RTB меняются местами.

Т.е. алгоритм такой. Есть два RTB, периодически меняющиеся ролями, видимый и невидимый. Когда в видимом позиция установлена в 10% или меньше, то в невидимый грузится предыдущая глава. Когда в видимом позиция установлена на 90% или больше, то в невидимый грузится следующая глава. При дохождении до 0% или 100% они меняются ролями.
Пороги можно изменить, например на 25% и 75%. Делать порог на 50% не рекомендуется.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 06.12.2005 (Вт) 13:04

alibek писал(а):В видимый загружается первая часть.


Что касается книги, то я бы предпочел загружать ее сразу.
Плюс нормальное оглавление с контекстными ссылками и закладками.
В принципе так по нормальному и оформляются книжки в Word или AdobeReader.

Ну а плюс-минус несколько мегабайт в данном случае роли не играют, так что книжку лучше грузить сразу всю целиком...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 146

    TopList