”Арсеналъ” предлагает новые инструменты

 

Первый взгляд    

Алексей Роговцев

На прошлогодней выставке SofTool’97 компания “Арсеналъ” представила инструмент разработчика Lexicon Toolkit. Это набор динамических библиотек, позволяющих реализовать в любом приложении функции просмотра (или просмотра и редактирования) и печати документов. По словам представителей компании, этот инструмент предназначен в основном для разработки приложений или систем, в которых создаются или просматриваются комплекты документов и для которых использование существующих текстовых процессоров невозможно или нецелесообразно.    

 

Предлагаемый инструмент содержит библиотеки функций, доступных из программ, написанных на языке Си и реализующих практически все возможности текстового процессора “Лексикон-97”. Эти библиотеки позволяют создавать программы просмотра и редактирования документов в форматах Word 6.0/7.0, RTF, Write, “Лексикон” для DOS и Windows, а также DOS- и Windows-текстов.    

 

Библиотеки поставляются как в 16-разрядном (для Windows 3.x), так и в 32-разрядном (для Windows 95 и Windows NT) вариантах. Программный интерфейс библиотек повторяет идеологию интерфейса OLE2, поэтому вся работа в создаваемых приложениях происходит с использованием интерфейсов соответствующих объектов. Всего в библиотеке более 30 таких интерфейсов. Каждый из них соответствует определенному элементу документа (шрифту, абзацу, таблице и т. д.) и предоставляет в распоряжение разработчика определенные методы, с помощью которых можно изменять свойства элементов документа или получать информацию о нем.    

 

Всего в библиотеку входит более 240 методов. Все они разделены на группы в соответствии с тем, к какому интерфейсу они относятся и какие функции выполняют, например:    

 

- инициализация библиотеки и создание основных интерфейсов ILexDocEditor и ILexDocViewer. В эту же группу входят методы инициализации системы печати;    

 

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

 

- интерфейс ILexDocEditor включает в себя методы интерфейса ILexDocViewer и методы редактирования текста. При редактировании текста вы можете изменить параметры шрифта или абзаца, вставить закладки, сноски или рисунки, создать таблицу.    

 

Кроме динамических библиотек в состав Lexicon Toolkit входят наборы служебных файлов, руководство программиста, примеры готовых программ и проектов для их создания. Подразумевается, что примеры программ должны проиллюстрировать возможности Lexicon Toolkit, а файлы проектов  -  показать, как это делается в программе.    

 

С помощью программ я смог просмотреть текстовые файлы, файлы в формате RTF и “родных” форматах “Лексикона”, а в редакторе  -  и внести изменения в них. А вот с файлами Word и Write случилась неприятность  -  кроме окна с сообщением No error occurred (“Ошибок нет”), я ничего не увидел. Что ошибок нет  -  это хорошо, но сам текст-то где?    

 

Запустив редактор текстов, я увидел привычный интерфейс, чем-то похожий на интерфейс программы WordPad или редактора “Лексикон”: те же кнопки, почти те же пункты меню. В чем же разница? В деталях, конечно.    

 

При работе с предложенным примером мне, например, не удалось в каком-либо параграфе задать новый шрифт или изменить параметры старого. Уж если я начал набирать текст прямым шрифтом, то поменять его на курсив или жирный я не мог  -  все мои попытки сделать это с помощью стандартных действий не приводили к желаемому результату. Приходилось действовать нестандартно (что напомнило известную поговорку про левую руку и правое ухо): выделять нужный фрагмент, выбирать пункт меню Format, в нем  -  Font и в первой закладке “Шрифт” менять параметры шрифта. При этом нужно было обязательно поправить и размер шрифта, так как он (размер) почему-то оказывался со знаком минус+    

 

Кроме того, при изменении стиля параграфа надо быть очень осторожным: случайное попадание не на ту закладку приводит к нежелательным последствиям. Например, установив параметры отступа, я (интереса ради) заглянул на закладку “Обрамление”, вернулся обратно к “Отступам и интервалам” и нажал кнопку “Да”. В результате текст параграфа оказался заключенным в рамку, но я же этого не хотел! Было бы лучше, если бы на каждой закладке присутствовала кнопка “Применить” (Apply), с помощью которой можно было бы подтвердить выбор тех или иных параметров, но разработчики по каким-то причинам от использования этой кнопки отказались. И непонятно, почему в закладках по умолчанию выбираются параметры не текущего параграфа или фрагмента, а совсем другие.    

 

Но самое неприятное  -  программа “Редактор текста” дает возможность закрыть файл после всех внесенных в него изменений, даже не спрашивая, нужно ли их запомнить, и, естественно, не сохраняет их.    

 

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

 

В состав Lexicon Toolkit входят файлы проектов для Microsoft Visual C++ 5.0 и Borland C++ 5.02. Поскольку у меня установлен Visual C++, то я проверял примеры именно для него. При компиляции проектов никаких проблем не возникало, но вот просмотреть классы, входящие в проект, мне не удалось. Причем я не смог этого сделать даже с помощью ClassWizard. Описание класса CLexDoc просто не формировалось, а для некоторых других классов (CLexLookApp или CMainFrame) выдавались сообщения об ошибках. Это объяснялось тем, что разработчики в исходных файлах с помощью операторов условной трансляции объединили фрагменты кода как редактора текста, так и программы просмотра файлов. Такой подход, хотя и сокращает число файлов, но, к сожалению, не дает возможности полностью разобраться в том, как работает приложение, созданное с помощью того или иного проекта.    

 

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

 

И еще  -  не считайте эту статью отчетом о недостатках Lexicon Toolkit. Сама идея дать в руки разработчику готовый инструмент для создания приложений, обладающих возможностью просмотра или редактирования текстов, безусловно, заслуживает внимания и реализации. Тем более, что при подобном подходе программисту не придется все делать самому с помощью стандартных функций и классов (например, Visual C++)  -  ему нужно лишь выбрать необходимые функции из библиотеки. Преимущества этого способа очевидны, их даже не нужно обсуждать. Хочется только, чтобы все декларированные возможности Lexicon Toolkit были реализованы в окончательной версии.    

 

Телефон компании “Арсеналъ”: (095) 974-7989, Web-адрес: www.it.ru/arsenal.

P. S. В описании библиотеки Lexicon Toolkit, которую мне любезно предоставили в компании “Арсеналъ”, говорится, в частности, о том, что “+модуль RichEdit Control из библиотеки MFC практически невозможно использовать, если разработчику нужен сколь-нибудьсерьезный модуль редактирования текста”. Мне кажется, это несколько поспешное заявление, и пример программы WordPad, поставляемой с Microsoft Visual C++ 5.0, свидетельствует об боратном.