Я делал для 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);