如何在 Delphi 中使用TLinkLabel?

pcww981p  于 2023-10-18  发布在  其他
关注(0)|答案(7)|浏览(209)

我在表单上放置了一个TLinkLabel,并在其中填充了一个包含有效HTML链接的标题,然后得到了一些漂亮的带蓝色下划线的文本。当我运行这个程序时,我希望它调用Firefox(我的默认浏览器)并自动打开链接。显然不是这样的。
帮助文件说我必须在OnLinkClick事件处理程序中对此进行编码。但上面没说怎么做。它将传入一个名为“Link”的字符串值。我怎么说“调用默认浏览器并让它打开链接”?

hgb9j2n6

hgb9j2n61#

你可以调用ShellExecute。我为泛型调用编写了这个方法,并且应该在您的情况下工作。

procedure ShellOpen(const Url: string; const Params: string = '');
begin
  ShellAPI.ShellExecute(0, 'Open', PChar(Url), PChar(Params), nil, SW_SHOWNORMAL);
end;

在你的代码中,你应该把它叫做

procedure TForm1.LinkLabelClick(Sender: TObject);
begin
  ShellOpen(LinkLabel.Caption);
end;
pgpifvop

pgpifvop2#

我有各种各样的问题与TLinkLabel船舶与 Delphi 2010。**a)**控件不呈现为超链接,而是呈现为表单上的简单标签文本。**B)**即使我设置了Cursor属性,光标也没有改变以指出这是一个链接。**c)**OnLinkClick事件根本不会触发。我正在使用Windows 7。
所以,就我而言,TLinkLabel没有做任何事情,因为它应该是无用的。ShellExecute是唯一的解决方案,必须放在OnClick事件中。

yvfmudvl

yvfmudvl3#

TLinkLabel提供了一个标签,它看起来像一个链接。作为程序员,你的工作就是让它像一个链接,因为只有你知道链接在你的程序中应该是什么样子。您希望标签使用标签中的URL自动打开用户的默认Web浏览器,但这并不是链接的唯一功能。举例来说:

  • Internet Explorer不是我的默认浏览器,但当我在Internet Explorer中单击链接时,我不希望链接的页面在Firefox中打开。
  • 当我单击帮助程序中的链接时,我希望链接的主题出现在帮助程序中,而不是出现在任何Web浏览器中。
  • Eclipse中的首选项页面非常复杂。一个页面上的设置有时与另一个页面上的设置相关。这些页面上有链接,可以直接将用户带到相关页面。在这种情况下,没有URL和HTML,但它们仍然是带下划线的文本标签。

一些程序试图提供在新窗口中打开链接与重用旧窗口之间的选择。如果不知道正在使用哪个浏览器,就无法实现该功能。您的程序可能会为用户提供忽略默认浏览器设置并始终使用特定浏览器设置的选择。要做到这一点,你的UI控件不能对程序应该做什么做太多的假设。
我猜你指的是 Delphi 附带的TLinkLabel控件。(我的版本没有这样的组件。)我想 Delphi 控件是为了模仿the one in the .Net class library。它可以容纳多个链接,每个链接可以做不同的事情。
如果你想要一个总是执行shell对URL的默认操作的控件,那么考虑使用不同的TLinkLabel; the one by Alexander Bach完全符合您的预期。它来自于 Delphi 3,但它应该在所有后续版本中也可以工作,包括 Delphi 2009。如果你看一下代码,你会看到它是如何工作的。正如塞萨尔的回答所示,它只是调用ShellExecute

jv4diomz

jv4diomz4#

哈哈,真好笑。因此,而不是设置crHandPoint作为光标,彩色和下划线的字体,并填写OnClick事件标准TLabel,我们有组件,知道链接标签,并在所有我需要提供相同的On(链接)Click事件:))
它唯一的好处是它可以更容易地将链接嵌入到一些文本中,并且它使用系统风格的链接。
p.s.:真的,你必须把Some text with <a href="some URL">link</a>放进Caption,并把OnLinkClick设置为ShellExecute.

fcy6dtqo

fcy6dtqo5#

我使用一个名为TInternetLabel的控件。它做的正是你想要的:点击它打开浏览器,所以你不必把代码放在OnClick事件中。

holgip5t

holgip5t6#

我尝试了这个解决方案,但它仍然给 Delphi XE 4的问题,可能是因为ShellOpen不理解标题中的HTML代码。对我有效的是塞萨尔罗梅罗(基本代码),亚当费斯特纳(标题中的HTML代码)和一个旧的解决方案的组合:

  • 将URL放在HINT字段中。
  • 更改行:ShellOpen(LinkLabel.Caption);toShellOpen(LinkLabel.Hint);

这对我很有效。

fquxozlt

fquxozlt7#

在.标题链接你需要格式化自己在html < a href =.
YT:Delphi 027 LinkLabel / 01 Link

相关问题