#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.
Комментариев нет:
Отправить комментарий