标题:请问各位,VFP有什么控件可以解释并显示html文本?
只看楼主
gxbsdzf
Rank: 2
等 级:论坛游民
帖 子:28
专家分:23
注 册:2019-11-26
结帖率:75%
已结贴  问题点数:20 回复次数:14 
请问各位,VFP有什么控件可以解释并显示html文本?
我想实现的需求是,在这样的控件中可以解释html文本并显示出其效果。比如“<b>编程</b>论坛”,可以加粗显示“编程”两字。VFP中是否有可实现此需求的控件?请各位赐教。谢谢!
搜索更多相关主题的帖子: 控件 文本 html VFP 显示 
2021-04-30 18:06
gxbsdzf
Rank: 2
等 级:论坛游民
帖 子:28
专家分:23
注 册:2019-11-26
得分:0 
再说明一下,不是显示html页面,而是解释html。如果是需要显示页面,那webbrowser等控件即可胜任。但我的需求是解释能力,就是可以识别html标识符并呈现其效果。
2021-04-30 18:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
webbrowser 应该可以
通过 webbrowser 使用 DHTML document 对象接口

2021-04-30 19:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
最好能用 HTML + Javascript + CSS
2021-04-30 19:39
gxbsdzf
Rank: 2
等 级:论坛游民
帖 子:28
专家分:23
注 册:2019-11-26
得分:0 
原来的设计是用editbox显示文本内容,且editbox设置为透明,现客户要求显示的文本中要有粗体字、下划线等格式化效果,这对editbox就无能为力了。因此需要寻找另一种控件来实现。试用了一下webbrowser控件,虽可实现此需求,但却不能透明,也不允许别的控件遮盖它。这比较麻烦了。所以得找到其他办法解决。
activeX控件中有一个richtext控件,似乎可以格式化文本,但不知具体怎么用。
2021-05-01 00:03
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:10 
是这种效果吗?
2021-05-01 06:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 5楼 gxbsdzf
RichEdit应该可以满足,RichEdit是微软的控件,兼容性较好。
Rich Edit 2.0同时具有ANSI和Unicode窗体类,"RichEdit20A"和"RichEdit20W"分别表示对应的Rich Edit窗体类
参考:
https://docs.
搜索 “RichEdit”、“Rich Edit”
RichEdit控件SDK参考手册:
RichEdit控件SDK参考手册.rar (10.83 KB)
2021-05-01 07:14
gxbsdzf
Rank: 2
等 级:论坛游民
帖 子:28
专家分:23
注 册:2019-11-26
得分:0 
非常谢谢6、7楼!
试了一下RichEdit,直接复制粘贴Word文档的内容到RichEdit中确实能实现格式化文本功能,字体、字号、颜色等都能呈现。但仍不能满足需求,实际应用中需要在程序中完成对纯文本进行字体颜色、下划线等编辑,然后呈现出来,不可能手工编辑好了再粘贴上去。
比如:
vstr='字符串纯文本格式化'   &&这是原始文本
用代码对其进行格式化,比如加下划线:
vstr='字符串<u>纯文本</u>格式化'    &&用html格式
thisform.richedit1.text=vstr
它不能解析,“纯文本”未出现下划线。
2021-05-02 00:30
gxbsdzf
Rank: 2
等 级:论坛游民
帖 子:28
专家分:23
注 册:2019-11-26
得分:0 
现改为用webbrowser控件,先应付客户需求再说。具体如下:
在webbrowser控件的init事件中加以下代码,构建一个html页面:
vhtml='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'
vhtml=vhtml+'<html><head><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /><meta http-equiv="Content-Type" content="text/html; charset=gb2312">'
vhtml=vhtml+'<title></title><style type="text/css"><!--html,body{height: 100%;width: 100%; padding:0 5 5 0; margin:0 5 5 0;border:1px solid #00ccff; overflow:auto;}--></style>'
vhtml=vhtml+'</head><body bgcolor="#004080" oncontextmenu="window.event.returnValue=false;">'
vhtml=vhtml+'<div id="divtm" style="font-family:微软雅黑; font-size:16pt; color:#FF0; width:100%; line-height:1.3; padding:5px;"></div></body></html>'
THIS.NAVIGATE('about:'+vhtml)

程序运行过程中,用下句将要呈现的内容写入到名为“divtm”的div标签中:
THISFORM.Olecontrol1.DOCUMENT.getElementById('divtm').innerHTML='<font color="#ffffff">字符串<u>&nbsp;纯文本&nbsp;</u>格式化</font>'

暂时解决问题。

但不能被其他控件遮盖的问题还是无法解决,RichEdit也是这样。似乎凡是ActionX控件都有这种问题。


[此贴子已经被作者于2021-5-2 00:51编辑过]

2021-05-02 00:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
webbrowser、RichEdit是windows的控件,都有属于自己的窗口, VFP表单就好象嵌入他们作为子窗口, 就会有一个子窗口Z序列的问题, 要将那个子窗口放在最上层才能正常显示,或将那个子窗口放在下层或隐藏就看不到。
设置子窗口Z序列相关API:
GetTopWindow()
SetWindowPos()



[此贴子已经被作者于2021-5-2 07:03编辑过]

2021-05-02 06:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505626-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072678 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved