|
Вопрос # 1 099/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты! Подскажите пожалуйста, как создать в DELPHI-7 гиперссылку на форме, чтобы запускался браузер или почтовая прога.
 |
Вопрос задал: Серж-1471 (статус: Посетитель)
Вопрос отправлен: 7 ноября 2007, 00:00
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Серж!
Ставим Label на форму.
в список uses добавляем ShellApi;
в OnClick метки добавим код
ShellExecute(Application.Handle,PChar('open'), 'http://www.expert.delphi.int.ru', PChar(0), nil, SW_NORMAL);
Дальше свойство Cursor меняем, что бы получить курсор в виде указательного пальца. Настраиваем свойство font, что бы сделать синего цвета и подчёркивание. И всё, готово.
Что бы запустить почтовую программу, укажите её в виде такой ссылки mailto:somebody@site.ua
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 7 ноября 2007, 01:14
|
Ответ #2. Отвечает эксперт: Feniks
Здравствуйте, Серж!
Держите мой компонент EMailLabel. Событие OnClick обрабатываете как сказал выше Вадим К.
(*///////////////////////////////////////////////////////*)
(*//
(*// Author: Bird Feniks
(*// Company: Group of Developers Software
(*//
(*////////////////////////////////////////////////////////*)
unit EMailLabel;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TEMailLabel = class(TLabel)
private
{ Private declarations }
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('GoD Software', [TEMailLabel]);
end;
{ TEMailLabel }
procedure TEMailLabel.CMMouseEnter(var Message: TMessage);
begin
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;
procedure TEMailLabel.CMMouseLeave(var Message: TMessage);
begin
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
end.
А далее делаем так:
procedure TMyForm.EMailLabelClick(Sender: TObject);
begin
ShellExecute(Handle, nil,
PChar('mailto:' +
EMailLabel.Caption +
'?Subject="Ваша тема по умолчанию"'),
nil,
nil,
SW_SHOWNORMAL);
end;
procedure TMyForm.EMailLabelMouseEnter(Sender: TObject);
begin
with EMailLabel.Font do
begin
Color := clRed;
Style := Style + [fsUnderline];
end;
end;
procedure TMyForm.EMailLabelMouseLeave(Sender: TObject);
begin
with EMailLabel.Font do
begin
Color := clBlue;
Style := Style - [fsUnderline];
end;
end;
Хотя последнии два события можно запихнуть в сам компонент.
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 7 ноября 2007, 09:58
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|