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