Выравнивание контролов размещенных в TControlBar

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Выравнивание контролов размещенных в TControlBar

Сообщение ssnakess » 19.03.2024 16:57:48

Чесслово, никогда не работал с TControlBar. Всегда хватало TToolBar. :)
Но вот по задаче, был бы логично сделать две панели TToolBar и разместить их в TControlBar.
перекопал весь интернет, но так и не нашел решения проблемы с выравниванием тулбаров размещенных в контролбаре :(
В ide - настроил вот так
Изображение
Т.е. управлял Top и Left Toolbar1 и ToolBar2, и они вот встали красиво и как надо

Компилирую, запускаю и в итоге, все выстраиваются каждый в свою линии да еще и с промежутком
Изображение

Причем такая же картина наблюдается если просто закрыть лазарус и открыть его с этим же проектом.

подскажите, как задать первоначальное положение контролов размещенных в ControlBar :(

Добавлено спустя 31 минуту 1 секунду:
Сделал такой вот костыль
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
  // размещаем еще один тулбар в контролбаре
  ToolBar3.Align:=alNone;
  ToolBar3.Parent:=ControlBar1;
  ToolBar3.Left:=200;
  Toolbar3.top:=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.FormShow(Sender: TObject);
begin
  // выравнивание размещенных тулбаров по левому краю в одну строку
  Toolbar1.Left:=0;
  ToolBar1.Top:=0;
  ToolBar2.Left:=0;
  Toolbar2.Top:=0;
end;


Выравнивает по левому краю.
Но имхо это костыль, т.к. работает только в том случае если форма отобразилась, т.е. на OnCreate формы - не работает
только на OnFormShow
Так же непонятно вот это
Код: Выделить всё
 
  ToolBar3.Left:=200;
  Toolbar3.top:=0;

т.к. 200 - это установлено чисто эмпирическим путем..., если ставить меньше, то третья панель размещается вторым рядом со сдвигом вправо на указанное количество пикселей
а вот когда 200 и более, то она пришвартовывается к крайней правой панели в первом ряду, но опять таки задать безумно большое число не получается,
например ставишь 1900, и панелька стоит в первом ряду, но почти уехала за край окна, т.е. она разместилась явно не на 1900 пикселях, а просто там стало значение которое позволяет отобразить левую часть панели
в правом крае окна (пикселей на 10, такой хвостик от панели торчит :) )

Очень прошу, подскажите, как работать с этим контролабаром нормально :)
ssnakess
новенький
 
Сообщения: 36
Зарегистрирован: 24.09.2011 23:08:55

Re: Выравнивание контролов размещенных в TControlBar

Сообщение Alex2013 » 01.04.2024 13:03:16

"Навскидку" в инспекторе объектов настроить "соседей" ( Свойство TToolBarХХ.Anchors )
или попроще (тоже в инспекторе объектов) TToolBarХХ.Align:=alLeft и отключить TControlBar.AutoSize:=False;

Зы
Для "ручной настройки" можно юзать FormActivate (в оличии от FormShow ( который может вызывается несколько раз) его вызов обычно происходит один раз сразу после FormCreate)
Alex2013
долгожитель
 
Сообщения: 2937
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru