Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 4736|回复: 3

Lazarus 窗体中嵌套web浏览器的方法

[复制链接]

该用户从未签到

发表于 2013-11-12 15:16:36 | 显示全部楼层 |阅读模式
这里我们介绍一些关于在一个Pascal程序窗体中显示或者通过调用浏览器来显示网页的组件。
通过浏览器打开一个页面显示OpenURL

OpenURL是最简单的一个方法,通过一个方法检查默认浏览器,然后通过传递参数来打开它。在窗体中可以是'mailto:aname@anaddress?subject=:::a subject',或者是一个网站地址"http://"或者"https://"

uses LCLIntf; ... OpenURL('http://www.lazarus.freepascal.org');查找默认浏览器

在每个平台上面都有它不同的默认浏览器,在LCL unit lazhelphtml中保函了一个THTMLBrowserHelpViewer来启动一个浏览器来查看LCL帮助系统。你可以使用他的FindDefaultBrowser方法来查找默认浏览器,然后传递参数来启动他,例如:

  1. uses
  2.   Classes, ..., LCLProc, LazHelpHTML;

  3. ...

  4. implementation

  5. procedure TMainForm.Button1Click(Sender: TObject);
  6. var
  7.   v: THTMLBrowserHelpViewer;
  8.   BrowserPath, BrowserParams: string;
  9. begin
  10.   v:=THTMLBrowserHelpViewer.Create(nil);
  11.   v.FindDefaultBrowser(BrowserPath,BrowserParams);
  12.   debugln(['Path=',BrowserPath,' Params=',BrowserParams]);
  13.   v.Free;
  14. end;
复制代码

给出的例子,在Linux中:

Browser=/usr/bin/xdg-open Params=%s

Windows中你可以获取:

Browser=C:\windows\system32\rundll32.exe Params=url.dll,FileProtocolHandler %s

打开一个浏览器

你可以使用TProcessUTF8通过命令行来启动一个浏览器:

  1. uses
  2.   Classes, ..., LCLProc, LazHelpHTML, UTF8Process;

  3. ...

  4. implementation

  5. procedure TMainForm.Button1Click(Sender: TObject);
  6. var
  7.   v: THTMLBrowserHelpViewer;
  8.   BrowserPath, BrowserParams: string;
  9.   p: LongInt;
  10.   URL: String;
  11.   BrowserProcess: TProcessUTF8;
  12. begin
  13.   v:=THTMLBrowserHelpViewer.Create(nil);
  14.   try
  15.     v.FindDefaultBrowser(BrowserPath,BrowserParams);
  16.     debugln(['Path=',BrowserPath,' Params=',BrowserParams]);

  17.     URL:='http://www.lazarus.freepascal.org';
  18.     p:=System.Pos('%s', BrowserParams);
  19.     System.Delete(BrowserParams,p,2);
  20.     System.Insert(URL,BrowserParams,p);

  21.     // start browser
  22.     BrowserProcess:=TProcessUTF8.Create(nil);
  23.     try
  24.       BrowserProcess.CommandLine:=BrowserPath+' '+BrowserParams;
  25.       BrowserProcess.Execute;
  26.     finally
  27.       BrowserProcess.Free;
  28.     end;
  29.   finally
  30.     v.Free;
  31.   end;
  32. end;
复制代码
内嵌浏览器组件到程序

使用Turbopower互联网控件

lazarus提供一个TurboPowerIPro包(lazarus/components/turbopower_ipro/turbopoweripro.lpk)保函下面功能:

  • It contains a control to put onto a form. When you install the package in the IDE, you get some new components in the palette, so you can drop them onto a form just like any LCL control.
  • It is written completely in Pascal and therefore works on all platforms out of the box without any extra installation.
  • You have the full control, what files/urls are opened.
  • It does not have all the features of a full webbrowser. No multimedia stuff, javascript or flash. This must be implemented by you.
同样里面保函一个查看html中保函图像和链接的例子
QT webkit

使用QT WidgetSet,你可以使用QT WidgetSet插入到LCL Form中,可以查看这里获取详细信息:http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html

THtmlPort

THtmlPort is a Lazarus/Free Pascal version of Dave Baldwin's HTML Components, including THtmlViewer, TFrameViewer and TFrameBrowser.

GeckoPort

GeckoPort是一个为Lazarus/Free Pascal开发Takanori Ito's Gecko SDK的delphi版本, 保函TGeckoBrowse组件.



转自:http://www.cit.cn/articles/original/2012/0904/7958.html
回复

使用道具 举报

该用户从未签到

发表于 2013-11-13 21:58:23 | 显示全部楼层
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2020-9-18 14:51
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2013-12-22 10:05:24 | 显示全部楼层
    谢谢分享。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-2-4 22:05:07 | 显示全部楼层
    嗯,经常需要。要是能选择内核就好了。
    回复 支持 反对

    使用道具 举报

    *滑块验证:

    本版积分规则

    QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

    GMT+8, 2025-5-2 10:02 , Processed in 0.029889 second(s), 10 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表