用WebBrowser实现HTML界面的应用
用什么实现HTML的界面
如何访问HTML页面的内容
var
Doc : IHTMLDocument2;
element: IHTMLElement;
begin
Doc := IHTMLDocument2(WebBrowser1.Document);
if nil <> Doc then
begin
element := Doc.all.item('T1', 0) as IHTMLElement;
if nil <> element then begin
if '' = element.style.display then
element.style.display := 'none'
else
element.style.display := '';
end;
end;
end;
var
Doc : IHTMLDocument2;
inputText : IHTMLInputTextElement;
begin
Doc := IHTMLDocument2(WebBrowser1.Document);
if nil <> Doc then
begin
//如果T1不是IHTMLInputTextElement类型将出错
inputText := Doc.all.item('T1', 0) as IHTMLInputTextElement;
inputText.value := Edit1.Text;
Edit2.Text := inputText.value;
end;
end;
如何调用JavaScript函数(兼谈消息提示框)
var
Doc : IHTMLDocument2;
Element : IHTMLElement;
begin
Doc := IHTMLDocument2(WebBrowser1.Document);
Assert(nil <> Doc);//一定要先加载HTML
Element := Doc.all.item('ShowMessage', 0) as IHTMLElement;
if nil <> Element then
begin
Element.innerText := Msg;
Element.click;
end;
end;
如何禁止右键菜单(如何禁止用户查看源代码)
Form1: TForm1;
FDocHostUIHandler: TDocHostUIHandler;
...
implementation
...
procedure TForm1.FormCreate(Sender: TObject);
begin
FDocHostUIHandler := TDocHostUIHandler.Create;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FDocHostUIHandler.Free;
end;
procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject;
pDisp: IDispatch; var URL: OleVariant);
var
hr: HResult;
CustDoc: ICustomDoc;
begin
hr := WebBrowser1.Document.QueryInterface(ICustomDoc, CustDoc);
if hr = S_OK then
CustDoc.SetUIHandler(FDocHostUIHandler);
end;
如何响应HTML的事件(如何在HTML中调用Delphi的代码)
Form1: TForm1;
EventSink: TDHTMLEvent;
...
implementation
...
procedure TForm1.FormCreate(Sender: TObject);
begin
EventSink:= TDHTMLEvent.Create;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
EventSink.Free;
end;
procedure TForm1.DemoEventSink(Sender: TObject);
begin
ShowMessage('成功从HTML中调用Delphi的过程。');
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Doc : IHTMLDocument2;
Element : IHTMLElement;
begin
Doc := IHTMLDocument2(WebBrowser1.Document);
if nil <> Doc then
begin
//找到HTML元件
Element := Doc.all.item('B3', 0) as IHTMLElement;
//使HTML元件的click事件和DemoEventSink过程关连
Element.onclick := EventSink.HookEventHandler(DemoEventSink);
end;
end;
如何能在HTML控件上输入回车
unit Unit1;interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw_TLB, ActiveX, StdCtrls;type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Button2: TButton;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
FOleInPlaceActiveObject: IOleInPlaceActiveObject;
procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}
procedure TForm1.FormDestroy(Sender: TObject);
begin
FOleInPlaceActiveObject := nil;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := MsgHandler;
end;procedure TForm1.MsgHandler(var Msg: TMsg; var Handled: Boolean);
const
DialogKeys: set of Byte = [VK_LEFT, VK_RIGHT, VK_BACK, VK_UP, VK_DOWN,
$30..$39, $41..42, $44..$55, $57, $59..$5A];
var
iOIPAO: IOleInPlaceActiveObject;
Dispatch: IDispatch;
begin
{ exit if we don't get back a webbrowser object }
if (WebBrowser1 = nil) then
begin
Handled := System.False;
Exit;
end;Handled := (IsDialogMessage(WebBrowser1.Handle, Msg) = System.True);
if (Handled) and (not WebBrowser1.Busy) then
begin
if FOleInPlaceActiveObject = nil then
begin
Dispatch := WebBrowser1.Application;
if Dispatch <> nil then
begin
Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
if iOIPAO <> nil then
FOleInPlaceActiveObject := iOIPAO;
end;
end;if FOleInPlaceActiveObject <> nil then
if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
(Msg.wParam in DialogKeys) then
// nothing - do not pass on the DialogKeys
else
FOleInPlaceActiveObject.TranslateAccelerator(Msg);
end;
end;initialization
OleInitialize(nil);finalization
OleUninitialize;
如何实现HTML的打印和预览
<div style="DISPLAY:none; WIDTH:6.5in; HEIGHT:0.78in">
...(HTML页眉内容)
</div>
var g_htmlHeader = "";//用于保存页眉内容
var g_nHeaerHeight = 0;//页眉的高度
oPageHeader = dialogArguments.__IE_BrowseDocument.all.item("Header", 0);
if (null != oPageHeader)
{
g_htmlHeader = oPageHeader.innerHTML;
g_nHeaerHeight = oPageHeader.style.posHeight;
}
//指定页边距。其中40可以自己改,单位是百分之一英寸。
Printer.marginTop = 40 + (g_nHeaerHeight * 100);
Printer.marginBottom = 40;
Printer.marginLeft = 40;
Printer.marginRight = 40;
/*注释掉以下代码
if (header)
{
tmp = upTop + (27 / 100);
if (tmp > top)
top = tmp;
}
if (footer)
{
tmp = upBottom + (27 / 100);
if (tmp > bottom)
bottom = tmp;
}
*///紧接着加上:
tmp = upTop + g_nHeaerHeight;
if (tmp > top)
top = tmp;//下面隔几行,注释掉:oRule.style.top = upTop + "in";
//这两行用于设置页码,你在页眉可以通过加入“[P]”和“[p]”分别代表总页数和当前页数。
g_htmlHeader = g_htmlHeader.replace("[P]", "<span ></span>");
var pageHeader = g_htmlHeader.replace("[p]", HeadFoot.pageTotal);//下面隔3行,注释掉:
//~oPage.children("header").innerHTML = HeadFoot.HtmlHead;
//~oPage.children("footer").innerHTML = HeadFoot.HtmlFoot;//下面隔几行,把“newHTM += HeadFoot.HtmlHead;”改为:
newHTM += pageHeader ;//然后注释掉(不要页脚):newHTM += HeadFoot.HtmlFoot;
var
vaIn, vaOut: OleVariant;
CmdTarget : IOleCommandTarget;
MyHandle : THandle;
begin
vaIn := 'c:\\Preview.htm';
//预览方法1:WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);//下面是方法2:
if WebBrowser1.Document <> nil then
begin
WebBrowser1.Document.QueryInterface(IOleCommandTarget, CmdTarget);
if CmdTarget <> nil then
begin
try
CmdTarget.Exec( PGuid(nil), OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
finally
CmdTarget._Release;
end;
end
else
begin
ShowMessage('IE不支持该功能,请升级至IE5.5以上。');
end;
end;
end;
if 0 <> MyHandle then
begin
ShowWindow(MyHandle , SW_MAXIMIZE);
end;
如何打包HTML和相关文件
About.htm HTML "HTML\\About.htm"p_w_picpath016.gif IMAGES "HTML\\p_w_picpaths\\p_w_picpath016.gif"
2004-03-17 11:20 20,397 About.htm2004-03-17 11:20 27,397 index.htm
(Yaeuq.net乐土 于 2004-4-8)
转载于:https://blog.51cto.com/bigpower/69221
用WebBrowser实现HTML界面的应用相关推荐
- 用WebBrowser实现HTML界面的应用和交互
这一篇将继续讨论在使用delphi进行普通应用程序开发的时候,WebBrowser的具体应用,主要是针对使用其进行HTML界面开发的,这也是一篇我在网上找到的资料,大家如要转载,请尊重原作者的知识产权 ...
- html页面调用存储过程,用WebBrowser实现HTML界面的应用
HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash.声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护.另外,HTML的显示环境一般机器上都具备,通常不需要安装额外的软件.当然, ...
- 采集天眼查数据(根据已有的公司名称采集)
因为部分原因,需要用到天眼查的数据,虽然开了天眼查的会员账号,但是导出Excel数据字段内容太少,部分例如工商注册号,组织机构代码都没用,感觉有些不完整,所以利用数据库里已有的公司名称来进行采集,将信 ...
- 豆瓣相册下载助手,在这里记录分享一下
前两天和哥们闲聊,扯到了我学的专业,软件工程, 就突然想到问问他有没有想要的小功能的软件,可以帮他"私人定制". 没想到还真有. 需求很简单: 一个能自动下载豆瓣相册中全部大图的软 ...
- WebBrowser提交submit后界面不刷新的解决办法
一个Form里有一个WebBrowser和一个Button,在Button_Click里执行 htmlDocument=WebBrowser.Document得到当前document 当htmlDoc ...
- delphi操作webbrowser htmldocument,操作web界面
原文地址:https://www.cnblogs.com/endv/p/5983110.html {IHTMLDocument2 方法:} write //写入 writeln //写入并换行 ope ...
- webbrowser1 脚本报错_c# winform程序 webBrowser 当前页面的脚本发生异常 找不到成员...
c# winform程序 webBrowser 当前页面的脚本发生错误 找不到成员 本帖最后由 yz2653410 于 2014-01-11 21:03:25 编辑 以下为页面代码 using Sys ...
- WebBrowser
原文:WebBrowser 做WEB开发的想把网页做成应用程序的界面,开发应用程序的又想把程序界面做得和WEB一样.本文介绍一下用HTML做软件UI用到的的一些技术. 其实HTML UI也不是什么新鲜 ...
- 掩耳盗铃之使用WebBrowser封装网页
最近学校的破网越来越不像话了,换了这Win7机器后,Dr.Com就一直掉,换了各种版本,也不行,无奈,我只得换成了网页登录模式.但是这上网还要开个网页不能关,无形中增加了我对电脑整洁度的恶评,所以,我 ...
- java jeditorpane 自动换行_JDIC 中利用WebBrowser内置浏览器到java application中 | 学步园...
JDIC简介: JDesktop Integration Components (JDIC),是一个开源的项目,目的是构建消除本机应用程序和 Java 等价物之间差距的组件.项目组长是个中国人.该项目 ...
最新文章
- C/C++如何检查系统内存泄露与使用情况?
- UVa455 Periodic Strings(kmp)
- java面试题001
- 波卡链Substrate (3)SRML框架
- 098 Validate Binary Search Tree 验证二叉搜索树
- [转]MSXML版本历史
- pymysql的安装
- [UE4]集合:TSet容器
- python模块如何导入解释器_无法从嵌入式解释器导入内置模块(仅限Windows)
- 整合Spring框架和Hibernate框架
- java 参数理解,JAVA参数传递值传递的理解。
- Netty实战——Channel、EventLoop和ChannelFuture详解
- Chrome快捷键, Mac 下 Chrome 浏览器 快捷键
- 使用云存储解决方案,主要有哪些优势
- 梯度下降优化算法综述
- kd树的根节点_KD树简介
- 读书笔记(一):《简单的逻辑学》
- vue脚手架安装步骤详情
- 如何利用文字推动业绩 ——营销人员的软文营销
- C语言小游戏: 2048.c