首先要明白mshtml的属性方法:
{IHTMLWindow2 属性:}
frames //返回窗口中的框架数组
location //返回窗口的 location 对象
history //返回窗口的 history 对象
navigator //返回窗口的 navigator 对象
document //返回窗口的 document 对象
screen //返回 Screen 对象
self //返回当前窗口
window //同 self 属性
top //返回最顶层的窗口
parent //返回父窗口
opener //返回创建此窗口的窗口
closed //窗口是否已被关闭
event //当前事件的状态, 很有用
external //执行外部命令, 譬如加入收藏等
clientInformation //当前浏览器信息
offscreenBuffering //是否使用双缓冲, 就是对象在显示之前是否要先在内存中绘制
Option //可建立 Option 的接口 ?
Image //可建立 Image 的接口 ?
item //用于获取子框架 ?
length //返回窗口中框架的数目 ?
name //设置或返回窗口的名称
defaultStatus //设置或返回窗口状态栏中的默认文本
status //设置或返回窗口状态栏中的文本
{IHTMLWindow2 方法:}
setTimeout //在指定时间(毫秒)后调用函数或计算表达式
setInterval //按照指定时间周期(毫秒)调用函数或计算表达式
clearTimeout //取消由 setTimeout 的设置
clearInterval //取消由 setInterval 的设置
alert //显示警告框
confirm //显示可以确认或取消的对话框
prompt //用户输入的对话框
showModalDialog //创建并显示 HTML 文档的模式对话框
showHelp //显示帮助文件
navigate //设置新的 URL, 类似 TWebBrowser.Navigate
open //打开一个新的浏览器窗口或查找一个已命名的窗口
close //关闭浏览器窗口
focus //获取焦点
blur //移除焦点
moveTo //移动窗口到指定位置
moveBy //移动窗口到相对位置
resizeTo //设置窗口宽度与高度
resizeBy //设置窗口相对的宽度与高度
scrollTo //滚动到指定位置
scrollBy //滚动到相对位置
scroll //同 scrollTo
execScript //执行脚本
{IHTMLWindow2 事件:}
onload //装载完成后触发
onunload //退出时触发
onbeforeunload //退出时触发, 会发生在 onunload 之前, 如果还想后头应该用这个
onhelp //显示帮助时触发
onfocus //获得焦点时触发
onblur //失去焦点时触发
onerror //错误时触发
onresize //改变大小时触发
onscroll //滚动时触发
{IHTMLWindow3 方法:}
attachEvent //绑定事件
detachEvent //取消事件绑定
setTimeout //在指定时间(毫秒)后调用函数或计算表达式
setInterval //按照指定时间周期(毫秒)调用函数或计算表达式
print //打印
showModelessDialog //创建一个显示HTML内容的非模态对话框
{IHTMLWindow3 属性:}
screenLeft //
screenTop //
clipboardData //剪切板数据
{IHTMLWindow3 事件:}
onbeforeprint //打印前
onafterprint //打印后
{IHTMLWindow4 方法:}
createPopup //创建弹出菜单
{IHTMLWindow4 属性:}
frameElement //获取窗口所在的框架对象
把上面相关资料搞明白,事情就会简单很多。
1、希望只有部分内容可以编辑:注意【contentEditable=true】的使用:
<BODY ><P contentEditable=true>USEGEAR(只有这里可以编辑)</p> <P> </P> <P> </P> <P>68767896897</P> <P> </P> <P>yutyuty</P> <P> </P></BODY>
2、希望在可编辑区光标处插入html文本or其他
((WebBrowser1.Document as IHTMLDocument2).selection.createRange as IHtmlTxtRange).pasteHTML(‘hello usegear!‘);
3、html文件中有关图像文件的处理
由于编辑结果是一个html文件,需要如同word文档带上图像的一个文件,而不可能还有个单独图像文件 ,所以把图像文件转成base64的文本放在html中
uses EncdDecd;//d自带的单元,就不要到处找了 ======================= var myStringStream : TStringStream; myStream :TStream; =================== StringStream := TStringStream.Create(‘‘); myStream := TFileStream.Create(‘f:\QQ图片20170923175727.png‘,fmOpenRead); EncdDecd.EncodeStream(myStream,myStringStream); mmo1.Text :=‘<img contentEditable="true" src="data:image/png;base64,‘ + myStringStream.DataString +‘"</img >‘; ((WebBrowser1.Document as IHTMLDocument2).selection.createRange as IHtmlTxtRange).pasteHTML(mmo1.Text);
4、其他的编辑功能,网上很多。
///网页查看模式 (WebBrowser1.Document as IHTMLDocument2).designMode := ‘on‘; (WebBrowser1.Document as IHTMLDocument2).execCommand(‘EditMode‘,False,1); ///网页编辑模式 (WebBrowser1.Document as IHTMLDocument2).designMode := ‘off‘; (WebBrowser1.Document as IHTMLDocument2).execCommand(‘BrowseMode‘,False,1); ///选中文本编辑 ///设置字体 //////名称 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘FontName‘, False, ‘宋体‘); //////大小 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘FontSize‘, False, 7);///字体大小是从1到7 ////样式 //////粗体 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘Bold‘, False, 1); //////斜体 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘Italic‘, False, 1); /////下划线 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘Underline‘, False, 1); /////删除线 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘StrikeThrough‘, False, 1); ///超链接 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘CreateLink‘, False, 1); ///删除超链接 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘UnLink‘, False, 1); ///设置 ///设置文字前景色 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘ForeColor‘,False, ‘Red‘); ///设置文字背景色 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘BackColor‘,False, ‘Blue‘); ///设置下标 (WebBrowser1.Document as Ihtmldocument2).execCommand(‘SubScript‘,False,1); ///设置上标 (WebBrowser1.Document as Ihtmldocument2).execCommand(‘SuperScript‘,False,1); ///设置对齐方式 ///设置左对齐 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘JustifyLeft‘, False, 0); ///设置中对齐 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘JustifyCenter‘, False, 0); ///设置右对齐 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘JustifyRight‘, False, 0); ///设置两端对齐 (WebBrowser1.Document as IHTMLDocument2).execCommand(‘JustifyFull‘, False, 0); ///缩进 /// 向右缩进 (WebBrowser1.Document as Ihtmldocument2).execCommand(‘Indent‘,True,1); /// 向左缩进 (WebBrowser1.Document as Ihtmldocument2).execCommand(‘Outdent‘,True,1); ///清除格式 (WebBrowser1.Document as Ihtmldocument2).execCommand(‘Removeformat‘,True,0); ///序列查看 /// 数字格式 (WebBrowser1.Document as Ihtmldocument2).execCommand(‘InsertOrderedList‘,True,0); /// 圆点查看 (WebBrowser1.Document as Ihtmldocument2).execCommand(‘InsertUnorderedList‘,True,0); ///插入图片(静态) (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertImage‘, True, ‘‘); (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertImage‘, False, ‘C:\1.png‘); ///插入HTML组件 ///后面的字符串为这个控件的ID号 ///直线 Line (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertHorizontalRule‘, True, ‘‘); ///按钮 Button (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertButton‘, True, ‘‘); ///复选框 CheckBox (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertInputCheckbox‘, True, ‘‘); ///单选框 Radio (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertInputRadio‘, True, ‘‘); ///编辑框 Edit (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertInputText‘, True, ‘‘); ///文本框 Memo (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertTextArea‘, True, ‘‘); ///密码框 PswEdit (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertInputPassword‘, True, ‘‘); ///组框架 GroupBox (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertIFrame‘, True, ‘‘); ///列表框 ListBox (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertSelectListbox‘, True, ‘‘); ///组合框 Combobox (WebBrowser1.Document as IHTMLDocument2).execCommand(‘InsertSelectDropdown‘, True, ‘‘);
2ccc上有个高人n年前写的浏览器编辑器,可以参考Register_HtmlEdit