delphi 嵌入网页回车触发不了页面submit事件,如何解决? 20
此时焦点已经定位到查询按钮上了,查询界面是delphi中嵌套的jsp网页,查询是一个submit提交按钮,<inputname="Submit1"type="submit...
此时焦点已经定位到查询按钮上了,查询界面是delphi中嵌套的jsp网页,查询是一个submit提交按钮,
<input name="Submit1" type="submit" id="Submit1" value="查询" class="btn3_mouseout">
但是任凭怎么按回车键,都触发不了这个查询事件,改如何处理,求大神啊???? 展开
<input name="Submit1" type="submit" id="Submit1" value="查询" class="btn3_mouseout">
但是任凭怎么按回车键,都触发不了这个查询事件,改如何处理,求大神啊???? 展开
2个回答
展开全部
这个问题其实非常的复杂。
因为Delphi在编写Webbrowser的时候,没有正确地编写快捷键的翻译程序。所以导致出现了这个问题。如果你想要解决这个问题的话。就必须首先改正Webbrowser的这个Bug.
解决方法如下:
首先从你的Delphi源码目录中找出OleCtrls.pas文件。然后复制这个文件到你工程目录,并添加到你的工程中。
修改你复制的OleCtrls.pas文件,首先从这个文件中找到TOleControl.WndProc函数,然后在这个函数中找到这一行:
WinMsg.HWnd := Handle;
将此行改为
WinMsg.HWnd := GetFocus;因为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单元。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询