为什么箭头键导航在TWebBrowser中不起作用?

时间:2016-11-17 17:24:03

标签: delphi delphi-xe7 twebbrowser

这是一个在VCL应用程序中托管TWebBrowser控件的简单程序:

Unit1.pas

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, 
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  Browser: TWebBrowser;
begin
  Browser := TWebBrowser.Create(Self);
  TOleControl(Browser).Parent := Self;
  Browser.Align := alClient;
  Browser.Navigate('http://www.bbc.co.uk/');
end;

end.

Unit1.dfm

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 587
  ClientWidth = 928
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
end

当我运行程序时,我希望能够使用箭头键向上/向下/向左/向右滚动页面。但是,这些键没有任何效果。我可以使用向上翻页和向下翻页,但不能上/下/左/右。

我使用WebBrowser控件在.net WinForms应用程序中重新创建了等效的应用程序,行为完全相同。这似乎暗示了潜在控制的问题。

我可以做任何事情让这些钥匙工作吗?或者这只是一个失败的原因?

1 个答案:

答案 0 :(得分:4)

我相信表单将这些键解释为对话框导航键。所以我更改了控件对@Override public void onAttach(Activity activity) { super.onAttach(activity); mActivity = activity; } 消息的响应,以请求控件处理这些键:

$scope.pay_holiday_days = (parseInt($scope.reached_holiday_days) + pending_holiday_days) * $scope.daily_base_salary;

这似乎可以解决问题。