Вы оставили открытые фактические размеры изображений, так что здесь это общая идея с некоторыми примерами размеров, которые вам придется принять по своему вкусу. Я сделал несколько начальных тестов с кнопками (нормальная ширина = 75), поэтому я выбрал размер TFlowPanel
до 235 пикселей в ширину.
Идея состоит в том, чтобы иметь TFlowPanel
с фиксированной шириной (Constraints.MaxWidth = 235; Constraints.MinWidth = 235;
), но AutoSize=True
, чтобы он мог расти вниз. Если вы добавите, например, Компоненты шириной 75px, 3 из них идеально помещаются в один ряд. Если шире, только 2 или даже только 1 помещаются в ряд. Насколько вы хотите. Но если ширина всего 56px (среднее значение) или меньше, число компонентов будет равно четырем или более.
Я предлагаю решение разместить такой меньший компонент на отдельной панели шириной 75 пикселей и эту панель на TFlowPanel
. Таким образом, не более трех компонентов поместятся в одном ряду.
Это код, с которым несколько кнопок были размещены на TFlowPanel
.
procedure TForm3.Button1Click(Sender: TObject);
var
btn: TButton;
pan: TPanel;
begin
inc(count);
btn := TButton.Create(self);
btn.Width := random(60)+35;
if btn.Width < 75 then
begin
pan := TPanel.Create(self);
pan.Width := 75;
pan.Height := 30;
pan.BevelOuter := bvNone;
btn.Parent := pan;
pan.Parent := FlowPanel1;
end
else
begin
btn.Parent := FlowPanel1;
end;
btn.Caption := IntToStr(count);
end;
И конечный результат
Альтернативное решение
Другое решение (поскольку вы упомянули TImage
с) - всегда создавать TImage
с шириной не менее 75px . Изображение (если оно меньше) может быть центрировано в TImage
, если хотите. Это основано на том факте, что изображение не влияет на размер элемента управления TImage
(если вы этого не хотите).
Кроме того, если вам действительно не нужно показывать изображения в полном натуральном размере, вы можете установить свойство Proportional
true
. Из документов:
Если для параметра Пропорционально задано значение true, изображения, которые слишком велики, чтобы поместиться в элемент управления изображением, уменьшаются (при сохранении того же соотношения сторон) до тех пор, пока они не поместятся в элемент управления изображением.