| 
| 
 | Вопрос # 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
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |