HtmlLink 组件是类似于网页上超级链接样式的组件,当鼠标移到链接上时就显示手势 
状鼠标,点击链接时能打开相应的程序或网页。
我想做个有这样功能的TLinkLabel组件 就是在一个标签上的文字设置超级链接 我知道用
ShellExecute这个 api可以实现 但重载TLabel的Onclick过程的 时候却提示父类没有这个过程
大家帮帮我 谢谢!!!

解决方案 »

  1.   

    TMyLable = Class(TLable);
    private
      procedure fClick(Sender: TObject);
    public
    end;
    //////procedure TMyLable.fClick(Snder: TObject)
    begin
      ShellExecute('');///
    end;在TMyLabel的Create事件写入
    Self.Onclick := fClick;
      

  2.   

    谢谢你的回复!!!以下是我的代码:
    unit LinkLabel;interfaceuses
      SysUtils, Classes, Controls, StdCtrls,ShellAPI;type
      TLinkLabel = class(TLabel)
      private
        { Private declarations }
        FLinkTo : pchar;
        FMailTo : pchar;
        procedure FOnClick( Sender : TObject );
      protected
        { Protected declarations }
      public
        { Public declarations }
      published
        { Published declarations }
        property LinkTo read FLinkTo write FLinkTo;
        property MailTo read FMailTo write FMailTo;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Standard', [TLinkLabel]);
    end;{ TLinkLabel }procedure TLinkLabel.FOnClick(Sender: TObject);
    begin
      if self.FLinkTo <> nil then
      ShellExecute(handle,
        nil,
        FLinkTo,
        nil,
        nil,
        SW_SHOWNORMAL)
      else if self.FMailTo <> nil then
      ShellExecute(handle,
        nil,
        'mailto:' + FMailTo,
        nil,
        nil,
        SW_SHOWNORMAL)
      else
      ShowMessage( 'LinkTo and MailTo both have value!' );
    end;end.
    但是ShellExecute的handle参数我不知道如何处理呀
    而且这句有错: property LinkTo read FLinkTo write FLinkTo;提示我基类不存在LinkTo
    MailTo也同样有此错还有不少错 我实在不会改……
      

  3.   

    property LinkTo read FLinkTo write FLinkTo;
        property MailTo read FMailTo write FMailTo;
    ////////
    你的LinkTo没有定义类型,应该这样写
    property LinkTo: pchar read FLinkTo Write Flinkto;
    property MailTo: pchar read FMailTo write FMailTo;
    ////////
    至于ShellExecute,你引用forms这个单元...
    之后拿Applicatin.Handle做句柄...
    ShellExecute(Appliation.Handle,nil,nil,...);
    不过可以使用这个winexec;
      winexec('C:\Program Files\Internet Explorer\iexplore.exe http://www.csdn.net',SW_SHOW);
    这样也行
      

  4.   

    非常感谢你的帮助!!!
    但是property LinkTo : pchar read FLinkTo write FLinkTo;
        property MailTo : pchar read FMailTo write FMailTo;
    这里出错 提示我属性linkto和mailto 不能为指针类型
    此外,
    ShellExecute(Application.Handle,
        nil,
        FLinkTo,
        nil,
        nil,
        SW_SHOW)
    这里的SW_SHOW在哪里包含呢 也提示有错 呵呵 我以前不是用delphi的 啥都不懂