Главная » C++, C++ Builder » Конкретный пример: броузер HTML в CBuilder

0

Теперь, когда мы знаем все, что можно знать о работе с управляющими элементами ActiveX (то есть знаем, что они то же самое, что и обычные компоненты), пора использовать их для написания какого-нибудь реального примера для демонстра ции мощи ActiveX и Internet-компонентов CBuilder.

В этом примере мы построим броузер  HTML-страниц,  который  можно  использовать  для просмотра HTML-файлов на вашей локальной станции. Это полезно, так как будущее файлов помощи Windows лежит именно в HTML (согласно Microsoft). Поэтому этот броузер можно расценивать как замену системы помощи Windows. Так что это мощный пример, не правда ли?

Замечание

Полный  исходный  код  для  этого  примера  можно  найти  на  сопроводительном  компакт-диске  в каталоге  Chapter6\HTMLViewer.

На рис. 6.3 представлена форма, с которой мы будем работать в этом проекте. Форма содержит комбинированный список, управляющий элемент HTML (со страницы Internet палитры компонентов), поле ввода, кнопку и поле статического текста (метку). Это все, что нужно для решения задачи.

Процесс, который мы будем использовать, довольно прост. Когда пользователь введет URL (адрес в Internet) в поле ввода и нажмет кнопку Поехали!, мы будем пытаться загрузить HTML-документ.

Если введенный локатор ресурсов (URL) не похож на адрес в Web, мы будем считать, что это имя локального файла на диске. Чтобы так делать, вы должны кое-что понимать о том, как управляющий элемент HTML работает с файлами.

Рис. 6.3. Форма броузера HTML

Если к управляющему элементу HTML попадает правильный локатор ресурсов, он проверяет, существует ли в данный момент подключение к Internet. Если нет, то пытается произойти подключение, настроенное на этого пользователя, отображая стандартное окно диалога подключения с вводом пароля. Если подключение к  Internet  есть,  управляющий  элемент использует интерфейс Internet-соединений (который является частью программного интерфейса Windows 32 API) для создания соединения. В этот момент HTML-файл находится и загружается в броузер.

Более интересный случай, в нашем аспекте, когда файл локален, то есть находится на жестком диске пользователя (или другом механизме хранения данных). Объект HTML, поставленный с CBuilder, содержит механизм запроса документов от сервера (RequestDoc), но, похоже, не имеет прямых способов загрузки данных с локального диска. Внешность, однако, обманчива. Метод RequestDoc управляюще го элемента  HTML умеет на самом деле загружать локальные файлы, если вы знаете, как это сделать. Слава Богу, мы знаем, как это делается.

Добавьте обработчик события для нажатия на кнопку Go! на форме и следующий код в него: void __fastcall TForm1::Button1Click(TObject *Sender)

{

AnsiString s = Edit1->Text;

if ( strstr(Edit1->Text.c_str(),»//») == NULL) s = «File:///» + s;

HTML1->RequestDoc(s); ComboBox1->Items->Add( s );

}

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

действительный http-адрес в формате http://xxx для Internet-адресов. Если же эта строка не найдена, мы предполагаем, что пользователь хотел посмотреть локальный файл. В этом случае мы используем специальный модификатор устройства file: для доступа  к  локальной   файловой системе. Когда управляющий элемент HTML находит модификатор file:, то он относится к оставшейся части адреса как к локальному пути файла (или сетевому пути файла) и пытается открыть этот файл. Чтобы прочитать файл HTML1.HTM в каталоге c:\temp, например, вам нужно использовать строку file://c:\temp\html1.htm. Выглядит смешно, но работает.

Когда строка адреса файла сделана, мы добавляем файл в комбинированный  список  на  верху формы и позволяем пользователю возвращаться к предыдущим документам, просто выбирая их из комбинированного списка в форме. Для того чтобы использовать эту информацию, нам нужно знать, когда пользователь выбирает другой элемент в комбинированном списке. Для этого добавьте обработчик события OnChange комбинированного списка. Добавьте следующий код в метод  ComboBox1Change:

void __fastcall TForm1::ComboBox1Change(TObject *Sender)

{

AnsiString s = ComboBox1->Text; HTML1->RequestDoc(s);

Edit1->Text = s;

}

Этот метод просто берет строку из поля ввода комбинированного списка и передает ее в управляющий элемент HTML. Таким образом, запрошенный файл загрузится в броузер и будет отображен. И наконец, содержимое поля ввода будет изменено на текущую строку текста, позволяя пользователю при необходимости отредактировать адрес.

На рис. 6.4 показано окно запущенного приложения, в котором загружен HTML-файл,

поставляемый вместе с управляющими элементами VC в каталоге CBuilder\OCX\Vci.

Рис. 6.4. Программа броузера HTML в действии

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

управляющие элементы ActiveX на месте.

Источник: Теллес М. – Borland C++ Builder. Библиотека программиста – 1998

По теме:

  • Комментарии