Как сделать MDI-приложение, где сливаются меню дочернего и главного окна, и полосы инструментов
Ваpиант 1. CoolBar.
procedure TMainForm.SetBands(AControls: arrayof TWinControl;
ABreaks: arrayof boolean);
var
i: integer;
beginwith CoolBar dobeginfor i:=0 to High(AControls) dobeginif Bands.Count=succ(i) then
TCoolBand.Create(Bands);
with Bands[succ(i)] dobeginif Assigned(Control) then
Control.Hide;
MinHeight:=AControls[i].Height;
Break:=ABreaks[i];
Control:=AControls[i];
Control.Show;
Visible:=true;
endend;
for i:=High(AControls)+2 to pred(Bands.Count) do
Bands[i].Free
endend;
и
procedure TMsgForm.FormActivate(Sender: TObject);
begin
MainForm.SetBands([ToolBar],[false])
end;
Пpимечание:
Оба массива pавны по длине. CoolBar.Bands[0] должен существовать всегда,.. на нём я pазмешаю "глобальные" кнопки. СoolBar[1] тоже можно сделать в DesignTime с Break:=false и пpидвинуть поближе с началу. Пpи CoolBar.AutoSize:=true возможно "мигании" (пpи добавлении на новую стpоку) так что можно добавить:
Первый подход использует компонент CoolBar, который позволяет создавать полосы (аналогичные панелям инструментов) и располагать их вертикально. Процедура SetBands используется для настройки cool bar с желаемыми контролами и разрывами.
В процедуре SetBands мы проходимся по массивам контролов и разрывов. Для каждого контрола создаем новый cool band, если это необходимо, настраиваем его свойства (например, высоту, разрыв) и отображаем.
Второй подход использует комбинацию панелей (TPanel) для создания объединенной панели инструментов и child bar. Компонент RxSplitter используется для разделения основной формы на две области: одну для панели инструментов и другую для child bar.
В процедуре FormActivate мы устанавливаем родителя панели инструментов в child bar и делаем ее видимой. В процедуре FormDeactivate мы скрываем панель инструментов и устанавливаем ее родителя обратно в основную форму.
Оба подхода должны достичь желаемого результата: объединенной меню и панели инструментов для основной формы и ее дочерних форм.
Как сделать MDI-приложение, где сливаются меню дочернего и главного окна, и полосы инструментов.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.