如何在WebBrowser中禁用Backspace

时间:2011-06-13 11:42:33

标签: delphi browser key backspace

当我按Backspace时,Web-browser将转到上一页。如何在不阻止清除文本功能的情况下禁用它?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

执行此操作的唯一方法是检查每次按键,如果检测到退格,请忽略它。但是,您还需要监视是否有任何输入是集中的,以便用户可以保留向后删除。