在delphi中用DHTML技术做界面 (200分)

  • 主题发起人 主题发起人 zywcd
  • 开始时间 开始时间
可能我的会更好些,不需要写太多的代码来控制,
比你的要方便灵活些,
你的那种控制起来应该是比较麻烦的了
可以把你的代码发给我吗?研究一下
li_violetcn@yahoo.com.cn
 
我的组件可以方便的把页面和图像数据保存到程序资源中
并支持压缩,可以大大减小可执行程序的体积,
并可对图像数据进行高速缓冲,改善加载页面的速度和显示效果

我的例子程序毕竟太简单了,没有时间写好的例子程序
那个例子也仅仅是演示一下像Delphi哈哈王,所说的那种最基本的功能
 
to LiChaoHui:
我现在不在家,下星期回家,我发MAIL和你联系~:)
 
一会儿工夫又有这么多新内容了,看着帖子最后答复的名字没变,居然差点漏看了。:-)
LiChaoHui ,我被你的描述,已经感染得热血沸腾了。是开放源的吗?在哪里能看到?
Delphi哈哈王,“感觉全世界只有我们两有兴趣研究这个了”。呵呵,有点凄伤吧?:-)
 
因为直接使用HTML连接,在点击或更换页面时会发出“啪啪”的声音。

直接用IPersistFile来进行WEbBrowser内容的读写,可以避免。
或者设置Webbrowser.Dom.body.outerhtml
 
感觉全世界只有我们两有兴趣研究这个太夸张了

groups.yahoo.com, enews.microsoft.com上面都有webbrowser, mshtml, dhtml(edit)
的讨论组。
 
我本来是想做成共享的,不过看大家都不感兴趣,也就放下了
我想如果能做些好的演示程序,我想是很有用
这里有一个预览版,不过功能已经很全面了
http://www.playicq.com/dispdocnew.php?t=&id=2543
 
虽然不是开放源码的,但是可以提供全部源代码,但是目前不能提供
需要等到正式版发布,以前我说过,如果能够帮我编写例子程序
可以赠送使用,但是如果大家都不感兴趣,那就作罢了
 
我下载了一个看看。从内存直接将 html 文本加到浏览器我会,但你说的事件接口的事,
好象确实很有必要处理。另外 Adnil 说的“啪啪”声,我没有研究,不好发言。
 
需要什么事件接口阿,BeforeNavigate中处理一下不就OK了?
 
光文本也没什么,应该包含图像声音等数据,
根据名字的含义,就是一个假的Web服务器,但是这个服务器就在程序内部
同时还允许支持下载文件,但是目前这一项还没有实现呢

我说的事件是指页面元素,譬如按钮,编辑框等的各种事件
而不是WebBrowser控件的事件
 
LiChaoHui兄,上次试用了你的 webevent
是不错,不过,好像得到网页元素的dispatch接口有点问题
不过后来,没有时间就没接着是试了

另外,你不是用的 IHTMLElement接口,用的webEvent,那个东东,我
都找不到相关的资料,所以,也没研究透,:),见笑
不过还是很佩服你
 
使用IInternetProtocol即可做到返回图片声音等数据,
将HTML代码以文本方式写进TWebBrowser没什么特别,大家都会,
但是以前有帖子问如何将图片直接写进TWebBrowser,就没有答案了,
这里存在一个自定义的协议问题。
通过协议将TWebBrowser对图片的请求重定向到自己数据流。
LiChaoHui,我其实也很想花时间把这部分整理一下的,最近写的一个共享软件就使用了这种技术。
不过实现模拟文件下载我也遇到一点问题,还没解决。

前面有朋友问我的软件里如何做到在IE控件里对程序进行操作,
其实就是在BeforeNavigate事件里截断点击连接的请求,然后自己处理就行了~:)
 
看了 virtsite0.5 ,不错,但这个 DEMO 好象没有显示出虚拟后的威力,因为只是显示
了一些静态的页面,这个功能不是 virtsite0.5 独有的,MS 的 RES: 就可以做到。最好
有更能显示它威力的 DEMO 和增加按钮等元素后和系统的交互能力的演示。现在只是看了
看,等晚上我再仔细学习学习。
 
按钮等元素和超链接一样可以自己截获,然后转到自己的处理代码,
同样是使用IInternetProtocol~通过自己定义的协议来实现
 
delphi哈哈,能告知通过IInternetProtocol协议将TWebBrowser对图片的请
求重定向到自己数据流的技术细节吗?

或者给个简单的Unit看看? 我也想知道些这方面的内容,现在自己做的
都是通过存临时文件的方法,真不好意思说。
 
大概是这个样子,我现在不在家,记不得具体过程了
需要使用到UrlMon单元
定义两个类,
第一个类 = class(TComObject, IInternetProtocol) //写返回数据在这个类里做
第二个类 = class(TObject) //指定自己的协议的名称及初始化设置在这个里做
截获连接并重定向到私有协议就靠这两个类

再定义两个事件:
事件一:procedure (const URL:String;var Accept:Boolean) of object; //用来判断是否是使用自己的协议
事件二:procedure (const URL:String;var Stream:TStream) of object; //如果是自己的协议,就返回自己定义的Stream

最后还需要在系统里注册私有协议
TComObjectFactory.Create(………………)
 
呵呵,我的实现就是基于 Delphi哈哈王, 所说的 APP 的技术的

to 小雨哥,
res协议的确可以加载静态的页面,但是有个缺点,
页面数据不能被压缩,因为这种协议不认
可执行程序也不能被可执行程序压缩器压缩,否则就读不出来了

我的这个东西可以认为是res协议的扩充,使得在Delphi中更方便使用
看到大家对这个东西很有兴趣,于是又重新拿起来,编写代码
我现在已经解决了模拟下载的功能,不过尚需测试
同时改进了WebEvents的绑定速度,下一步准备支持多种事件绑定方式

随后,Virtual WebServer Express 0.6会上传到playicq
希望大家能帮我测试,和编写例程,定有酬谢
 
TO:LiChaoHui
不不不,LiChaoHui,其实这个东西有一个附加的特点,就是界面 DIY 。呵呵,有换
皮肤的,有调用插件的,直接方便地对界面元素的位置、风格,随心所欲地改来改去的
就是你这个组件了。可以利用模板确定基本标签(tag),由于 html 的元素位置的可控性,
只要在程序中对具体标签的内容进行填写,由 Page 显示在浏览器中就行。这个没什么
复杂的技术在里面,应该容易做到的。纠正一下,res 可以从 exe 中提取资源。
 
后退
顶部