DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jeff1314
今日帖子: 0
在线用户: 9
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/7/6 15:56:35
标题:
FMX中WebBrowser的问题 浏览:2546
加入我的收藏
楼主: 小白请教:
用10.2.3里的TWebBrowser打开图文混排的html文档和mht文档(单个文件网页文档)。
如果编译成win32/win64模式,两种文档可以正常显示;
如果编译成android模式,在手机上可以显示html文档中的文字,图片则有时显示,有时不显示;但无法打开mht文档。
肯请帮助,谢谢。
----------------------------------------------
-
作者:
男 emailx45 (emailx45) ▲▲▲▲△ -
普通会员
2018/7/6 22:34:58
1楼: https://www.reddit.com/r/AndroidQuestions/comments/7elfz5/how_to_open_mht_files_on_android_cant_seem_to/

https://www.experts-exchange.com/questions/27235278/open-mht-file-android.html

https://stackoverflow.com/questions/11556059/display-mht-file-on-android

and so...

search for "android mht files" in google or your "search service"
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2018/7/14 22:50:56
2楼: 想要单个文件,换个思路:

用 WebBroker 做一个真正的网站。网站内容放进一个 SQLite 数据库。如果只是图文混排的话,其实只需要放网页文件和图片文件进数据库就可以了。发布的时候,只需要发布这个 SQLite 的数据。

把这个基于 WebBroker 的 WebServer 内嵌到你的 APP 里面。你的 APP 本身就自带一个 WebServer。然后,你的 APP 里面的 TWebBrowser 去访问这个 WebServer 就可以了。类似:http://127.0.0.1:5432/abc.html ; 这样去访问它。图文混排的网页就出来了。

用这个方法,我已经做了一个东西,放进 APP 里面,在 Windows /iOS / Android 上测试都很好用。

至于这个图文混排,如果要在手机屏幕上显示,网页的排版,直接套用 BootStrap 这个框架就好了。

详细点的介绍看这里: https://blog.csdn.net/pcplayer/article/details/78143618
----------------------------------------------
-
作者:
男 mprjcf (mprjcf) ★☆☆☆☆ -
普通会员
2018/7/16 9:44:51
3楼: 顶楼上,我现在正好需要这个功能,
楼上能不能把源代码也贴出来,避免我们再次研究耗费时间,谢谢!!
----------------------------------------------
他们总是取笑失败者,以酷似智者;他们也总是为成功者喝采,以取得赏金。
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/7/16 11:42:51
4楼: @pcplayer:我是想用TWebBrowser做一个打开远程服务器上网页的APP。
发现用FMX做APP真不轻松,随便哪个APP,今日头条、新浪财经、新湖南....没有一个好的文本编辑、阅览器?
1、查了下资料,看来在android手机用TWebBrowser是不可能打开mht文档的,mht可将许多网页元素保存在一个文件上,免去了许多麻烦,但只有微软和苹果支持这个技术。
2、10.2.3中的TWebBrowser似乎有技术缺陷,它的内核是webview。打开文字帽问题,但文字中如果有表格则不显示表格,如果网页有图片,图片有时显示有时不显示。
3、按您所说的,把网页和网页图片分别保存在数据库的blob字段内,这个实现起来是很难的:TWebBrowser没有流操作的接口或函数;也不知道将图片如何插入到指定位置?
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2018/7/18 10:56:52
5楼: @mprjcf 源代码我早就放到 CSDN 上去了。我写的博客文章里面有提到源代码放到 CSDN 里面。

@sxqwhxq 你的需求有点奇怪。如果你是看今日头条,那是看,不是编辑。坦白说,手机上编辑图文混排,就算技术上能做出来,用起来也很累。所以微信公众号一开始的文章编辑发布都是在 PC 端的网页里面做,不是在手机里面做。如果在 PC 端网页里面做图文混排的编辑,用 VCL 的 TWebBrowser,这个是包装的 IE 浏览器,功能很强大,10多年前大概是2003年我就拿它做了个图文混排的编辑器了。

