如何在Delphi中使TLinkLabel工作?

Mas*_*ler 11 delphi linklabel

我在我的表单上放了一个TLinkLabel,用一个包含有效HTML链接的标题填充它,并得到一些漂亮的蓝色下划线文本.当我运行程序时,我希望它调用Firefox(我的默认浏览器)并自动打开链接.显然情况并非如此.

帮助文件说我必须在OnLinkClick事件处理程序中对此进行编码.但是,它没有说明如何做到这一点.它将传入一个名为"Link"的字符串值.我怎么说"调用默认浏览器并让它打开链接"?

Ces*_*ero 19

您可以调用ShellExecute.我为通用调用编写了这个方法,并且应该适用于你的情况.

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

在您的代码中,您应该调用它

procedure TForm1.LinkLabelClick(Sender: TObject);
begin
  ShellOpen(LinkLabel.Caption);
end;
Run Code Online (Sandbox Code Playgroud)

  • 您告诉ShellExecute()使用第三个参数执行哪个操作.如果您只指定nil而不是action,则它将使用该第三个参数的默认操作.对于URL,默认值通常是打开的.但是,对于其他事情来说,情况并非如此. (2认同)

dpa*_*ant 7

我在使用 delphi 2010 附带的 TLinkLabel 时遇到了各种问题。 a)该控件不会呈现为超链接,而是呈现为表单上的简单标签文本。b)即使我设置了 Cursor 属性,光标也不会改变以指出这是一个链接。c) OnLinkClick 事件根本不触发。我在 Windows 7 上工作。

所以,就我而言,TLinkLabel什么都不做,也没有用。ShellExecute 是唯一的解决方案,必须放在 OnClick 事件中。

  • 您需要将链接编写为 HTML 超链接标记。这就是让它出现的原因。 (2认同)

Rob*_*edy 6

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

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

有些程序尝试在新窗口中打开链接与重新使用旧窗口之间进行选择.如果不知道正在使用哪个浏览器,则无法实现该功能.您的程序可能会为用户提供忽略默认浏览器设置的选择,并始终使用特定的浏览器设置.要做到这一点,你的UI控件不能对程序应该做什么做太多假设.

我猜你指的TLinkLabel是Delphi附带的控件.(我的版本没有这样的组件.)我想Delphi控件是为了模仿.Net类库中的那个.它可以容纳多个链接,每个链接可以做一些不同的事情.

如果你想要一个总是对shell执行shell默认操作的控件,那么考虑使用不同的TLinkLabel; 亚历山大巴赫的那个完全符合你的期望.它来自Delphi 3,但它应该在所有后续版本中都不会被修改,包括Delphi 2009.如果你查看代码,你会看到它是如何工作的.ShellExecute正如Cesar的回答所示,它简单地称之为.