[Lazarus] TWinControl.WMSize loop on WinCE

patspiper patspiper at gmail.com
Mon Feb 9 21:41:04 CET 2015


On 09/02/15 22:07, Mattias Gaertner wrote:
> On Mon, 09 Feb 2015 21:55:59 +0200
> patspiper <patspiper at gmail.com> wrote:
>
>> I have finally found the trigger, though not the cause, of the dreaded
>> 'TWinControl.WMSize loop detected' exception that prevents the use of
>> TCalendarDialog, TDateEdit, and TDateTimePicker with WinCE
>> (http://bugs.freepascal.org/view.php?id=21282). These 3 controls consist
>> of a TCalendar (with either Autosize=True or Align<>alNone) embedded on
>> a form. It is this particular autosizing/aligning which triggers the
>> exception as setting Autosize to False and Align to AlNone works well.
>>
>> TCalendar's width is 220 while the screen's width is 240 (my WinCE
>> device). I tried to reproduce the error on a Linux desktop by enlarging
>> TCalendar to be almost as wide as the screen with no success.
>>
>> Any hints/ideas on what might be going on here?
> Maybe on WinCE the calendar is limited to some Width, but the WinCE
> interface does not report the correct constraints.
>
> Calendar1.Constraints.Min/MaxInterfaceWidth
>
> In this case the LCL sets a Width and the WinCE sets another creating a
> loop.
I put a TCalendar with no autosizing/aligning and a TEdit with 
Align=AlBottom on the main form.
xxx.Constraints.Min/MaxInterfaceWidth for both components are 0/0 on 
WinCE and 1/0 on Linux (I used a button to trigger the output of the 
values).

Note that setting the calendar's autosize to true will cause the WMSize 
loop on program startup. This is not the case for the TEdit (setting 
Align to AlBottom works fine).

Stephano




More information about the Lazarus mailing list