Problem with ALT key blanking map

I'm not sure why but sometimes when using the ALT keys (for example to take screenshots of the form) it will blank the browser (looks like it fails to redraw).

Attempt to refocus the browser and pan the map or resizing the form seems to force it to repaint properly but directly trying to invalidate the form or components doesn't seem to work.

It seems to be some problem when enabling the project with run-time themes using XE5 (sp2).

Does anyone know if there is a workaround or fix for this problem?


I have tried to reproduce this here but failed so far.
On what operating system do you experience this issue? What exact key sequence are you using?

This is happening on Windows 7.  Usually after the first time I start my application just pressing the left ALT key will blank the map (after the map is loaded).  Afterwards it is more difficult to reproduce.

I couldn't reproduce the problem with the demo but I can simulate the problem by modifying the TWebGMapsDemo by enabling themes and forcing the WebGMaps component to invalidate...


procedure TFrmMain.BGoToAddressClick(Sender: TObject);
begin
  WebGMaps1.Invalidate;
  exit;



Recently I found this link on stack overflow and I am investigating if it will resolve the issue.
http://stackoverflow.com/questions/3680674/pressing-alt-clears-the-embedded-twebbrowser

This problem is also occurring when pressing the cursor keys the first time the map is loaded.

The OLE Webserver control is enbedded in the TWebGMaps component
(TWinControl), which hides the Webserver
control. The arrow keys, but also the alt key, results in a repaint of
the TWebGMaps control, but not in the embedded Webserver control.


The solution is to add [csAcceptsControls]
to the ControlStyle of a derived class of the TWebGMaps control, which
triggers in procedure TWinControl.CreateParams to set
WS_EX_CONTROLPARENT in the ExStyle parameter.

This means that all child controls are promoted one level up so the encapsulated WebBrowser (OLE control) is not behind a TWinControl (TWebGMaps) anymore and function as expected.

It's a bug in the TWebGMaps control. The bug can also be fixed when TWebGMaps is derived from TCustomPanel, which also sets [csAcceptsControls]
to the ControlStyle


constructor TAPWebGMaps.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csAcceptsControls]; 
  ...
end;



Hi,

Thank you for your suggestion.
We'll investigate if this can be implemented in a future version of the TMS WebGMaps.

I can confirm this issue has now been fixed.
The update will be available with the next release of the TMS WebGMaps.

Thanks

Thanks