#delphi
Как сделать расстояние между края картинки и панели одинаковыми во всех ячейках?
У меня почему-то идет смещение картинок внутри панели.
procedure TForm1.FormCreate(Sender: TObject);
var
X, Y: Integer;
PanelArray: Array [1 .. 5, 1 .. 5] of TPanel;
ImgArray: Array [1 .. 5, 1 .. 5] of TImage;
begin
for Y := 1 to 5 do
for X := 1 to 5 do
begin
PanelArray[X, Y] := TPanel.Create(Self);
PanelArray[X, Y].Parent := Self;
PanelArray[X, Y].Color := clBtnFace;
PanelArray[X, Y].BevelInner := bvNone;
PanelArray[X, Y].BevelKind := bkNone;
PanelArray[X, Y].BevelOuter := bvRaised;
PanelArray[X, Y].Left := X * 170 - 150; // расстояние между панелями по горизонтали
PanelArray[X, Y].Top := Y * 170 - 150; // расстояние между панелями по вертикали
PanelArray[X, Y].Width := 150; // ширина панели
PanelArray[X, Y].Height := 155; // высота панели
ImgArray[X, Y] := TImage.Create(PanelArray[X, Y]);
ImgArray[X, Y].Parent := PanelArray[X, Y];
ImgArray[X, Y].Left := x * 10 - 8;
ImgArray[X, Y].Top := y * 10 - 8;
ImgArray[X, Y].Width := 100;
ImgArray[X, Y].Height := 100;
ImgArray[X, Y].Picture.LoadFromFile(IntToStr(x) + '.bmp');
end;
end;
Ответы
Ответ 1
PanelArray[X, Y].Width := 150; // ширина панели PanelArray[X, Y].Height := 150; // высота панели У Вас одна картинка на панели. Ее положение не будет зависеть от счетчиков циклов. ImgArray[X, Y].Left := 2; ImgArray[X, Y].Top := 2;Ответ 2
@Igor полностью прав. Могу дополнить только что можно еще так: ... ImgArray[X, Y].Align := alClient; //настройка отступов если нужно ImgArray[X, Y].AlignWithMargins := True; ImgArray[X, Y].Margins.Left := 2; ImgArray[X, Y].Margins.Top := 2; ImgArray[X, Y].Margins.Bottom := 0; ImgArray[X, Y].Margins.Right := 0; ... В таком случае не будет проблем с High Dpi.
Комментариев нет:
Отправить комментарий