Информация о программе
При выборе из меню ? команды О программе на экране должно появиться одноименное окно (рис. 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; // убрать окно О программе }