delphi 嵌入网页回车触发不了页面submit事件,如何解决?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 嵌入网页回车触发不了页面submit事件,如何解决?相关的知识,希望对你有一定的参考价值。
此时焦点已经定位到查询按钮上了,查询界面是delphi中嵌套的jsp网页,查询是一个submit提交按钮,
<input name="Submit1" type="submit" id="Submit1" value="查询" class="btn3_mouseout">
但是任凭怎么按回车键,都触发不了这个查询事件,改如何处理,求大神啊????
这个问题其实非常的复杂。
因为Delphi在编写Webbrowser的时候,没有正确地编写快捷键的翻译程序。所以导致出现了这个问题。如果你想要解决这个问题的话。就必须首先改正Webbrowser的这个Bug.
解决方法如下:
首先从你的Delphi源码目录中找出OleCtrls.pas文件。然后复制这个文件到你工程目录,并添加到你的工程中。
修改你复制的OleCtrls.pas文件,首先从这个文件中找到TOleControl.WndProc函数,然后在这个函数中找到这一行:
WinMsg.HWnd := Handle;
将此行改为
WinMsg.HWnd := GetFocus;
因为Webbrowser可能存在焦点定位错误的问题。所以,同样需要复制SHDocVw.pas文件到你的目录,并添加到你的工程中。并在重载TWebbrowser的WndProc函数:
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单元。
参考技术A 捕获keydown、keypress、keyup的事件,处理当keyCode = 13的时候去调用一下就行,如果还是不会的话继续联系我jialiu830205@163.com以上是关于delphi 嵌入网页回车触发不了页面submit事件,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章
delphi中,Tab键能移动光标到下一个编辑框,按回车键为何进入不了下一编辑框?