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