Вверх ↑
Ответов: 4611
Рейтинг: 745
#1: 2013-05-22 12:40:12 ЛС | профиль | цитата
Galkov, ну при большом желании Align можно выключать в рантайм.
andrestudio, тут проблема понимания вот этого кода в SetAnchors:

#pas
for i := 0 to Control.ChildCount - 1 do
begin

C := Control.Children[ i ];

with C{$ifndef F_P}^{$endif} do begin
cMaxHeight := THIWin(C).fMaxHeight;
По логике этот код в принципе не должен работать: нельзя делать THIWin(C) так как класс THIWin не наследует коловский класс TControl (которым является Control.Children[ i ]). Из нашего класса ThiWin можно получить привязанный TControl (по полю Control), но из него нельзя получить родительских/дочерних ThiWin. Через возможности TControl ты получаешь дочерние TControl, но из этих дочерних TControl не получится вытащить THIWin.fMaxHeight и т.д.
Почему это работает в Delphi? Возможно, по особенностях строения кодов публичные поля ThiWin располагаются в памяти сразу после полей объекта ThiWin.Control, и Delphi проглатывает это. В FPC возможно строение кода другое, поэтому не работает.
карма: 26

1
Голосовали:andrestudio