mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
vfo center
This commit is contained in:
+20
-13
@@ -1844,7 +1844,7 @@ const
|
||||
// VFO-B получает левый отступ = правому паддингу VFO-A для симметрии зазоров
|
||||
VFO_B_LEFT_PAD = VFO_FREQ_LEFT_PAD + VFO_FREQ_RIGHT_PAD; // = 10
|
||||
var
|
||||
BlockH, FreqTop, SafeLeft, SafeRight, GroupLeft, GroupTop: Integer;
|
||||
BlockH, FreqTop, CenterY, SafeLeft, SafeRight, GroupLeft, GroupTop: Integer;
|
||||
RightW, SMW, SMLeft, AvailW, MinGroupW, ExtraPerSide, DynGap: Integer;
|
||||
TopVfoAW, TopVfoBW, NeedFreqAW, NeedFreqBW, FreqTextW, GroupW: Integer;
|
||||
XferX, XferY: Integer;
|
||||
@@ -1900,23 +1900,29 @@ begin
|
||||
GroupLeft := SafeLeft + (AvailW - GroupW) div 2;
|
||||
GroupTop := TOP_OFFSET;
|
||||
|
||||
// Ось выравнивания: центр S-метра на форме (SMTop=3, SMBot=63) → y=33
|
||||
// Относительно PanelTopVfoGroup (GroupTop=2): CenterY = 33 - 2 = 31
|
||||
CenterY := (PanelToolbar.Height + 30) div 2 - GroupTop;
|
||||
|
||||
PanelTopVfoGroup.SetBounds(GroupLeft, GroupTop, GroupW, BlockH);
|
||||
PanelTopVfoGroup.Visible := True;
|
||||
|
||||
// VFO-A: левый край группы
|
||||
PanelTopVfoA.SetBounds(0, 0, TopVfoAW, BlockH);
|
||||
PanelTopVfoA.Visible := True;
|
||||
PanelVfoA.SetBounds(0, 0, TopVfoAW, TOP_VFO_FREQ_H);
|
||||
FreqTop := ((BtnTopVfoASelect.Top + BtnTopVfoASelect.Height +
|
||||
BtnTopVfoATX.Top) div 2) - (TOP_VFO_FREQ_H div 2);
|
||||
PanelVfoA.SetBounds(0, 0, TopVfoAW, BlockH);
|
||||
// A выше оси, TX ниже; 1px зазор с каждой стороны
|
||||
BtnTopVfoASelect.SetBounds(0, CenterY - BtnTopVfoASelect.Height - 1,
|
||||
BtnTopVfoASelect.Width, BtnTopVfoASelect.Height);
|
||||
BtnTopVfoATX.SetBounds(0, CenterY + 1,
|
||||
BtnTopVfoATX.Width, BtnTopVfoATX.Height);
|
||||
FreqTop := CenterY - (TOP_VFO_FREQ_H div 2);
|
||||
FreqDispA.SetBounds(FreqDispA.Left, FreqTop,
|
||||
FreqTextW + VFO_FREQ_LEFT_PAD + VFO_FREQ_RIGHT_PAD, TOP_VFO_FREQ_H);
|
||||
BtnTopVfoASelect.Left := 0;
|
||||
BtnTopVfoATX.Left := 0;
|
||||
|
||||
// Кнопки трансфера: горизонтальный ряд, вертикально по центру
|
||||
// Кнопки трансфера: горизонтальный ряд, вертикально по оси
|
||||
XferX := TopVfoAW + DynGap;
|
||||
XferY := (BlockH - XFER_BTN_H) div 2;
|
||||
XferY := CenterY - (XFER_BTN_H div 2);
|
||||
PanelVfoButtons.SetBounds(XferX, XferY, XFER_PANEL_W, XFER_BTN_H);
|
||||
BtnVfoACopyB.SetBounds(0, 0, XFER_BTN_W, XFER_BTN_H);
|
||||
BtnVfoSwap.SetBounds(XFER_BTN_W + XFER_BTN_GAP, 0, XFER_BTN_W, XFER_BTN_H);
|
||||
@@ -1925,13 +1931,14 @@ begin
|
||||
// VFO-B: правый край группы
|
||||
PanelTopVfoB.SetBounds(TopVfoAW + DynGap + XFER_PANEL_W + DynGap, 0, TopVfoBW, BlockH);
|
||||
PanelTopVfoB.Visible := True;
|
||||
PanelVfoB.SetBounds(0, 0, TopVfoBW, TOP_VFO_FREQ_H);
|
||||
FreqTop := ((BtnTopVfoBSelect.Top + BtnTopVfoBSelect.Height +
|
||||
BtnTopVfoBTX.Top) div 2) - (TOP_VFO_FREQ_H div 2);
|
||||
PanelVfoB.SetBounds(0, 0, TopVfoBW, BlockH);
|
||||
BtnTopVfoBSelect.SetBounds(VFO_B_LEFT_PAD, CenterY - BtnTopVfoBSelect.Height - 1,
|
||||
BtnTopVfoBSelect.Width, BtnTopVfoBSelect.Height);
|
||||
BtnTopVfoBTX.SetBounds(VFO_B_LEFT_PAD, CenterY + 1,
|
||||
BtnTopVfoBTX.Width, BtnTopVfoBTX.Height);
|
||||
FreqTop := CenterY - (TOP_VFO_FREQ_H div 2);
|
||||
FreqDispB.SetBounds(FreqDispB.Left, FreqTop,
|
||||
FreqTextW + VFO_FREQ_LEFT_PAD + VFO_FREQ_RIGHT_PAD, TOP_VFO_FREQ_H);
|
||||
BtnTopVfoBSelect.Left := VFO_B_LEFT_PAD;
|
||||
BtnTopVfoBTX.Left := VFO_B_LEFT_PAD;
|
||||
|
||||
if PanelSep <> nil then
|
||||
PanelSep.SetBounds(0, PanelToolbar.Height + 30, ClientWidth, 2);
|
||||
|
||||
Reference in New Issue
Block a user