Экспертная система 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)
Текущее время: 26 сентября 2018, 09:42
Выполнено за 0.04 сек.
Рейтинг@Mail.ru