К уважаемым коллегам просьба: протестировать такой фикс в KOL ("правильном", естественно)
#pas
//[procedure AlignChildrenProc]
{$ifdef ASM_VERSION}
procedure AlignChildrenProc(P: PObj);
const AlignModes = (1 shl byte(caBottom))+(1 shl byte(caTop))+
(((1 shl byte(caRight)) +(1 shl byte(caLeft)))shl 8)+
(((1 shl byte(caClient))+(1 shl byte(caNone)))shl 16);
asm
test eax,eax
jz @@Ret
// с этого места ------------------
btr dword ptr[eax].TControl.fAligning,oaFromSelf
jc @@20
cmp [eax].TControl.fParent,0
setz dl
or dl,[eax].TControl.fisForm
jnz @@20
// до этого ------------------------
or byte ptr[eax].TControl.fAligning,(1 shl oaWaitAlign)
mov eax,[eax].TControl.fParent
@@20:
call @@ToBeAlign
jnz @@DoAlign
@@Ret:
retn
@@ToBeAlign:
.........
У меня заработало. Но у меня же еще "некоторые оптимизации" появились... Несущественные для этого бага, как оказалось.
Почему "32" - так не фига и не понял. Но заработало.