From f320ef1bcf71a40a5e418a18829a40b3172c0744 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Tue, 4 Aug 2026 18:20:52 +0300 Subject: [PATCH] =?UTF-8?q?fix(tx):=20=D0=BF=D0=BE=D0=BB=D0=BE=D1=81=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=8E=D1=89=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=20=D1=81=D0=BB=D0=B0=D0=B9=D1=81=D0=B0=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BF.=20=D0=BF=D0=B0=D0=BD=D0=B0=D1=85=20=D1=80?= =?UTF-8?q?=D0=B8=D1=81=D0=BE=D0=B2=D0=B0=D0=BB=D0=B0=D1=81=D1=8C=20=D0=BF?= =?UTF-8?q?=D0=BE=20RX-=D1=88=D0=B8=D1=80=D0=B8=D0=BD=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CalcSliceBandX берёт кромки TX из FTXEdge* ТОЙ вьюхи, где живёт слайс, а PushFilterEdgesToView отдавала их только FSpecView (пан 0). У панов N поля оставались нулями, ветка TX не срабатывала, и слайс на передаче показывал свою RX-полосу независимо от профиля и TX-фильтра. Кромки TX уходят во вьюхи всех панов, кадр каждого помечается грязным. RX-кромки главного туда не отдаём: на панах N главный VFO не рисуется. Подтверждено на железе. Co-Authored-By: Claude Opus 5 --- MainForm.pas | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/MainForm.pas b/MainForm.pas index b8ba0dd..345051c 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -5437,12 +5437,22 @@ procedure TMainForm.PushFilterEdgesToView; // Кромки в спектр: RX — то, что реально стоит в приёмнике (фильтр может быть // произвольным), TX — из TXSignedEdges движка. Полоса на экране обязана // совпадать с тем, что слышно и что уходит в эфир. -var Lo, Hi: Integer; +var Lo, Hi, i: Integer; begin if FSpecView = nil then Exit; FSpecView.SetRXEdges(FController.FilterLo, FController.FilterHi); FController.TXFilterEdges(Lo, Hi); FSpecView.SetTXEdges(Lo, Hi); + // Доп. паны рисуют полосу передающего слайса теми же кромками + // (CalcSliceBandX). Без этого их FTXEdge* оставались нулями, ветка TX не + // срабатывала, и слайс на передаче показывал RX-ширину. RX-кромки главного + // сюда не отдаём: на панах N главный VFO не рисуется. + for i := 1 to MAX_PANS - 1 do + if FPans[i] <> nil then + begin + FPans[i].View.SetTXEdges(Lo, Hi); + FPanSpecDirty[i] := True; + end; end; procedure TMainForm.BtnFilterMouseDown(Sender: TObject; Button: TMouseButton;