当我按Backspace
时,Web-browser
将转到上一页。如何在不阻止清除文本功能的情况下禁用它?
问问题
1718 次
2 回答
3
TWebBrowser 似乎没有 OnKeydown 事件,而且它还有很多其他问题。我通常会忘记它并去TEmbeddedWB(嵌入式网络浏览器组件包),它有更好的功能。
我编写了一些代码来尝试检测我们是否在编辑控件中,并且仅有条件地阻止退格键,因为正如 Paktas 所说,简单地阻止 OnKey 事件会破坏
网页表单中的编辑,使用 TEmbeddedWB,代码如下所示:
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
element: IHTMLElement;
elementTagName: String;
begin
// form contains field: EmbeddedWB1: TEmbeddedWB which is an improved version of TWebBrowser.
element := EmbeddedWB1.GetActiveElement;
if Assigned( element ) then
begin
elementTagName := element.tagName;
end;
if ( not SameText( elementTagName, 'INPUT' ) )
and ( not SameText( elementTagName, 'TEXTAREA' ) ) then
if ((Key= VK_LEFT) and (Shift = [ssAlt]))
or ((Key= VK_RIGHT) and (Shift = [ssAlt]))
or (Key= VK_BROWSER_BACK)
or (Key= VK_BROWSER_FORWARD)
or(Key = VK_BACK) then
begin
Key := 0; { block backspace, but not in INPUT or TEXTAREA. }
Exit;
end;
end;
于 2011-06-13T15:33:19.570 回答
1
这样做的唯一方法是检查每个按键,如果检测到退格,则忽略它。但是,您还需要监控您的任何输入是否集中,以便用户仍然可以保留向后删除。
于 2011-06-13T11:52:20.413 回答