Программирование с C++ Builder



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



При выборе из меню ? команды О программе на экране должно появиться одноименное окно (рис. 10.16).



Рис. 10.16. Выбрав ссылку, можно активизировать браузер и перейти на страницу издательства


Чтобы программа во время своей работы могла вывести на экран окно, отличное от главного (стартового), нужно добавить в проект форму. Делается это выбором из меню File команды New form . В результате выполнения команды New form в проект добавляется новая форма и соответствующий ей модуль.

Если в проекте несколько форм, то для того чтобы получить доступ к нужной форме и, соответственно, к модулю, надо выбрать имя нужной формы в списке диалогового окна View Form (рис. 10.17), которое становится доступным в результате щелчка на командной кнопке View Form (рис. 10.18) или нажатия комбинации клавиш <Shift>+<F12>.



Рис. 10.17. Выбрать нужную форму можно в списке окна View Form



Рис. 10.18. Командная кнопка View Form


Вид формы AboutForm после добавления необходимых компонентов приведен на рис. 10.19, значения ее свойств — в табл. 10.5.

Таблица 10.5. Значения свойств формы О программе


Свойство

Значение

Name

AboutForm

Caption

O программе

BorderStyle

bsSingle

Borderlcons.biSystemMenu

false

Borderlcons.biMininize

false

Borderlcons.biMaximize

false
 



Рис. 10.19. Форма О программе


Вывод окна О программе выполняет функция обработки события 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; // убрать окно О программе }