Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2021-02

Borderspacing property not working?

5 messages · 2 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Timothy Groves

I have created several dynamic controls in my form, and setting the BorderSpacing property produces consistently incorrect results. Dynamically created controls will exhibit borders between themselves, but not to the parent object. What am I doing wrong?

Here is a chunk of the offending code.

  for index := 0 to 8 do begin
    labSurface [index] := tLabel.Create (Application);
    with (labSurface [index]) do begin
      parent := tabSurface;
      Caption := LocationNames [index];
      BorderSpacing.Around := 8;
      BorderSpacing.Left := 8;
      Anchors := [akTop, akLeft];
    end;
  end;
  labSurface [0].AnchorSide [akTop].Control := labSurfaceLocation;
  labSurface [0].AnchorSide [akTop].Side := asrBottom;
  labSurface [0].AnchorSide [akLeft].Control := Parent;
  labSurface [0].AnchorSide [akLeft].Side := asrRight;
  for index := 1 to 8 do begin
    labSurface [index].AnchorSide [akTop].Control := labSurface [index - 1];
    labSurface [index].AnchorSide [akTop].Side := asrBottom;
    labSurface [index].AnchorSide [akLeft].Control := Parent;
    labSurface [index].AnchorSide [akLeft].Side := asrRight;
  end;
"Cows fly like clouds, but are never quite successful." --Megahal -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20210212/82eaeaac/attachment.html>

Reply by email

Vojtěch Čihák
to Timothy Groves
Try to add there AnchorParallel:
 
labSurface [0].AnchorSide [akTop].Control := labSurfaceLocation;
labSurface [0].AnchorSide [akTop].Side := asrBottom;
labSurface [0].AnchorSide [akLeft].Control := Parent;
labSurface [0].AnchorSide [akLeft].Side := asrRight;
labSurface[0].AnchorParallel(akLeft, 0, labSurfaceLocation);
for index := 1 to 8 do begin
labSurface [index].AnchorSide [akTop].Control := labSurface [index - 1];
labSurface [index].AnchorSide [akTop].Side := asrBottom;
labSurface [index].AnchorSide [akLeft].Control := Parent;
labSurface [index].AnchorSide [akLeft].Side := asrRight;
labSurface [index].AnchorParallel(akLeft, 0, labSurfaceLocation);
end;                     
 

Reply by email

Timothy Groves
to Vojtěch Čihák

That worked. Thanks.

On Fri, 12 Feb 2021 at 14:06, Vojtěch Čihák via lazarus <

Show quoted text 83 lines
wrote: Try to add there AnchorParallel: labSurface [0].AnchorSide [akTop].Control := labSurfaceLocation; labSurface [0].AnchorSide [akTop].Side := asrBottom; labSurface [0].AnchorSide [akLeft].Control := Parent; labSurface [0].AnchorSide [akLeft].Side := asrRight; labSurface[0].AnchorParallel(akLeft, 0, labSurfaceLocation); for index := 1 to 8 do begin labSurface [index].AnchorSide [akTop].Control := labSurface [index - 1]; labSurface [index].AnchorSide [akTop].Side := asrBottom; labSurface [index].AnchorSide [akLeft].Control := Parent; labSurface [index].AnchorSide [akLeft].Side := asrRight; labSurface [index].AnchorParallel(akLeft, 0, labSurfaceLocation); end; ______________________________________________________________ > Od: "Timothy Groves via lazarus" > Komu: "Lazarus mailing list" > Datum: 12.02.2021 19:26 > Předmět: [Lazarus] Borderspacing property not working? > I have created several dynamic controls in my form, and setting the BorderSpacing property produces consistently incorrect results. Dynamically created controls will exhibit borders between themselves, but not to the parent object. What am I doing wrong? Here is a chunk of the offending code. for index := 0 to 8 do begin labSurface [index] := tLabel.Create (Application); with (labSurface [index]) do begin parent := tabSurface; Caption := LocationNames [index]; BorderSpacing.Around := 8; BorderSpacing.Left := 8; Anchors := [akTop, akLeft]; end; end; labSurface [0].AnchorSide [akTop].Control := labSurfaceLocation; labSurface [0].AnchorSide [akTop].Side := asrBottom; labSurface [0].AnchorSide [akLeft].Control := Parent; labSurface [0].AnchorSide [akLeft].Side := asrRight; for index := 1 to 8 do begin labSurface [index].AnchorSide [akTop].Control := labSurface [index - 1]; labSurface [index].AnchorSide [akTop].Side := asrBottom; labSurface [index].AnchorSide [akLeft].Control := Parent; labSurface [index].AnchorSide [akLeft].Side := asrRight; end; -- "Cows fly like clouds, but are never quite successful." --Megahal ---------- -- _______________________________________________ lazarus mailing list https://lists.lazarus-ide.org/listinfo/lazarus -- _______________________________________________ lazarus mailing list https://lists.lazarus-ide.org/listinfo/lazarus
"Cows fly like clouds, but are never quite successful." --Megahal -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20210212/d33af72c/attachment-0001.html>

