delphi 嵌入网页回车触发不了页面submit事件,如何解决? 20

此时焦点已经定位到查询按钮上了,查询界面是delphi中嵌套的jsp网页,查询是一个submit提交按钮,<inputname="Submit1"type="submit... 此时焦点已经定位到查询按钮上了,查询界面是delphi中嵌套的jsp网页,查询是一个submit提交按钮,
<input name="Submit1" type="submit" id="Submit1" value="查询" class="btn3_mouseout">
但是任凭怎么按回车键,都触发不了这个查询事件,改如何处理,求大神啊????
展开
 我来答
至少让我看一眼
2014-01-01 · TA获得超过451个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:241万
展开全部

这个问题其实非常的复杂。

因为Delphi在编写Webbrowser的时候,没有正确地编写快捷键的翻译程序。所以导致出现了这个问题。如果你想要解决这个问题的话。就必须首先改正Webbrowser的这个Bug.

解决方法如下:

  1. 首先从你的Delphi源码目录中找出OleCtrls.pas文件。然后复制这个文件到你工程目录,并添加到你的工程中。

  2. 修改你复制的OleCtrls.pas文件,首先从这个文件中找到TOleControl.WndProc函数,然后在这个函数中找到这一行:
    WinMsg.HWnd := Handle;
    将此行改为
    WinMsg.HWnd := GetFocus;

  3. 因为Webbrowser可能存在焦点定位错误的问题。所以,同样需要复制SHDocVw.pas文件到你的目录,并添加到你的工程中。并在重载TWebbrowser的WndProc函数:

procedure TWebbrowser.WndProc(var Msg: TMessage);
begin
  try
    case Msg.Msg of
      WM_SETFOCUS:
      begin
        GetParentForm(Self).ActiveControl := nil; WinApi.Windows.SetFocus(Handle); Exit;
      end;
      CM_VISIBLECHANGED,WM_MOUSEACTIVATE:
        if TWinControl(Self).Visible then
          GetParentForm(Self).ActiveControl := nil;
    end;
  except

  end;
  inherited;
end;

另外,你如果使用的是Delphi XE2 以上的版本,OleCtrls单元的名称可能为Vcl.OleCtrls。你可能需要在ShdocVw单元中引用Forms、Messages与Controls单元。

疯狂的老贾
2014-01-01 · TA获得超过514个赞
知道小有建树答主
回答量:331
采纳率:83%
帮助的人:145万
展开全部
捕获keydown、keypress、keyup的事件,处理当keyCode = 13的时候去调用一下就行,如果还是不会的话继续联系我jialiu830205@163.com
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式