Ver la Versión Completa : Necesito un memo que muestre link de paginas web
Durbed
29-10-2005, 02:52:39
Necesito un control similar al memo que cuando escribas dentro de un texto una pagina web, lo marque como un enlace y al picarlo se cargue la pagina web, al estilo del messenger o programas similares.
Un saludo y gracias.
vtdeleon
29-10-2005, 04:05:09
Saludos
No tengo base, porque no lo tengo instalado, pero creo que el Xeditor (www.xeditor.tk) (hecho por dec) usa un componente de la libreria SynEdit (http://synedit.sourceforge.net) el cual cumple con lo que necesitas.
Hola,
(...) usa un componente de la libreria SynEdit (http://synedit.sourceforge.net/) el cual cumple con lo que necesitas.
Ya lo creo que cumple... acaso hasta demasiado. ;)
A ver qué les parece este componente muy basado en los que se citan y en "TRichEdit":
{ *********************************************************************** }
{ }
{ TDecRichEdit - TRichEdit con soporte para Urls }
{ }
{ Copyright (c) 2005 dec - dec@ClubDelphi.com }
{ bajo la licencia GNU GPL >> ver en www.gnu.org }
{ }
{ Créditos: }
{ }
{ TJvRichEdit - (Jedi Library) http://www.delphi-jedi.org/ }
{ TRichEditWithHyperlinks (AuRoom Group - http://auroom.obninsk.ru/) }
{ }
{ *********************************************************************** }
unit UDecRichEdit;
interface
uses
Windows, ComCtrls, RichEdit,
Classes, Controls, Messages,
SysUtils, ShellApi;
type
TDecRichEditClicUrl = procedure(Sender: TObject; const url: string) of object;
type
TDecRichEdit = class(TRichEdit)
private
FAutoAbrirUrls: boolean;
FOnClicUrl: TDecRichEditClicUrl;
procedure CNNotify(var Msg: TWMNotify); message CN_NOTIFY;
protected
procedure CreateWnd; override;
procedure AbrirUrl(const url: string);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property OnClicUrl: TDecRichEditClicUrl read FOnClicUrl write FOnClicUrl;
property AutoAbrirUrls: boolean read FAutoAbrirUrls write FAutoAbrirUrls default true;
end;
procedure Register;
implementation
{ TDecRichEdit }
constructor TDecRichEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FAutoAbrirUrls := true;
end;
destructor TDecRichEdit.Destroy;
begin
inherited Destroy;
end;
procedure TDecRichEdit.AbrirUrl(const url: string);
begin
if url <> EmptyStr then
ShellExecute(Handle, 'open',
PChar(url), nil, nil, SW_NORMAL);
end;
procedure TDecRichEdit.CreateWnd;
begin
inherited CreateWnd;
SendMessage(Handle, EM_AUTOURLDETECT, 1, 0);
SendMessage (Handle, EM_SETEVENTMASK, 0, ENM_LINK);
end;
procedure TDecRichEdit.CNNotify(var Msg: TWMNotify);
type
PENLink = ^TENLink;
var
RT: TextRange;
begin
case Msg.NMHdr^.code of
EN_LINK:
begin
if (PENLink(Msg.NMHdr).Msg=WM_LBUTTONDOWN) then
begin
RT.chrg := PENLink(Msg.NMHdr).chrg;
GetMem(RT.lpstrText, RT.chrg.cpMax - RT.chrg.cpMin + 2);
try
SendMessage(Handle, EM_GETTEXTRANGE, 0, Integer(@RT));
if Assigned(FOnClicUrl) then
FOnClicUrl(Self, RT.lpstrText);
if FAutoAbrirUrls then AbrirUrl(RT.lpstrText);
finally
FreeMem(RT.lpstrText);
end;
end;
Msg.Result := 0;
end;
else {case}
inherited;
end;
end;
procedure Register;
begin
RegisterComponents('Samples', [TDecRichEdit]);
end;
end.
Durbed
29-10-2005, 09:45:09
Muchas gracias eso era justo lo que necesitaba.
Ya que veo que estais tan puestos, a ver si sabeis de un componente que me de un masaje en la espalda http://clubdelphi.com/foros/images/smilies/biggrin.gif (http://clubdelphi.com/foros/images/smilies/biggrin.gif)http://clubdelphi.com/foros/images/smilies/biggrin.gif
vtdeleon
29-10-2005, 09:50:02
Ya que veo que estais tan puestos, a ver si sabeis de un componente que me de un masaje en la espaldaPues ve a ver si lo encuentras en la JVCL:p:p, vaya que si tienen componentens:D:D
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.