寻找能够显示超级连接和Email带下划线的控件,
例如:我打入http://www.playicq.com后该文字自动会变成带兰色的下划线
打入[email protected] 也会自动变成兰色下划线的超连接。
谁有此类控件,救救我吧!
我的mail:[email protected]

解决方案 »

  1.   

    呵呵。这到是个难题啊。可不可以在发现http://和@就将其自动打上下化线呢?
      

  2.   

    自己写呗.这有什么难的.在VC中派生出一个这样的控件.然后给DELPHI用.DELPHI自己也可以达到吧.
      

  3.   

    呵呵,我已经搞定了,这是一个我自己写的小控件,用TEdit控件派生而来
    安装后,它在Samples页上。
    你可以用UnURLColor属性来设置当输入的文字不是URL时的文字颜色
    祝你好运!
    unit UrlEdit;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TUrlEdit = class(TEdit)
      private
        FUnURLColor:TColor;
        //此函数用于判断字符串是不是URL格式的,你可以对它进行扩展,以识别更多的URL格式
        function isURL(theText:String):Boolean;
        Procedure Change(Sender:TObject);
        { Private declarations }
      protected
        { Protected declarations }
      public
        constructor Create(AOwner: TComponent); override;
        { Public declarations }
      published
        { Published declarations }
        //此属性用于设置当输入的文字不是URL时的字体颜色
        property UnURLColor:TColor read FUnURLColor write FUnURLColor;
      end;procedure Register;implementation{ TUrlEdit }
    function TUrlEdit.isURL(theText: String): Boolean;
    var
      aStr:String;
      HttpURL,MailURL,FTPURL:boolean;
    begin
    aStr:=LowerCase(trim(theText));
    result:=false;
    HttpURL:=(pos('http://',aStr)=1) and (length(aStr)>7);
    MailURL:=(pos('@',aStr)>0) and (length(aStr)>pos('@',aStr));
    FTPURL:=(pos('ftp://',aStr)=1) and (length(aStr)>6);
    if HttpURL or MailURL or FTPURL then
      result:=true;
    end;procedure TUrlEdit.Change(Sender: TObject);
    begin
    if isURL(Text) then
      begin
      Font.Style:=Font.Style+[fsUnderLine];
      Font.Color:=clBlue;
      end
    else
      begin
      Font.Style:=Font.Style-[fsUnderLine];
      Font.Color:=FUnURLColor;
      end;
    end;constructor TUrlEdit.Create(AOwner: TComponent);
    begin
      inherited;
    onChange:=Change;
    FUnURLColor:=Clblack;
    end;procedure Register;
    begin
      RegisterComponents('Samples', [TUrlEdit]);
    end;end.
      

  4.   

    如果是label就在form的oncreate事件中对它判断,如果符合要求就winexec或者shellexecute
    如果是edit就在onchange中判断
      

  5.   

    TRichEdit就可以了~~~控件没有,不过以前在CSDN答题,写过一段示例程序,自行封装一下
    http://www.ehomsoft.com/mine/urltest.rar
      

  6.   

    这样写就可以啊:
      shellexecute(handle, nil, 'http://www.ehomsoft.com', nil, nil, sw_normal);
    好像要引用:shellapi