Иллюстрированный самоучитель по C++ Builder

Информация о программе

Вывод окна О программе выполняет функция обработки события click, которое происходит в результате выбора из меню ? команды О программе (листинг 10.9). Непосредственно вывод окна выполняет метод showModal, который выводит окно как модальный диалог. Модальный диалог перехватывает все события, адресованные другим окнам приложения, в том числе и главному. Таким образом, пока модальный диалог находится на экране, продолжить работу с приложением, которое вывело модальный диалог, нельзя.

Листинг 10.9. Вывод окна О программе.

void fastcall TForml::N4Click(TObject *Sender) {
// "привяжем" окно О программе к главному окну приложения
AboutFom-ХГор=Forml › Top+ Forml › Height/2-AboutForm › Height/2;
AboutForm › Left=Forml › Left+ Forml › Width/2-AboutForm › Width/2;
AboutForm › ShowModal(}; }

Если не предпринимать никаких усилий, то окно О программе появится в той точке экрана, в которой находилась форма во время ее разработки. Вместе с тем, можно "привязать" это окно к главному окну программы так, чтобы оно появлялось в центре главного окна. Привязка осуществляется на основании информации о текущем положении главного окна программы (свойства тор и Left) и о размере окна О программе.

На поверхности формы О программе есть ссылка на сайт издательства. Предполагается, что в результате щелчка на ссылке в окне браузера будет открыта указанная страница. Для того чтобы это произошло, надо создать функцию обработки события onclick для компонента Labels. Значения свойств компонента Labels приведены в табл. 10.6, а текст функции обработки события – в листинге 10.10.

Таблица 10.6. Значения свойств компонента Labels.

Свойство Значение Комментарий
Font.Color clBlue Цвет – синий
Font.Style.Underline true Подчеркивание
Cursor crHandPoint При позиционировании указателя мыши на текст указатель принимает форму руки

Для запуска браузера использована функция shellExecute, которая открывает указанный файл при помощи программы, предназначенной для работы с файлами указанного типа. Так как имя файла в данном случае представляет собой URL-адрес, то будет запущен браузер (тот, который установлен на компьютере пользователя).

Наиболее просто передать URL-адрес в функцию shellExecute можно как строку-константу, например:

ShellExecute(AboutForm › Handle, "open", "http://www.bhv.ru",
NULL, NULL, SW_RESTORE);

Но лучше URL-адрес брать из поля метки. В функцию sheiiExute надо передать указатель на обычную строку, т. е. завершающуюся нулевым символом. Однако свойство caption – это Ansistring. Преобразование строки Ansi в указатель на null terminated string выполняет метод c_str ().

Листинг 10.10. Щелчок в поле URL.

void _fastcall TAboutForm::Label5Click(TObject *Sender)
{
/* наиболее просто передать в функцию ShellExecute
строку-константу (URL-адрес) так, как показано ниже:
ShellExecute(AboutForm › Handle, "open",
"http://www.bhv.ru", NULL, NULL)
Лучше URL-адрес брать из поля метки. В функцию
ShellExecute надо передать указатель на
null terminated-строку, но свойство Caption – это AnsiString.
Преобразование Ansi-строки в char* выполняет метод c_str() */
// открыть файл, имя которого находится в поле Labels
ShellExecute(AboutForm › Handle,"open",Label5 › Caption.c_str(),
NULL,NULL,SW_RESTORE); }

Окно О программе закрывается в результате щелчка на кнопке ОК. Функция обработки этого события приведена ниже.

void fastcall TAboutForm::ButtonlClick(TObject *Sender) {
ModalResult = mrOk; // убрать окно О программе }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.