Вынужден попытаться имитировать HTML (BuilderC++)

Lepsty 18.06.2004 - 11:26 | Такая вот учебная задача: Надо сделать электронную книгу. С оглавлением, щелкая на пунктах которого, будем переходить к нужному разделу. Кто-нибудь чем-то подобным заморачивался? Первое, что приходит в голову - в тексте, предназначенном для отображения в программе расставить метки, которые будут идентифицировать фрагменты текста, но не готов сообразить, каким образом в RichEdit, например, отслеживать, куда ткнул мышью пользователь - на какую из меток? Если в тексте будет так: # Глава 1. То отображать в RichEdit надо только "Глава 1." - без моей служебной информации. Пока в этом и состоит проблема...
Тигренок 1 - 18.06.2004 - 11:41 | а если использовать компонент WebBrowser и хранить HTML - странички? или генерить? и отображать без проблем, щелкать по ссылкам, а переход по ссылке обрабатывать, например, по-своему...
Тигренок 2 - 18.06.2004 - 11:45 | а если нужно все вручную делать, можно тогда парсить метки, запоминать строку, символ, длину метки и куда переходить, а текст выводить без меток, потом при щелчке узнать строку и столбец, ну и узнать в какую область попали и перейти куда надо.... только коряво будет...
Lepsty 3 - 18.06.2004 - 11:59 | Вручную надо. Задача же учебная - нерадивой студентке (зато человек хороший) помочь надо. Насчет WebBrowser - идея хорошая, но я с ним дела не имел, хотя попробовать можно. Для генерации HTML-страниц есть какая-нибудь программа? И что-то в CppWebBrowser компоненте я не нашел свойства, куда подсунуть адрес открываемого файла... А насчет вручную - так примерно и задумал, но проблема в том, что в зависимости от размеров RichEdit строки-столбцы съезжать будут и с наскока не получилось определять координаты места, куда ткнули мышью
Lepsty 4 - 18.06.2004 - 12:24 | Попробовал WebBrowser-ом - слишком просто. У них заведение, конечно, не ахти какое, но боюсь, что в исходники все же заглянут.
starfair 5 - 18.06.2004 - 12:31 | Ну я делал такое. Только я на самом деле сделал аналог html языка. С гиперссылками и всем таким. Тут или все просто, через встреоеные средства, или все очень сложно, как я писал. А на счет среднего, хм ну можно попробывать конечно через COM интерфесы замутить, но смысл? Можно еще один вариант конечно подсказать - например просто свой формат сделать. К примеру в начале обычного плайн текста добавить секцию, по типу Заголовок -смещение в байтах от начала. Ну и потом просто заголовоки отображать отдельно, и по выбору заголовка просто загружать в тот же RechEdit кусок текста от текущего смещения в байтах до начала следующего куска текста, на который указывает следующий заголовок. Парсер в принципе - раз плюнуть сделать. Да и заголовки тоже можно в стандартном списке реализовать, если уж неохото заморачиавться с чем то более красивым но сложным
Lepsty 6 - 18.06.2004 - 12:38 | (5) "...в начале обычного плайн текста добавить секцию..." - вот как раз то, что нужно. Но как потом отслеживать, в какую ссылку (и в ссылку ли) мышью ткнул? Заголовки отображать отдельно - если имеется в виду не в том же RicHEdit - это не пойдет - на книгу похоже не будет
Sabrian 7 - 18.06.2004 - 13:06 | Совет такой: разберись с RTF форматом, он очень простой. Просто сохраняй документы Wordpadom, а открывай блокнотом. Через час научишся фигарить rtf прямо в блокноте. В программе генерируй rtf поток и загружай в RichEdit (методом LoadFromStream), так у тебя будет много возможностей по своему обрабатывать любые данные. Но конечно проще юзать WebBrowser, а на диске HTML файлы хранить.
starfair 8 - 18.06.2004 - 13:42 | Sabrian, ну ты загнул однако! Я тут для своих целей браузер RTF формата упрощеного делал, так что со спецификацией знаком в принципе не плохо. Русский текст как фигачить прикажешь? Если он поддерживается только в hex формате?! (сами литеры) Да и форматирование на лету - задача не для слабонервных. Хороший совет, ничего не скажешь :( И главное, RichEdit переход по гиперссылкам не поддерживает, просто потому что их нет в самой спецификации RTF! Как раз таки никаких проблем нет. Подменяй ричедит контрол списком, когда надо возвращаться к оглавлению. Выбор главы - соответсвенно вросто выбор строки в списке и соответсвующая обработка события. Ну если ты программист, и сам все сообразижь короче :)
Старый UE 9 - 18.06.2004 - 15:00 | 2Lepsty, ну и что с того, что WebBrowser'ом проще? Цель-то какая? Реализовать электронный учебник? Вот и используй адекватные средства - так всем будет лучше. Используя WebBrowser, помимо всего прочего ты сможешь навставлять в странички ActiveX'ы - на случай, если тебе чего-то не будет хватать. Или Java-апплеты :) Так что HTML - это, пожалуй, лучий выбор для написания учебника + Java-апплеты/ActiveX'ы, которые ты сам можешь реализовать, для получения доп. функциональности. Еще один бонус - учебник можно выложить в сети. А можно собрать в chm-файл. А можно сделать свою оболочку. Да все что угодно, а главное - дешево. И знакомой своей легко будет объяснишь что к чему ;)
faberge 10 - 18.06.2004 - 15:22 | Аналогичное задание делаем - интерактивный курс по оптике с демонстрациями опытов... Раскидали на 3 человек - один делает среду, похожую на IE, но только под нужды производства. Там панелька с навигацией и на табах выносятся главы+дерево самого курса. Сама структура курса описана в xml - документе. Остальные программят ActiveX компоненты, которые потом через тег object пихаются на html - страницу. Получается теория... а в конце форма с демонстрацией, ну там кнопки, спины всякие, чертеж.. че - то вертится - крутится ;) IMHO RTF в этом плане мне кажется менне гибок. Не нужно изобретать велосипед... Имеем дело с гипертекстом, ну или как его там.. вот и использую html. А CSS позволяет делать все более удобным. Замутишь разные "скины" - преподы выпадут. Им это только и надо , чтоб там красиво было, что - то где - то белаго... ;) А заведение - то тут причем?! Ну посмотрят код - да, просто. Но эффективно, красиво и настраивается бысто. Ибо всегда можно сказать - за этим будущее, так делают и т.д. Еще проще просто перемутить все в "сайт" и открывать в IE 8] Твоя задача - преподать все это красиво... Как говориться, ты просто не умеешь их готовить...
Deflorator 11 - 18.06.2004 - 16:44 | честно говоря, я тоже не понял, почему использование стандартного хтмл не подойдет. кого волнует исполнение? задача поставлена, а как она будет выполнена - имхо не дело смотрящего. в то же время, использование общедоступных и известных технологий плюс есть, окромя того, скорость исполнения, простота.... вопрос: зачем ваять велик? (с)
siapk 12 - 18.06.2004 - 21:16 | позвони 535381 спроси Алексея... он тебе даст аналог Wordа с исходниками... с возможностью автоматической многоуровневой простройки оглавлений.... Это как раз то что тебе надо!!!
archimag 13 - 19.06.2004 - 01:00 | Что-то я не пойму, почему например HTML Help Workshop не подходит? по моему очень удобно получается, зачем такие сложности?
faberge 14 - 19.06.2004 - 01:07 | archimag, судя по четвортому посту проблема в том, что ни Lepsty не представляет что от него требуется, ни сами преподы... Ты уж действительно определись - тебе электронная книга нужна или аналог Wordа с исходниками...

>>