2

を押すBackspaceと、Web-browser前のページに移動します。テキストの消去機能を妨げずに無効にするにはどうすればよいですか?

4

2 に答える 2

3

TWebBrowser には OnKeydown イベントがないようで、他にも多くの問題があります。私は通常、それを忘れてTEmbeddedWB (組み込み Web ブラウザー コンポーネント パック) にアクセスしますが、より優れた機能を備えています。

Paktas が言うように、単に OnKey イベントをブロックすると、TEmbeddedWB
を使用して Web ページ フォームでの編集が中断されるため、編集コントロール内にあるかどうかを検出し、条件付きでバックスペース キーのみをブロックするコードを書きました。コードは次のようになります。

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 に答える