Советы по Delphi


Как мне создать Internet-ссылку в диалоге "О программе"?


Недавно в одной программе я увидел интересный эффект. Как вы знаете, почти каждая программа имеет диалоговое окно "О программе" (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]




Начало  Назад  Вперед