mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Redesign left panel layout: TX block on top, dynamic Band panel height
- Move PanelTX above PanelBands; DRV slider now below MOX/TUN buttons - MOX/TUN resized to match standard button style (54×24, BTN_SM) - PanelBands default height reduced to 74 (no reserved XVTR space) - RebuildXvtrButtons dynamically resizes PanelBands (+27px per XVTR row) and calls RelayoutBelowBands to reposition Mode/Filter/CTUN/RX panels Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+46
-32
@@ -571,6 +571,7 @@ type
|
||||
function XvtrTranslate(VisibleHz: Double): Double;
|
||||
procedure ApplyXvtrToNetwork;
|
||||
procedure RebuildXvtrButtons;
|
||||
procedure RelayoutBelowBands;
|
||||
procedure BtnXvtrBandClick(Sender: TObject);
|
||||
procedure ActivateXvtrBand(Idx: Integer);
|
||||
procedure DeactivateXvtr;
|
||||
@@ -1565,12 +1566,36 @@ begin
|
||||
|
||||
LayoutTopVfoBlock;
|
||||
|
||||
// TX controls
|
||||
PanelTX := TPanel.Create(Self);
|
||||
PanelTX.Parent := PanelLeft;
|
||||
PanelTX.SetBounds(0, Y, LEFT_W, 72);
|
||||
PanelTX.BevelOuter := bvNone;
|
||||
MakeLbl(PanelTX, 'TX', 4, 2);
|
||||
|
||||
W := (LEFT_W - 6) div 4;
|
||||
BtnMOX := MakeBtn(PanelTX, 'MOX', 2, 16, W - 2, BTN_SM, BtnMOXClick);
|
||||
BtnTUN := MakeBtn(PanelTX, 'TUN', W + 2, 16, W - 2, BTN_SM, BtnTUNClick);
|
||||
|
||||
LblDrv := TLabel.Create(Self);
|
||||
LblDrv.Parent := PanelTX; LblDrv.Left := 4; LblDrv.Top := 53;
|
||||
LblDrv.Caption := 'DRV'; LblDrv.Font.Color := CLR_TEXTDIM;
|
||||
LblDrv.Font.Name := 'Courier New'; LblDrv.Font.Size := 7;
|
||||
|
||||
TrkDrive := TFlatSlider.Create(Self);
|
||||
TrkDrive.Parent := PanelTX; TrkDrive.Left := 34; TrkDrive.Top := 50;
|
||||
TrkDrive.Width := 150; TrkDrive.Height := 16;
|
||||
TrkDrive.Min := 0; TrkDrive.Max := 100; TrkDrive.Position := 50;
|
||||
TrkDrive.OnChange := TrkDriveChange;
|
||||
|
||||
Inc(Y, 76);
|
||||
|
||||
// Band selector. Высота резервирует 2 дополнительных ряда под XVTR-кнопки
|
||||
// (создаются динамически в RebuildXvtrButtons). В каждом ряду до 6 кнопок,
|
||||
// итого до 12 XVTR-кнопок (наш CFG_XVTR_COUNT = 8 умещается с запасом).
|
||||
PanelBands := TPanel.Create(Self);
|
||||
PanelBands.Parent := PanelLeft;
|
||||
PanelBands.SetBounds(0, Y, LEFT_W, 74 + 54);
|
||||
PanelBands.SetBounds(0, Y, LEFT_W, 74);
|
||||
PanelBands.BevelOuter := bvNone;
|
||||
MakeLbl(PanelBands, 'BAND', 4, 2);
|
||||
W := (LEFT_W - 6) div 6;
|
||||
@@ -1587,7 +1612,7 @@ begin
|
||||
for i := 0 to CFG_XVTR_COUNT - 1 do
|
||||
BtnXvtrBand[i] := nil;
|
||||
|
||||
Inc(Y, 76 + 54);
|
||||
Inc(Y, 76);
|
||||
|
||||
// Mode selector
|
||||
PanelMode := TPanel.Create(Self);
|
||||
@@ -1692,35 +1717,6 @@ begin
|
||||
|
||||
Inc(Y, 126);
|
||||
|
||||
// S-Meter
|
||||
|
||||
Inc(Y, 52);
|
||||
|
||||
// TX controls
|
||||
PanelTX := TPanel.Create(Self);
|
||||
PanelTX.Parent := PanelLeft;
|
||||
PanelTX.SetBounds(0, Y, LEFT_W, 74);
|
||||
PanelTX.BevelOuter := bvNone;
|
||||
MakeLbl(PanelTX, 'TX', 4, 2);
|
||||
|
||||
LblDrv := TLabel.Create(Self);
|
||||
LblDrv.Parent := PanelTX; LblDrv.Left := 4; LblDrv.Top := 17;
|
||||
LblDrv.Caption := 'DRV'; LblDrv.Font.Color := CLR_TEXTDIM;
|
||||
LblDrv.Font.Name := 'Courier New'; LblDrv.Font.Size := 7;
|
||||
|
||||
TrkDrive := TFlatSlider.Create(Self);
|
||||
TrkDrive.Parent := PanelTX; TrkDrive.Left := 34; TrkDrive.Top := 16;
|
||||
TrkDrive.Width := 150; TrkDrive.Height := 16;
|
||||
TrkDrive.Min := 0; TrkDrive.Max := 100; TrkDrive.Position := 50;
|
||||
TrkDrive.OnChange := TrkDriveChange;
|
||||
|
||||
BtnMOX := MakeBtn(PanelTX, 'MOX', 2, 38, 50, 32, BtnMOXClick);
|
||||
BtnMOX.Font.Size := 12; BtnMOX.Font.Bold := True;
|
||||
|
||||
BtnTUN := MakeBtn(PanelTX, 'TUN', 56, 38, 50, 32, BtnTUNClick);
|
||||
BtnTUN.Font.Size := 12; BtnTUN.Font.Bold := True;
|
||||
|
||||
|
||||
// ---- Right panel ----
|
||||
PanelRight := TPanel.Create(Self);
|
||||
PanelRight.Parent := Self;
|
||||
@@ -5620,11 +5616,23 @@ end;
|
||||
|
||||
// Перестраивает динамические XVTR-кнопки в PanelBands. Удаляет старые,
|
||||
// создаёт новые для enabled слотов в 3-м и 4-м ряду PanelBands.
|
||||
procedure TMainForm.RelayoutBelowBands;
|
||||
var
|
||||
Y: Integer;
|
||||
begin
|
||||
if PanelBands = nil then Exit;
|
||||
Y := PanelBands.Top + PanelBands.Height + 2;
|
||||
PanelMode.Top := Y; Inc(Y, 76);
|
||||
PanelFilter.Top := Y; Inc(Y, 76);
|
||||
BtnCTun.Top := Y; BtnDUP.Top := Y; Inc(Y, 30); // BTN_H(26) + 4
|
||||
PanelRX.Top := Y;
|
||||
end;
|
||||
|
||||
procedure TMainForm.RebuildXvtrButtons;
|
||||
const
|
||||
BTN_H_LOC = 24;
|
||||
var
|
||||
i, Pos: Integer;
|
||||
i, Pos, XvtrRows: Integer;
|
||||
W: Integer;
|
||||
B: TFlatButton;
|
||||
Cap: string;
|
||||
@@ -5658,6 +5666,12 @@ begin
|
||||
StyleButton(B, i = FCurrentXvtr);
|
||||
Inc(Pos);
|
||||
end;
|
||||
// Динамически подгоняем высоту PanelBands под реальное число XVTR-рядов
|
||||
if Pos = 0 then XvtrRows := 0
|
||||
else if Pos <= 6 then XvtrRows := 1
|
||||
else XvtrRows := 2;
|
||||
PanelBands.Height := 74 + XvtrRows * 27;
|
||||
RelayoutBelowBands;
|
||||
end;
|
||||
|
||||
// Обработчик клика по XVTR-кнопке. Tag = -(idx+1).
|
||||
|
||||
Reference in New Issue
Block a user