Как отключить Backspace в WebBrowser - PullRequest
2 голосов
/ 13 июня 2011

Когда я нажимаю Backspace, Web-browser переходит на предыдущую страницу. Как я могу отключить его, не предотвращая возможность очистки текста?

Ответы [ 2 ]

3 голосов
/ 13 июня 2011

TWebBrowser, похоже, не имеет события OnKeydown, а также имеет много других проблем.Я обычно забываю об этом и захожу на TEmbeddedWB (пакет компонентов встроенного веб-браузера), и он обладает улучшенными функциями.

Я написал некоторый код, чтобы попытаться определить, находимся ли мы в элементе редактирования,и только условно блокировать клавиши возврата, поскольку, как говорит Пактас, простое блокирование события 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 голос
/ 13 июня 2011

Единственный способ сделать это - проверять каждое нажатие клавиши и, если обнаружен возврат, игнорировать его.Однако вам также необходимо следить за тем, сфокусированы ли какие-либо из ваших входных данных, чтобы пользователи могли сохранить удаление назад.

...