Reply by email

Timothy Groves
to Timothy Groves

Update: Then I realized what had changed. I attempted to clean up some of my other dynamically created page tabs, and problems persisted. I ran some experiments, and determined the root problem. So this problem is more properly expressed as: When anchoring to Parent, border settings are ignored, regardless if they are set using a method (such as AnchorToNeighbour or AnchorParallel) or directly (by changing the BorderSpacing property). Is this a known bug? Or is it an undocumented feature? If the latter, how do I anchor to a parent in a manner that respects border spacing?

Timothy Groves wrote 92 lines
That worked. Thanks. On Fri, 12 Feb 2021 at 14:06, Vojtěch Čihák via lazarus < > wrote: > Try to add there AnchorParallel: > > > > labSurface [0].AnchorSide [akTop].Control := labSurfaceLocation; > > labSurface [0].AnchorSide [akTop].Side := asrBottom; > > labSurface [0].AnchorSide [akLeft].Control := Parent; > > labSurface [0].AnchorSide [akLeft].Side := asrRight; > > labSurface[0].AnchorParallel(akLeft, 0, labSurfaceLocation); > > for index := 1 to 8 do begin > > labSurface [index].AnchorSide [akTop].Control := labSurface [index - 1]; > > labSurface [index].AnchorSide [akTop].Side := asrBottom; > > labSurface [index].AnchorSide [akLeft].Control := Parent; > > labSurface [index].AnchorSide [akLeft].Side := asrRight; > > labSurface [index].AnchorParallel(akLeft, 0, labSurfaceLocation); > > end; > > > > ______________________________________________________________ > > Od: "Timothy Groves via lazarus" > > Komu: "Lazarus mailing list" > > Datum: 12.02.2021 19:26 > > Předmět: [Lazarus] Borderspacing property not working? > > > I have created several dynamic controls in my form, and setting the > BorderSpacing property produces consistently incorrect results. > Dynamically created controls will exhibit borders between themselves, but > not to the parent object. What am I doing wrong? > Here is a chunk of the offending code. > for index := 0 to 8 do begin > labSurface [index] := tLabel.Create (Application); > with (labSurface [index]) do begin > parent := tabSurface; > Caption := LocationNames [index]; > BorderSpacing.Around := 8; > BorderSpacing.Left := 8; > Anchors := [akTop, akLeft]; > end; > end; > > labSurface [0].AnchorSide [akTop].Control := labSurfaceLocation; > labSurface [0].AnchorSide [akTop].Side := asrBottom; > labSurface [0].AnchorSide [akLeft].Control := Parent; > labSurface [0].AnchorSide [akLeft].Side := asrRight; > for index := 1 to 8 do begin > labSurface [index].AnchorSide [akTop].Control := labSurface [index - > 1]; > labSurface [index].AnchorSide [akTop].Side := asrBottom; > labSurface [index].AnchorSide [akLeft].Control := Parent; > labSurface [index].AnchorSide [akLeft].Side := asrRight; > end; > -- > "Cows fly like clouds, but are never quite successful." > --Megahal > > > ---------- > > -- > _______________________________________________ > lazarus mailing list > > https://lists.lazarus-ide.org/listinfo/lazarus > -- > _______________________________________________ > lazarus mailing list > > https://lists.lazarus-ide.org/listinfo/lazarus > -- "Cows fly like clouds, but are never quite successful." --Megahal
"Cows fly like clouds, but are never quite successful." --Megahal -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20210212/f07588a8/attachment.html>

Reply by email

Vojtěch Čihák
to Timothy Groves

You probably do something wrong.
 
Here both
 
Button1.AnchorParallel(akLeft, 10, Form1);
 
or
 
Button1.BorderSpacing.Left:=10;
Button1.AnchorSide[akLeft].Control:=Form1;
Button1.Anchors:=[akLeft];
 
works well.
 
V .
 

Reply by email