Thanks for the hint but I found a solution. I've moved code to ChangeBounds method and it looks like it works correctly with Anchors. There is still a problem with form designer, but I can live with it - I simply use object inspector instead of using a mouse.

Regards, Michał.


W dniu 2018-09-19 o 15:17, Vojtěch Čihák via Lazarus pisze:
Try set Constraints - set MinHeight=MaxHeight=your calculated height, and the same for Width.

But it will maybe fool Lazarus autosizing mechanism.

V.

______________________________________________________________
 > Od: "gabor via Lazarus" <[email protected]>
 > Komu: [email protected]
 > Datum: 19.09.2018 14:29
 > Předmět: [Lazarus] Custom control with stepwise size adjustment
 >

Hi.
How to properly create a control with step-size adjustment? I mean a
control whose width is a multiple of, eg. 16 (16,32,48...).
In delphi, I simply override TCustomControl.SetBounds method.

procedure TMyControl.SetBounds(aTop, aLeft, aWidth, aHeight: Integer);
begin
   aWidth := (aWidth div 16) * 16;
   if aWidth = 0 then
     aWidth := 16;
   aHeight := (aHeight div 16) * 16;
   if aHeight = 0 then
     aHeight := 16;
   inherited SetBounds(aTop, aLeft, aWidth, aHeight);
end;

Unfortunately, the same does not work well with LCL. Especially in
connection with Anchors or in form designer.
So how to deal with it?

Regards, Michał.
--
_______________________________________________
Lazarus mailing list
[email protected]
https://lists.lazarus-ide.org/listinfo/lazarus


--
_______________________________________________
Lazarus mailing list
[email protected]
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to