如何让TWebBrowser按Del键时会删除所选全部内容﹖

Frank6600 2012-01-29 04:47:43
不知道你们有没有注意到,TWebBrowser若只选单纯的几个字,按Del是能删除所选内容;
但是,若所选的范围大一点,比如有一半选择在表格内的文字,另一半选择在表格外的文字时,
安Del键就没用了,结果将什么也没删除。

反复思考了很久,写了下列代码:

procedure ClearText(Element: IHTMLElement);
var
I: Integer;
CurrentElement: IHTMLElement;
begin
for I := 0 to IHTMLElementCollection(Element.Children).Length - 1 do
begin
CurrentElement := IHTMLElementCollection(Element.Children).Item(I, EmptyParam) as IHTMLElement;
if (IHTMLElementCollection(CurrentElement.Children).Length=0) and (Length(CurrentElement.innerText)>0) then
begin
TxtRange2 := (Document2.body as IHTMLBodyElement).createTextRange;
TxtRange2.moveToElementText(CurrentElement);
if TxtRange.inRange(TxtRange2) then
CurrentElement.innerText:='';
end;
ClearText(CurrentElement);
end;
end;

range := SelectionObject.createRange;
TxtRange := range as IHTMLTxtRange;
ClearText(TxtRange.parentElement);

结果:

上面的代码对于整个Element的文字都选择的会有效,但对于只选Element中部份文字的就没有效。

谁知道更好的方法﹖
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank6600 2012-02-24
  • 打赏
  • 举报
回复
> 删除的时候先将模式改为编辑模式。。删除完之后再将模式改为浏览模式

不是编辑模式与否的问题。
我的问题其实假设了,一直在编辑模式。
Frank6600 2012-02-24
  • 打赏
  • 举报
回复
> 按下Del时把所先代码复制到剪贴板中,然后根据WEBBROWSER的源代码中查找到这段代码,然后再替换成‘’
> 不知道是否可行,偶没试过的说

理论上是可行的。但实际上不好定位。
复制所选代码时,若跨Cell,
它会把所选Cell的代码、及所选Cell上层的TR及其上层的Table都含入代码。
这是第一个难点。

第二个难点是,可能会出现两处以上相同内容。

第三个难点是,改完源代码后,画面会闪一下,
因为得将卷动轴和游标重定位到原本所选位置(而我却不会游标重定位)。

DelphiTeacher 2012-02-23
  • 打赏
  • 举报
回复
删除的时候先将模式改为编辑模式。。删除完之后再将模式改为浏览模式
我看见佛 2012-02-23
  • 打赏
  • 举报
回复
按下Del时把所先代码复制到剪贴板中,然后根据WEBBROWSER的源代码中查找到这段代码,然后再替换成‘’

不知道是否可行,偶没试过的说
Frank6600 2012-02-23
  • 打赏
  • 举报
回复
看来是没有答案了。
Frank6600 2012-01-31
  • 打赏
  • 举报
回复
> 表格部分删除,整个表格的结构都会乱掉。
>
> 所以,要么不删,要么整个表格删除,部分删除是不行的。

不知道你有没有在FrontPage或Word里做过跨表格内容的删除﹖
如果从表格的一半选到表格外的内容,
此时的删除,并不会破坏表格结构,
而是表格内的选择,只删除文字,连同表格外的文字,一起被删除。

你应该在回答前看看我贴的代码,
我的代码已考虑了这点(只是还不够完善,不然我不用在这问问题)。


erhan 2012-01-30
  • 打赏
  • 举报
回复
表格部分删除,整个表格的结构都会乱掉。

所以,要么不删,要么整个表格删除,部分删除是不行的。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