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