diff --git a/MainForm.pas b/MainForm.pas index 73dff86..6e941ab 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -8540,9 +8540,17 @@ end; procedure TMainForm.LayoutLeftPanel(Pluto: Boolean); // Показывает/скрывает Pluto RF-AGC блок под AGC и сдвигает панели ниже // (Bands и далее через RelayoutBelowBands). -var baseTop: Integer; +var + baseTop, Gap2, Gap4: Integer; begin if (PanelPlutoAGC = nil) or (PanelAGC = nil) or (PanelBands = nil) then Exit; + // BuildUI создаёт геометрию в 96-DPI координатах, после чего LCL + // масштабирует её вместе с формой. Эта перекладка выполняется позднее, + // уже после подключения устройства, поэтому её литеральные размеры тоже + // нужно перевести в текущий DPI формы. Иначе при 125% RX-панель снова + // получала Height=96, а её уже масштабированный ряд NR/NB/... обрезался. + Gap2 := Scale96ToForm(2); + Gap4 := Scale96ToForm(4); // Шаговый аттенюатор — только у openHPSDR; у AD936x усиление тракта в блоке // RF AGC ниже, поэтому ряд ATT убираем и RX-блок ужимаем. if (TrkAtt <> nil) and (LblAtt <> nil) and (LblAttVal <> nil) then @@ -8550,15 +8558,15 @@ begin TrkAtt.Visible := not Pluto; LblAtt.Visible := not Pluto; LblAttVal.Visible := not Pluto; - if Pluto then PanelRXBlock.Height := RX_BLOCK_H - else PanelRXBlock.Height := RX_BLOCK_H_ATT; - PanelAGC.Top := PanelRXBlock.Top + PanelRXBlock.Height + 4; + if Pluto then PanelRXBlock.Height := Scale96ToForm(RX_BLOCK_H) + else PanelRXBlock.Height := Scale96ToForm(RX_BLOCK_H_ATT); + PanelAGC.Top := PanelRXBlock.Top + PanelRXBlock.Height + Gap4; end; - baseTop := PanelAGC.Top + PanelAGC.Height + 4; + baseTop := PanelAGC.Top + PanelAGC.Height + Gap4; PanelPlutoAGC.Top := baseTop; PanelPlutoAGC.Visible := Pluto; if Pluto then - PanelBands.Top := baseTop + PanelPlutoAGC.Height + 2 + PanelBands.Top := baseTop + PanelPlutoAGC.Height + Gap2 else PanelBands.Top := baseTop; RelayoutBelowBands;