• 0
Winexcel

Выравнивание компонента

Вопрос

Здравствуйте! Имеется следующая задача: нужно поставить кнопку button2 по центру первой панели используя свойство Position. Прикрепил скрин изначального расположения компонентов.

Как пробовал сам? Хотел переконвертировать координаты центра Panel1 и затем присвоить их в свойство Position Button2 следующим образом:

var
  PointP:TPointF;
begin
  PointP:=PointF((Panel1.Width/2)-(Button2.Width/2), 0);
  PointP:=Panel1.LocalToAbsolute(PointP);
  PointP:=Button2.AbsoluteToLocal(PointP);
  Button2.Position.X:=PointP.X;

Но кнопка не встает по центру, что я сделал не правильно?

ScreenShot.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 ответа на этот вопрос

  • 0

Во-первых, учитывайте половину размера кнопки.

Во-вторых, использовать математический пересчёт относительно положения panel1 на форме

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Если Parent у Butto2 - Panel2

var
  PointP: TPointF;
begin
  PointP := PointF((Panel1.Width / 2) - (Button2.Width / 2), (Panel1.Height / 2) - (Button2.Height / 2));
  PointP := Panel1.LocalToAbsolute(PointP);
  Button2.Position.Point := Panel2.AbsoluteToLocal(PointP);
end;

А вообще зачем Position менять:

Button2.Parent := Panel1;
Button2.Align := TAlignLayout.Center;
Button2.BringToFront;

 

Изменено пользователем dnekrasov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу