In one of my Windows programs I use a splitter to separate two VirtualTreeView 
components on a Form.
The relation of the heights of these two VirtualTreeView components should be 
constant
even if the height of the Form changed.
To achieve this, the two VirtualTreeView components are anchored to the 
splitter and
I use the OnResize event to move the splitter in case the height of the form 
has changed.

This works well except for one very special case:
If I type (on Windows 8.1) Windows key + arrow down three times and then go to 
the (now invisible program)
with Alt+Tab then the program is shown again but consists of the Windows header 
with the
standard icons for minimize, maximize and close only.
If I then click on the icon to maximize the program I get an exception in
TControl.InvalidatePreferredSize where RaiseLoop is executed.
This only happens when I use the above key combinations.
I don't know what the exception actually means and how I can avoid this crash.
Any ideas?

BTW:
The help in Lazarus about the OnResize event says:

"This event is triggered after the Width, Height, ClientWidth or ClientHeight 
of the control has changed,
and before the LCL sends the new size to the widgetset.
The size of the underlying widget (e.g. unit LCLIntf function GetWindowSize and 
GetClientRect) may
differ from the control's Width/Height/ClientRect during OnResize.
During autosize the size can change multiple times, but only the last change 
triggers the OnResize."
[...]
"Especially it is not sufficient to write only a TForm.OnResize handler
to resize all controls on the form. This is a common bug in Delphi 
applications."

What does the last sentence mean?
What else is needed to resize all controls on the form?

--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus-ide.org
http://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to