注册 登录
编程论坛 VFP论坛

请问各位,VFP有什么控件可以解释并显示html文本?

gxbsdzf 发布于 2021-04-30 18:06, 2283 次点击
我想实现的需求是,在这样的控件中可以解释html文本并显示出其效果。比如“<b>编程</b>论坛”,可以加粗显示“编程”两字。VFP中是否有可实现此需求的控件?请各位赐教。谢谢!
14 回复
#2
gxbsdzf2021-04-30 18:09
再说明一下,不是显示html页面,而是解释html。如果是需要显示页面,那webbrowser等控件即可胜任。但我的需求是解释能力,就是可以识别html标识符并呈现其效果。
#3
吹水佬2021-04-30 19:35
webbrowser 应该可以
通过 webbrowser 使用 DHTML document 对象接口

#4
吹水佬2021-04-30 19:39
最好能用 HTML + Javascript + CSS
#5
gxbsdzf2021-05-01 00:03
原来的设计是用editbox显示文本内容,且editbox设置为透明,现客户要求显示的文本中要有粗体字、下划线等格式化效果,这对editbox就无能为力了。因此需要寻找另一种控件来实现。试用了一下webbrowser控件,虽可实现此需求,但却不能透明,也不允许别的控件遮盖它。这比较麻烦了。所以得找到其他办法解决。
activeX控件中有一个richtext控件,似乎可以格式化文本,但不知具体怎么用。
#6
schtg2021-05-01 06:36
是这种效果吗?
只有本站会员才能查看附件,请 登录
#7
吹水佬2021-05-01 07:14
回复 5楼 gxbsdzf
RichEdit应该可以满足,RichEdit是微软的控件,兼容性较好。
Rich Edit 2.0同时具有ANSI和Unicode窗体类,"RichEdit20A"和"RichEdit20W"分别表示对应的Rich Edit窗体类
参考:
https://docs.
搜索 “RichEdit”、“Rich Edit”
RichEdit控件SDK参考手册:
只有本站会员才能查看附件,请 登录
#8
gxbsdzf2021-05-02 00:30
非常谢谢6、7楼!
试了一下RichEdit,直接复制粘贴Word文档的内容到RichEdit中确实能实现格式化文本功能,字体、字号、颜色等都能呈现。但仍不能满足需求,实际应用中需要在程序中完成对纯文本进行字体颜色、下划线等编辑,然后呈现出来,不可能手工编辑好了再粘贴上去。
比如:
vstr='字符串纯文本格式化'   &&这是原始文本
用代码对其进行格式化,比如加下划线:
vstr='字符串<u>纯文本</u>格式化'    &&用html格式
thisform.richedit1.text=vstr
它不能解析,“纯文本”未出现下划线。
#9
gxbsdzf2021-05-02 00:46
现改为用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编辑过]

#10
吹水佬2021-05-02 06:59
webbrowser、RichEdit是windows的控件,都有属于自己的窗口, VFP表单就好象嵌入他们作为子窗口, 就会有一个子窗口Z序列的问题, 要将那个子窗口放在最上层才能正常显示,或将那个子窗口放在下层或隐藏就看不到。
设置子窗口Z序列相关API:
GetTopWindow()
SetWindowPos()



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

#11
吹水佬2021-05-02 07:03
webbrowser、RichEdit是windows的控件,都有属于自己的窗口, VFP表单就好象嵌入他们作为子窗口, 就会的一个子窗口Z序列的问题, 要将那个子窗口放在最上层才能正常显示,或将那个子窗口放在下层或隐藏就看不到。
设置子窗口Z序列相关API:
GetTopWindow()
SetWindowPos()

#12
吹水佬2021-05-02 10:18
想测试一下,发现webbrowser的上hWnd不能取用,看其属性是“只写”,怪了,以前是“只读”的。
只有本站会员才能查看附件,请 登录
#13
吹水佬2021-05-02 11:19
一定要支持HTML的话,还可以考虑miniblink控件
miniblink是一个精简的WEB库,就一个DLL小文件,有免费版本(能满足一般的文本应用)。
#14
吹水佬2021-05-02 18:05
vfp_miniblink_test
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

下载 vfp_miniblink_test.rar
https://down.bccn.net/10804.html
#15
schtg2021-05-02 18:34
@吹版,谢谢!
1