[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