Недавно в одной программе я увидел интересный эффект. Как вы знаете, почти каждая программа имеет диалоговое окно "О программе" (About box), так вот, в этом диалоге был простой WWW-адрес типа "http://www.somewhere.com". Когда я перемещал мышь над этим адресом, он становился синим, ну прямо как в HTML-страничке! При щелчке на нем автоматически открывался браузер, установленный по умолчанию в системе, и осуществлялся переход по этому адресу. Кто-нибудь расскажет, как мне сделать такой трюк в моем собственном приложении?
Расположите на форме компонент Label, заголовок которого будет демонстрировать ваш URL (я назвал его URLLabel). Я также назначаю этому компоненту другой цвет, чтобы он отличался от остального текста, расположенного на форме. Затем создайте у нашего компонента обработчик события OnClick следующего вида:
// Как запустить браузер по http-адресу? ShellExecute(Application.Handle,'open','http://www.somewhere.com',nil,nil,0); |
Или же такого:
// Как запустить создание письма по указанному адресу? ShellExecute(Application.Handle,'open','mailto:towho@mysite.com',nil,nil,0); |
Не забудьте указать в списке используемых модулей модуль ShellAPI
Для создания видимости ссылки, я присвоил свойству URLLabel.Cursor значение crAppStart.
Большое спасибо Александру Дзюба за полезные замечания.
Дополнение
Народ часто спрашивает где менять цвет лейблы, поэтому предлагаю немного дополнить ;-) раздел: Разное->Разное->Как мне создать Internet-ссылку в диалоге "О программе"?
Я делаю следующее
// Как запустить создание письма по указанному адресу? uses .... ShellAPI, .... procedure TAboutBox.FormCreate(Sender: TObject); begin Label1.Cursor := crHandPoint; Label2.Cursor := crHandPoint; end; procedure TAboutBox.Label1Click(Sender: TObject); begin ShellExecute(Application.Handle, nil, 'http://www.xxx.com/xxx', nil,nil, SW_SHOWNOACTIVATE); end; procedure TAboutBox2.Label2Click(Sender: TObject); begin ShellExecute(Application.Handle, nil, 'mailto:xxx@xxx.com', nil,nil, SW_SHOWNOACTIVATE); end; procedure TAboutBox.LabelMouseEnter(Sender: TObject); begin with Sender as TLabel do begin if MouseInControl then Font.Color := clLime else Font.Color := clRed; end; end; |
Дополнение прислал Denis V Kravchenko
Fido: 2:4657/25.18
E-mail: denis.k@azovstal.com.ua
http://www.geocities.com/denis_v_kravchenko
Nomadic предлагает сделать еще проще:
uses ShellApi; ShellExecute('mailto:writer@coolware.com'); // Вызывается почтовый клиент по умолчанию, новое письмо. ShellExecute('http://coolware.com'); // Вызывается обозреватель Internet по умолчанию, этот URL. |
[000135]