Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 099

/ вопрос открыт /

Здравствуйте, уважаемые эксперты! Подскажите пожалуйста, как создать в DELPHI-7 гиперссылку на форме, чтобы запускался браузер или почтовая прога.

Серж-1471 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Серж-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


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:20
Выполнено за 0.03 сек.