【问题标题】:How to make link button in Lazarus?如何在 Lazarus 中制作链接按钮?
【发布时间】:2016-12-19 09:06:36
【问题描述】:

我想在按钮中创建一个超链接。如果该按钮已单击,默认浏览器将打开该链接。我在 Delphi 版本中尝试过,但在 Lazarus 中不起作用。这是我尝试过的代码。如何在 Lazarus 版本中制作它?

Uses ShellApi

begin
ShellExecute (0, 'Open', 'link website', '', '', SW_SHOWNORMAL);
end;

【问题讨论】:

  • 这段代码可以在 Windows 上运行,并且由于 ShellExecute 只存在于 Windows 上,我推测您的目标是 Windows。您收到任何错误吗?当您调用ShellExecute 时,您正在检查错误。你读过它的文档吗?我对此表示怀疑,因为该文档告诉您改为致电ShellExecuteEx。这样做是因为ShellExecuteEx 能够正确报告错误。我的猜测是,您复制了这段代码,却没有真正了解它的作用。这种做法是徒劳的。寻求理解。

标签: pascal lazarus freepascal


【解决方案1】:

ShellExecute 是我从未真正使用过的东西,因为我总是试图让我的程序跨平台。我总是使用 TProcess 或 RunCommand 代替。下面的链接有完整的文档,很不错。

http://wiki.freepascal.org/Executing_External_Programs

如果您真的想使用 ShellExecute,那么我注意到在链接中它确实说明了有关初始化 COM 的以下内容:

ShellExecute 是一个标准的 MS Windows 函数 (ShellApi.h),在 MSDN 上有很好的文档(如果您发现该函数不可靠,请注意他们关于初始化 COM 的评论)。

我希望这会有所帮助。如果没有,我会尽力帮助你。

【讨论】:

    【解决方案2】:

    OpenURL 函数提供了打开链接的最简单的跨平台兼容方式。它在与 Lazarus 捆绑在一起的 LCLIntf 单元中可用。

    例子:

    procedure OnClick;
    var
      found: boolean;
    begin
      found := OpenURL('http://nowhere.loopback.edu');
    end;
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2015-03-16
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 2012-05-02
      • 2016-07-22
      • 2014-04-21
      • 2012-12-11
      相关资源
      最近更新 更多