- 浏览: 5153514 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
htm中<script> var currID=123</script>
程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID
值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个异常事件,即变量currID不存在
2.执行网页中的函数
tmp := 'currID = getNextID(currID)'+#13#10;
Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmp,'JavaScript');
调用函数的方法就是execScript接口,同样,如果函数不存在,或者运行错误也会触发脚本错误异常
3.设置网页背景
背景图片 WebBrowser1.OleObject.Document.body.background := 'http://seelearn.com/bg.gif
' 背景颜色 WebBrowser1.OleObject.Document.body.bgcolor := '#eeeeee'
4.调用网页中已知对象
src := WebBrowser1.OleObject.Document.getElementByID('img1').src 该方法其实就是javascript中的 getElementByID
5.获取页面中所有的frame
使用DHTML。
frames:=wb.OleObject.document.frames;
for i:=0 to frames.length do
memo1.lines.Add(frames[i].document.body.innerHTML);
6.BorderStyle=bsNone后Webbrowser会被重新初始化
这是一个让人很意外的一个问题,Delphi在窗口控件的控制方面做得非常好,很少出现这种BUG
根据分析,出现这个现象有很多情况 改变FormStyle也会出现 ; 如果 webbrowser.parent
由panel1改到panel2.也会导致webbrowser重新初始化。
7.直接向Webbrowser中写入html代码,不需要Navigate到实际存在的文件
var
StrStream:TStringStream;
SetNoteStr: string; begin SetNoteStr :='<body bgcolor=222222 align=center><br><p align=center><font size=+2 color=#FFFFFF>扬帆博客 http://wesohon.com</font></p>';
SetNoteStr :=SetNoteStr+'<br><p align=center><font size=+2 color=#FFFFFF>点击左边按钮可查看对应图片</font></p>';
StrStream:=TStringStream.Create(SetNoteStr);
WebBrowser1.Navigate('about:blank');
try
StrStream.Position:=0;
( WebBrowser1.Document as IPersistStreamInit).Load(TStreamadapter.Create(StrStream));
finally
StrStream.Free;
end;
8.前进,后退,刷新
self.WebBrowser1.GoBack
self.WebBrowser1.GoForward
self.WebBrowser1.Refresh
9.捕捉NewWindow2事件,即新开窗口事件
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
NewWindow: TForm2;
begin
//exit;
NewWindow:= TForm2.Create(nil);
NewWindow.Show;
ppDisp:= NewWindow.Webbrowser1.DefaultDispatch;
end; 值得一题的是该方法不能获得新开窗口的URL,退一步的方法只能是等到在新的Webbrowser中触发BeforeNavigate2事件判断了
10.网页中存在iframe时判断页面是否下载结束
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
begin
if WebBrowser1.Application = pDisp then showmessage('页面已全部下载完毕')end;
说明一下,每个iframe下载完毕都会触发DocumentComplete事件,所以一个页面在真正下载完毕前可能被触发多次
11. 获取网页中图片//使用DOM模型,什么都能读下来
uses MSHtml, ActiveX;
var
html_doc: IHTMLDocument2;
doc_all : IHtmlElementCollection;
vI : IHtmlImgElement;
begin
html_doc := WebBrowser1.Document as IHTMLDocument2;
doc_all := html_doc.images;
for I := 0 to doc_all.length - 1 do
begin
vI := doc_all.item(I, EMPTYPARAM) as IHtmlImgElement;
//读取vI.src
Memo1.Lines.Add(vI.src);
end;
end;12. 下面函数获得ISomeControl接口var
html_doc: IHTMLDocument2;
doc_all : IHtmlElementCollection;
vI : IHtmlElement;
vD : IDispatch;
begin
html_doc := WebBrowser1.Document as IHTMLDocument2;
doc_all := html_doc.all;
for I := 0 to doc_all.length - 1 do
begin
vI := doc_all.item(I, EMPTYPARAM) as IHtmlElement;
if vI.tagName='OBJECT' then
begin
//读取Classid
Memo1.Lines.Add((vI as IHtmlObjectElement).classid);
//读取包容的对象接口
vD := (vI as IHtmlObjectElement).object_;
...
end;
end;
end;
程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID
值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个异常事件,即变量currID不存在
2.执行网页中的函数
tmp := 'currID = getNextID(currID)'+#13#10;
Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmp,'JavaScript');
调用函数的方法就是execScript接口,同样,如果函数不存在,或者运行错误也会触发脚本错误异常
3.设置网页背景
背景图片 WebBrowser1.OleObject.Document.body.background := 'http://seelearn.com/bg.gif
' 背景颜色 WebBrowser1.OleObject.Document.body.bgcolor := '#eeeeee'
4.调用网页中已知对象
src := WebBrowser1.OleObject.Document.getElementByID('img1').src 该方法其实就是javascript中的 getElementByID
5.获取页面中所有的frame
使用DHTML。
frames:=wb.OleObject.document.frames;
for i:=0 to frames.length do
memo1.lines.Add(frames[i].document.body.innerHTML);
6.BorderStyle=bsNone后Webbrowser会被重新初始化
这是一个让人很意外的一个问题,Delphi在窗口控件的控制方面做得非常好,很少出现这种BUG
根据分析,出现这个现象有很多情况 改变FormStyle也会出现 ; 如果 webbrowser.parent
由panel1改到panel2.也会导致webbrowser重新初始化。
7.直接向Webbrowser中写入html代码,不需要Navigate到实际存在的文件
var
StrStream:TStringStream;
SetNoteStr: string; begin SetNoteStr :='<body bgcolor=222222 align=center><br><p align=center><font size=+2 color=#FFFFFF>扬帆博客 http://wesohon.com</font></p>';
SetNoteStr :=SetNoteStr+'<br><p align=center><font size=+2 color=#FFFFFF>点击左边按钮可查看对应图片</font></p>';
StrStream:=TStringStream.Create(SetNoteStr);
WebBrowser1.Navigate('about:blank');
try
StrStream.Position:=0;
( WebBrowser1.Document as IPersistStreamInit).Load(TStreamadapter.Create(StrStream));
finally
StrStream.Free;
end;
8.前进,后退,刷新
self.WebBrowser1.GoBack
self.WebBrowser1.GoForward
self.WebBrowser1.Refresh
9.捕捉NewWindow2事件,即新开窗口事件
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
NewWindow: TForm2;
begin
//exit;
NewWindow:= TForm2.Create(nil);
NewWindow.Show;
ppDisp:= NewWindow.Webbrowser1.DefaultDispatch;
end; 值得一题的是该方法不能获得新开窗口的URL,退一步的方法只能是等到在新的Webbrowser中触发BeforeNavigate2事件判断了
10.网页中存在iframe时判断页面是否下载结束
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
begin
if WebBrowser1.Application = pDisp then showmessage('页面已全部下载完毕')end;
说明一下,每个iframe下载完毕都会触发DocumentComplete事件,所以一个页面在真正下载完毕前可能被触发多次
11. 获取网页中图片//使用DOM模型,什么都能读下来
uses MSHtml, ActiveX;
var
html_doc: IHTMLDocument2;
doc_all : IHtmlElementCollection;
vI : IHtmlImgElement;
begin
html_doc := WebBrowser1.Document as IHTMLDocument2;
doc_all := html_doc.images;
for I := 0 to doc_all.length - 1 do
begin
vI := doc_all.item(I, EMPTYPARAM) as IHtmlImgElement;
//读取vI.src
Memo1.Lines.Add(vI.src);
end;
end;12. 下面函数获得ISomeControl接口var
html_doc: IHTMLDocument2;
doc_all : IHtmlElementCollection;
vI : IHtmlElement;
vD : IDispatch;
begin
html_doc := WebBrowser1.Document as IHTMLDocument2;
doc_all := html_doc.all;
for I := 0 to doc_all.length - 1 do
begin
vI := doc_all.item(I, EMPTYPARAM) as IHtmlElement;
if vI.tagName='OBJECT' then
begin
//读取Classid
Memo1.Lines.Add((vI as IHtmlObjectElement).classid);
//读取包容的对象接口
vD := (vI as IHtmlObjectElement).object_;
...
end;
end;
end;
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18434编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2356部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3357两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 17391.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7644一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1225我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3252做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1130写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3971大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2359一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7475我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2739@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2068转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3074用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1727element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9778示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6532申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5280最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5279springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10387微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
Vue2基础实例-实现移动端静态页面(CDN引入方式)
【作品名称】:基于vb+access 实现的学籍管理系统【毕业设计】(论文+源代码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、修改、删除等。系统还可以完成对各类信息的浏览、查询、添加、删除、修改、报表等功能。 系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。 关键字:控件、窗体、数据库、vb6.0、access97。 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
计算机网络期末复习
软件项目开发,项目管理10条
两种简单的彩灯闪烁程序.rar 两线控制机械手.rar 两轴伺服控制的PCB自动切边(PLC+ 人机界面)程式.rar 两道FX2N-4AD习题(有程序).rar 六头直径式拉丝机.rar 六层六站电梯.rar 冷却水泵节能循环运行1.rar 冷室压铸机FX PLC程序.zip 力恒锌合金压铸机.rar 啤酒输送无压力系统三菱程序.rar 喷泉控制设计.rar 喷涂.rar 喷涂生产线粉末喷涂控制程序.rar 喷灌控制器.rar 墨西哥纬创二期工程.rar 密码锁门梯形图.rar 尿片包装机.rar 平板硫化机FX2N-PLC加 F940人机.rar 木工机械数控载板锯.rar 某军区恒压供水程序.rar 某生产自动线.rar 某运料小车(cs).rar 某锻压机械厂的80吨冲床程序.rar 模拟量程序,自动跟踪.rar 模温机.rar 模糊控制算法的PLC程序模块.rar 泡沫机.rar 流水线控制.rar 淋膜复合机组.rar 煤矿皮带运输机电控系统.rar 煤质采样程序.rar 瑪斯蘭贰厂壹期.rar 硫化机.rar 碾压机.rar 磨床.rar 磨边机三菱FX程序+人机界面控制
本次开发的高校竞赛和考级查询系统实现了字典管理、公告管理、教务处管理员管理、竞赛管理、竞赛收藏管理、竞赛留言管理、竞赛报名管理、学院负责人管理、学生管理、指导老师管理、管理员管理等 今天向大家分享一个最新完成的高质量毕业设计项目作品 基于SSM的XXX管理系统 项目评分(最低0分,满分5分) 难度系数:3分 工作量:5分 创新点:3分 界面美化:5分 使用技术 前端: html/js/css/vue 后端:ssm 数据库:MySql 服务器:apache-tomcat 编译器:IntelliJ IDEA 项目管理工具:maven 项目包含内容 (包含毕设全套内容) 项目源码 论文 运行效果视频、部署参考教学视频
在R语言中,模型选择和评估是一个涉及多个步骤的过程,包括数据预处理、模型训练、超参数调优、模型评估和结果可视化。通过使用caret、ROCR等包,我们可以构建、评估和优化各种机器学习模型。掌握这些技能对于数据科学家和机器学习工程师来说至关重要,它们是构建有效预测模型的基础。
WPF+MVVM 自定义按钮实现(带图片文字虚线实线边框切换),案例给出两种状态变化控制,一种是两个按钮分开控制,通过按钮禁用边框变成虚线表示不可用状态,另一种时一个按钮控制状态变化,改变按钮文字描述和背景图片。详细描述见博客 https://blog.csdn.net/qq_21419015/article/details/143219764
Logistic回归(分类)问题探讨与实践博文对应的数据和代码。
用上Diboot,大多数SQL都不用写了,代码极大简化,让开发专注于业务;Diboot基础封装的内部实现,确保运行高效率高性能,帮你规避常见的坑。基于Devtools的代码生成能力,后端、前端、关联、复杂主子页面、移动端、非覆盖式更新代码、AI辅助命名... 全支持;零代码不能满足的复杂场景,基于生成后的代码快速扩展,无任何扩展局限性。模型设计、页面设计、表单设计、流程设计、数据大屏 等能力全支持,多数功能直接配;表单与流程解耦,流程挂载多表单,表单灵活复用。零/低/全代码之间顺畅融合,自由切换。多数常规功能零代码搭建即用;复杂功能支持集成自定义手写页面、支持生成前后端代码自由扩展; 为开发人员打造的低代码开发平台。Mybatis-plus关联查询,关联无SQL,性能高10倍,前后端代码本地可视化生成,flowable工作流,spring cloud微服务,强大的无代码模型表单页面流程设计能力等全方位赋能!
自动根据动态域名配置信息解析域名,类似花生壳动态域名解析功能
跟岗实习提交材料.zip
Mqtt消息模拟程序,模拟发送MQTT数据
TL-ER3220G V4.0升级软件20221207_3.0.4
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
算法与数据结构-综合提升 C++版 资源列表: 00-0pening 01-Why-Algorithms 02-Sorting-Basic 03-Sorting-Advance 04-Heap 05-Binary-Search-Tree 06-Union-Find 07-Graph-Basics08-Minimum-Span-Trees 09-Shortest-Path 10-Ending
红薯无印高清图提取.zip
22应统3 玛依拉 220110780519 作业2.ipynb
本期给大家带来5G NR中已知GSCN如何计算对应的 SSB 绝对射频信道号NARFCN,根据gscn先计算出中心频率,再根据中心频率反推NARFCN,用MATLAB实现,参考3GPP 38.104,欢迎一起交流
基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计),该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