fix(ui): scale Pluto left-panel relayout

This commit is contained in:
2026-08-05 13:24:54 +03:00
parent 907c2c05c3
commit 94bb15bbaf
+14 -6
View File
@@ -8540,9 +8540,17 @@ end;
procedure TMainForm.LayoutLeftPanel(Pluto: Boolean); procedure TMainForm.LayoutLeftPanel(Pluto: Boolean);
// Показывает/скрывает Pluto RF-AGC блок под AGC и сдвигает панели ниже // Показывает/скрывает Pluto RF-AGC блок под AGC и сдвигает панели ниже
// (Bands и далее через RelayoutBelowBands). // (Bands и далее через RelayoutBelowBands).
var baseTop: Integer; var
baseTop, Gap2, Gap4: Integer;
begin begin
if (PanelPlutoAGC = nil) or (PanelAGC = nil) or (PanelBands = nil) then Exit; 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 усиление тракта в блоке // Шаговый аттенюатор — только у openHPSDR; у AD936x усиление тракта в блоке
// RF AGC ниже, поэтому ряд ATT убираем и RX-блок ужимаем. // RF AGC ниже, поэтому ряд ATT убираем и RX-блок ужимаем.
if (TrkAtt <> nil) and (LblAtt <> nil) and (LblAttVal <> nil) then if (TrkAtt <> nil) and (LblAtt <> nil) and (LblAttVal <> nil) then
@@ -8550,15 +8558,15 @@ begin
TrkAtt.Visible := not Pluto; TrkAtt.Visible := not Pluto;
LblAtt.Visible := not Pluto; LblAtt.Visible := not Pluto;
LblAttVal.Visible := not Pluto; LblAttVal.Visible := not Pluto;
if Pluto then PanelRXBlock.Height := RX_BLOCK_H if Pluto then PanelRXBlock.Height := Scale96ToForm(RX_BLOCK_H)
else PanelRXBlock.Height := RX_BLOCK_H_ATT; else PanelRXBlock.Height := Scale96ToForm(RX_BLOCK_H_ATT);
PanelAGC.Top := PanelRXBlock.Top + PanelRXBlock.Height + 4; PanelAGC.Top := PanelRXBlock.Top + PanelRXBlock.Height + Gap4;
end; end;
baseTop := PanelAGC.Top + PanelAGC.Height + 4; baseTop := PanelAGC.Top + PanelAGC.Height + Gap4;
PanelPlutoAGC.Top := baseTop; PanelPlutoAGC.Top := baseTop;
PanelPlutoAGC.Visible := Pluto; PanelPlutoAGC.Visible := Pluto;
if Pluto then if Pluto then
PanelBands.Top := baseTop + PanelPlutoAGC.Height + 2 PanelBands.Top := baseTop + PanelPlutoAGC.Height + Gap2
else else
PanelBands.Top := baseTop; PanelBands.Top := baseTop;
RelayoutBelowBands; RelayoutBelowBands;