Label-ы зависящие от ширины друг друга.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Label-ы зависящие от ширины друг друга.

Сообщение jsa »

Здравствуйте.
Существует ли механизм сдвига Label и DBText в зависимости от того какой ширины получилось содержимое в лабеле слева?
Ну т.е. чтобы Left был привязан к правому краю предыдущего объекта (слева), а не к левому краю формы/панели ?
Правый край прдыдущего объекта может изменяться т.к. там стоит autosize=1 и строка может оказаться любой длины.

Извиняюсь за корявую формулировку, плохо владею терминологией.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Проверять событие OnResize одного контрола и передвигать второй, например.
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

Ну это очевидно. Я на всякий случай спросил, есть ли какая автоматика.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Можно еще попробовать View->Anchor Editor - привязать начало одного контрола к концу второго.
Untitled.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
serbod
постоялец
Сообщения: 449
Зарегистрирован: 16.09.2016 10:03:02
Откуда: Минск
Контактная информация:

Сообщение serbod »

Я делал для Delphi 7 автоматизатор масштабирования и размещения контролов, чтобы при изменении размеров шрифта от 6 до 20 в контролах и изменении размеров формы сохранялись пропорции и взаимное расположение.

https://github.com/serbod/NovaLib/blob/ ... scaler.pas

Рескалер контролов - автоматизатор масштабирования и размещения контролов
Меняет положение и размер контролов в соответствии с привязками сторон

Код: Выделить всё

Пример:

 [ed11       ] [ed12]
 [ed21] [ed22] [    ]

// ed11 имеет масштаб 2/3, привязан левой стороной к форме,
// правой стороной к размеру формы
SetControlPos(ControlPos, ed11, 2/3);
SetSideAnchor(ControlPos.AnchorLeft, Self, asSame);
SetSideAnchor(ControlPos.AnchorRight, Self, asSize);
AddControlPosition(ControlPos);

// ed12 привязан левой стороной к ed11, правой к границе формы
SetControlPos(ControlPos, ed12);
SetSideAnchor(ControlPos.AnchorLeft, ed11, asOpposite);
SetSideAnchor(ControlPos.AnchorRight, Self, asSame);
AddControlPosition(ControlPos);

// ed21 привязан верхней стороной к нижней стороне ed11
// левой стороной к форме
// правой стороной к ed12, его противоположной стороне (левой)
// масштаб задан 1/2
SetControlPos(ControlPos, ed21, 1/2);
SetSideAnchor(ControlPos.AnchorTop, ed11, asOpposite);
SetSideAnchor(ControlPos.AnchorLeft, Self, asSame);
SetSideAnchor(ControlPos.AnchorRight, ed12, asOpposite);
AddControlPosition(ControlPos);

// ed22 привязан левой стороной к ed21, правой стороной привязан к ed12
SetControlPos(ControlPos, ed22);
SetSideAnchor(ControlPos.AnchorLeft, ed21, asOpposite);
SetSideAnchor(ControlPos.AnchorRight, ed12, asOpposite);
AddControlPosition(ControlPos);
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

Снег Север писал(а):Можно еще попробовать View->Anchor Editor - привязать начало одного контрола к концу второго.

Вот ведь..., я открывал когда-то эти настройки, и не догадался для чего они.
Спасибо.
Ответить