在一窗体中有一dbgrid和webbrowser, 在webbrowser载入一个页面后,载入的页面也没有连接,鼠标在webbrowser上随便点几下,然后再回点dbgrid,此时dbgrid的单击双击事件都不会执行,整行选中状态也不会显示。
如果再点击了两外的控件,如treeview or text等,再回点dbgrid就可以了。为什么会是这样了?如何可以保持dbgrid中的一条记录保持选中状态下的高亮形式,并且点击webbrowser之后,再回点dbgrid单击和双击事件都能执行。
在线等待。分不够,可以再开贴给分。
详细一些最好,要不给个能实际实现功能的具体方法也行。
如果再点击了两外的控件,如treeview or text等,再回点dbgrid就可以了。为什么会是这样了?如何可以保持dbgrid中的一条记录保持选中状态下的高亮形式,并且点击webbrowser之后,再回点dbgrid单击和双击事件都能执行。
在线等待。分不够,可以再开贴给分。
详细一些最好,要不给个能实际实现功能的具体方法也行。
解决方案 »
- delphi如何得到文件扩展名
- 急呀,请问如何请dbGridEh中所选中的N条记录,导出到 Excel 中去? 给你100分,看你们有没有人来帮俺解答(真气人)
- 贴一段Zlib的压缩和解压缩函数
- GIS中的无级缩放是如何实现的?高分相送。
- [求助]如何取得本Application的版本号
- 再次散分:我可能是天生是个“愤青”,刚才看了个新闻,实在是太激动了!!!
- 菜鸟问题:请大侠给我解释一下啥是DCOM?为啥要用DCOM?
- 大家看过来啊(改变Ping命令中的原地址)求救!
- 条位请教下面两个函数有什么不同
- 求:Delphi控件,输入Ip地址,就像VC的IP Address控件一样。
- 光棍节的相亲
- 请问哪里错了?急~~~~
應該說,這是一個vcl的bug。
從其他winControl移動到webbrowser時,會執行focusControl動作,但我們選擇的是web的元素,focus失敗,整個過程就停止在這里。所以后續給之前擁有焦點的wincontrol發送cm_exit消息也沒執行,onexit事件也就不會被觸發了。正常來講,只要焦點有正常切換,onexit都會被觸發的。一個暫時的解決辦法是,在webbrowser.onStatusTextChange里這樣寫 if ActiveControl<>Sender then
ActiveControl := nil;使得vcl認為,activeControl不一樣,進而使得焦點可正常切換
begin
if FActiveControl <> Control then
begin
if not ((Control = nil) or (Control <> Self) and
(GetParentForm(Control) = Self) and ((csLoading in ComponentState) or
Control.CanFocus)) then
raise EInvalidOperation.Create(SCannotFocus);
FActiveControl := Control;
if not (csLoading in ComponentState) then
begin
if FActive then SetWindowFocus;
ActiveChanged;
end;
end;
end;