至于把内容保存到数据库,这个和 TWebBrowser 有什么关系?我前面已经说得很清楚了,TWebBrowser 只是去访问一个 WEB Server,这个 WEB Server 里面的程序(CGI 程序)去访问数据库。这个 WEB Server 程序,用 Delphi 的 WebBroker 框架来做,很简单的。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/7/18 12:15:02
6楼: 楼上很强大,所以很保密,他的 CSDN 不是我们一帮人可以看到的。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 looper (keyo) ★☆☆☆☆ -
盒子活跃会员
2018/7/18 12:30:53
7楼: 分享5楼的CSDN博客:https://blog.csdn.net/pcplayer
----------------------------------------------
虽千万人吾往矣!
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/7/18 13:41:27
8楼: 再分享 5 楼 高手的 资源地址
https://download.csdn.net/user/pcplayer/uploads
我不会用 csdn ,真麻烦。
而且 csdn 太黑心了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 mprjcf (mprjcf) ★☆☆☆☆ -
普通会员
2018/7/18 15:21:55
9楼: 早关注了博主了,但下载资源好难找到,谢谢!!
----------------------------------------------
他们总是取笑失败者,以酷似智者;他们也总是为成功者喝采,以取得赏金。
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/7/18 15:39:03
10楼: @pcplayer:不好意思,在win中,可以从流中装载网页:
var  
ms: TMemoryStream;  
begin  
ms := TMemoryStream.Create;  
Memo1.Lines.SaveToStream(ms);  
ms.Position := 0;  
(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));  
ms.Free;  
end;
但在FMX中,TWebBrowser装载网页好像只有一种方法:
WebBrowser1.Navigate(url);
这样,如何从数据库的blob打开一个网页?如何从数据库的blob字段加载一个图片并插入到一个指定位置呢?
请指导下,谢谢。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/7/18 15:50:53
11楼: 如果是加载一个 页面,loadstring 就行。
如果是往里头动态添加东西,那就需要你写 js 了。
反正 你是别想用 微软提供的接口了,人家 手机系统 不喜欢你这些接口。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2018/7/20 11:36:21
12楼: @sxqwhxq

你用微软提供的接口,是直接用程序往 WebBrowser 里面填内容。

在 FMX 底下:
1. 如果你的 FMX 程序只运行在 PC WINDOWS 里面,你可以用 VCL 的 WebBrowser 仍然采用微软的接口,然后把 VCL 的窗口摆到 FMX 的窗口里面去。也就是融合 VCL 的界面和 FMX 的界面。具体做法,网上有介绍。我自己之前也试过。

2. 如果你是想要在安卓或 iOS 上跑,那自然只能是 WebBrowser1.Navigate(url);

这个 URL 如果是你自己的一个网站,不就可以了么?你自己的网站,数据放在数据库里,网站程序把数据库的内容生成为 HTML 页面发送出去。这个是基本的 WEB 服务器的概念。这个 WEB 服务器,你用 PHP 写也行,你用 ASP.NET 写也行,你用 DELPHI 写,也没问题。

我前面的帖子说的就是用 DELPHI 写,并且把代码和你的 FMX 程序编译到一起。

说穿了,我们的程序都只做了两件事:1. 数据处理;2. 数据传输/通讯。

(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));   这个方法,是把数据丢给 WebBrowser,算是数据通讯。

WebBroser.Navigate(URL); 这个方法,也是数据通讯,只不过数据传输是通过 TCP/IP 的方式。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2018/7/20 12:01:03
13楼: @sxqwhxq

我查了一下我自己以前写的用百度地图的 APP 代码,FMX 里面的 WebBrowser 可以直接加载字符串。

WebBrowser1.LoadFromStrings

然后,WebBrowser 可以执行一个外部的 JS 代码:

WebBrowser1.EvaluateJavaScript();

有了这两样东西,你一个图文混排的的网页,是可以直接装进去的。

关键是你要会做一个只包含字符串的图文混排的网页。

什么意思?也就是说,网页里面的图片,不是一个外部文件,而是打包在 html 文件里面的。

如何做?我的博客里有写:

https://blog.csdn.net/pcplayer/article/details/69233739
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2018/7/20 19:20:53
14楼: 再次测试了一下,直接把图片编码为 BASE64 的字符串插入到 HTML 页面里面的办法,在安卓里面同样可以。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2018/7/20 20:05:15
15楼: FireMonkey 底下,另外一个办法:

1. 把 HTML 和图片,都放进一个 SQLite 数据库。在 APP 运行时,将数据库里面的多个文件释放出来,保存到 TPath.GetDocumentsPath 目录下。

2. HTML 里面的图片用相对路径:<img src="abc.jpeg">

3. WebBrowser1.URL := 'file://abc.html';  WebBrowser1.Navigate;

以上方法,我刚刚写了一个测试代码,在 WINDOWS 和安卓下测试通过。iOS 没测。
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/7/23 12:30:44
16楼: 感谢两位大师指点,我再试试。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行72.75391毫秒 RSS