如何让TWebBrowser按Del键时会删除所选全部内容﹖
不知道你们有没有注意到,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中部份文字的就没有效。
谁知道更好的方法﹖