Вверх ↑
Разработчик
Ответов: 26149
Рейтинг: 2127
#1: 2022-01-14 17:13:11 ЛС | профиль | цитата
В коде внутренние переменные ни в пень не уперлись, код Anchors вообще смешной получился
  if _prop_akRight then
if not _prop_akLeft then
SetWindowPos(Control.Handle, 0, FParent.Width - (fOldWidth + fOldRight), Control.Top, fOldWidth, Control.Height, SWP_NOZORDER)
else
SetWindowPos(Control.Handle, 0, fOldLeft, Control.Top, FParent.Width - (fOldLeft + fOldRight), Control.Height, SWP_NOZORDER);

if _prop_akBottom then
if not _prop_akTop then
SetWindowPos(Control.Handle, 0, Control.Left, FParent.Height - (fOldHeight + fOldBottom), Control.Width, fOldHeight, SWP_NOZORDER)
else
SetWindowPos(Control.Handle, 0, Control.Left, Control.Top, Control.Width, fParent.Height - (fOldTop + fOldBottom), SWP_NOZORDER);


--- Добавлено в 2022-01-14 17:18:03

andrestudio писал(а):
х.з Handle разные а размер один и тот же что для формы что для панели на ней. Соответственно и детки в этой панели балдеют

Ага, понял, проверю.

--- Добавлено в 2022-01-14 17:21:12

andrestudio писал(а):
пробовал на свою месагу зацепить, лажает

Странно, на моей работает, но я вызываю не через Resize:
      WM_WINDOWPOSCHANGED:
if (Control.ChildCount <> 0) then
for i := 0 to Control.ChildCount - 1 do
if (Control.Children[i].Align = caNone) and (_prop_akLeft or _prop_akTop or _prop_akRight or _prop_akBottom) and (Split = nil) and (fLayout = nil) then
Sendmessage(Control.Children[i].Handle, US_SETANCHORS, 0, 0);
Конечное условие стоит специально, чтобы лишний раз не нагружать обработчик
карма: 22

0
Редактировалось 6 раз(а), последний 2022-01-14 17:23:14