Делаем электронные книги в Визуал Бейсике

Дмитрий Маштаков
  Электронные книги со стихами я начал делать в 2009-м году. Сейчас я проект обновил и о нём расскажу. Мне, да и вам тоже, этот проект может быть интересен не только с практической точки зрения, но и с точки зрения того, как всё это устроено. То есть, с точки зрения программиста.
  На иллюстрации вы видите скрин стандартного окна среды разработки Визуал Бейсик, и готовую книгу Бориса Фэрра, раскрытую на первой странице.

  Концептуально, книга представляет собой «заготовку», в которой есть всё для управления чтением, то есть кнопочки для перехода на соседние страницы, средства для просмотра и перехода по оглавлению, кнопки для прокрутки текста вверх-вниз, средства для изменения размера шрифта и проч. К этой «заготовке» программист пристёгивает текст, тоже специальным образом оформленный.
  Текст этот состоит из обращений к подпрограммам печати заголовка (крупным шрифтом) и к печати собственно строк стихотворения (более мелким шрифтом). Выглядит этот текст так –


CASE 0
'If PP = 1 Then Picture1.PaintPicture Image1, 5, 50, 130, 130
Call TT("Д.Маштаков Стихи ")
Call TT("")
T("май 2022 г.")

CASE 1
'If PP = 1 Then Picture1.PaintPicture Image2, 5, 50, 130, 130
Call TT("Чудо ночь")
Call TT("")
T("Где разросся барбарис, обитает джинн Борис. *")
T("Там, в кустах лежит кувшин, из него выходит джинн.")
T("Собирает как пьянчужка, кислых ягод в свою кружку.")
 Call T("")
T("Давит сок, и пролезает в щёлочку под Вашу дверь,")
T("На подушку проливает этот сок. Пойди, проверь -")
T("Кровь ли это или сок? И чей длинный волосок")
 Call T("")
T("Оказался на подушке? Ночью девочки подружки")
T("Плачут и боятся спать, вдруг кто ночью на кровать")
T("К ним запрыгнет. Хвать за пятку! И утащит не на грядку,")
 Call T("")
T("А туда, где барбарис гроздью красною повис.")
 Call T("")
T("Тихо тихо наступает чудо-ночь, хвосты комет")
T("В темноте прозрачной тают. Им Борис летит вослед...")
 Call T("")
T("_______")
T("*  Борис, это наш сосед по даче. Увлекается электросваркой, ")
T("являясь волонтёром, судит соревнования Формулы 1, слегка лысоват, ")
T("но импозантный мужчина, с чёрной бородой. )) Как и у всякого ")
T("джинна, у него на участке много разных металлических предметов.")
T("___________________")

CASE 2 … и так далее.

  Как вы видите, этот текст хорошо читается. Операторы Call T("") и T("") абсолютно равноценны, но записаны по-разному, с тем, чтобы разделение текста на абзацы было ясно видно.
 
  В случае чего, текст можно править и в таком виде, однако создавать его неудобно. Гораздо лучше, просто скопировать тексты стихов со своих страничек в один общий файл, используя программу Блокнотик. А разделить стихи между собой можно, используя символ «решётка», вот так –

#1
Д.Маштаков Стихи
Книга 2
май 2022 г.
#2
Чудо ночь

Где разросся барбарис, обитает джинн Борис. *
Там, в кустах лежит кувшин, из него выходит джинн.
Собирает как пьянчужка, кислых ягод в свою кружку.

Давит сок, и пролезает в щёлочку под Вашу дверь,
На подушку проливает этот сок. Пойди, проверь -
Кровь ли это или сок? И чей длинный волосок

Оказался на подушке? Ночью девочки подружки
Плачут и боятся спать, вдруг кто ночью на кровать
К ним запрыгнет. Хвать за пятку! И утащит не на грядку,

А туда, где барбарис гроздью красною повис.

Тихо тихо наступает чудо-ночь, хвосты комет
В темноте прозрачной тают. Им Борис летит вослед...

_______
*  Борис, это наш сосед по даче. Увлекается электросваркой,
являясь волонтёром, судит соревнования Формулы 1, слегка лысоват,
но импозантный мужчина, с чёрной бородой. )) Как и у всякого
джинна, у него на участке много разных металлических предметов.
___________________
# … и так далее.

  Как вы видите, вслед за некоторыми знаками «решётка» стоят цифры. Это значит, что тут предусмотрена вставка иллюстрации.
  Программисту не нужно заморачиваться тем, чтобы преобразовать второй текст в первый. Специальная программа CON_T осуществляет это преобразование. По ходу дела, она преобразует запись #2 в запись
'If PP = 1 Then Picture1.PaintPicture Image2, 5, 50, 130, 130 создавая основу для внедрения иллюстраций.

  Чтобы внедрить иллюстрацию программисту нужно поместить на форму элемент «Image», заполнить его изображением картинки и сделать невидимым.
  Затем программист снимает апостроф со строки, описывающей иллюстрацию, и выставляет в этой строке нужные числа, указав на положение иллюстрации на страничке и на её размер (отдельно по горизонтали и вертикали).
  Как видите, программисту особо напрягаться не нужно. Строки, формирующие оглавление, тоже создаются и выводятся в другой файл, а программисту нужно только их скопировать и подсоединить к тексту основной программы. Напоследок остаётся исключительно приятная дизайнерская работа - небольшими указаниями кое-где поправить иллюстрацию или подвинуть текст, да и то, в большинстве случаев этого не требуется.

  Не забыл я и о красотах. Полосочка сверху, которую вы видите на иллюстрации, расширяется и преобразуется в элемент «Picture1», на котором печатается текст и показываются иллюстрации. А четыре кнопочки правее преобразуются вертикальную декоративную полоску, отделяющую элемент «Picture1» от кнопок управления программой.

  Если же говорить об общем интерфейсе проекта, то он направлен именно на восприятие стихов – каждое стихотворение записывается столбиком на отдельной странице и этот столбик можно продвигать вверх-вниз, не нарушая положение иллюстрации. Книга имеет оглавление, а страницы листаются, то есть, переход на соседнюю страницу делается кликами по удобно расположенным кнопкам. Есть кнопка для вывода всего текста книги в простой текстовый файл с записью строк в столбик.
  Тот случай, когда текста чрезмерно много, легко обходится путём дробления текста на отдельные подпрограммы, с разделением длинного списка Case на более мелкие части.

  Первую книгу я сделал с согласия автора, Бориса Фэрра, вот его страничка на сайте стихи.ру - http://stihi.ru/avtor/blud06 скачать эту книгу можно тут - http://disk.yandex.ru/d/v4CjPaTe3LkZXD Вот тут я читаю стихи из этой книги, и вы можете посмотреть, как книга выглядит, и насколько удобно использовать её для чтения стихов - http://youtu.be/-52uHPRBZ1E

  А вот в этой папке находится всё, относящееся к книгам ехе формата - https://disk.yandex.ru/d/KeTiLSWsbu2NVw там есть все сделанные мной книги в отдельном архиве, есть вся «кухня» их изготовления, с исходниками и примерами, а также подробнейшее описание всего процесса изготовления таких книг, в файле пдф формата - http://disk.yandex.ru/i/SHg8MWfcXOGm2A и в формате Ворд - https://disk.yandex.ru/i/NCCwykrncuJ6og

  Видео на эту тему смотрим тут - http://youtu.be/UtA96xBaQ0M

  Если кто заинтересовался – милости прошу. Спасибо за внимание.

__________
21.05.2022