fix(tx): полоса передающего слайса на доп. панах рисовалась по RX-ширине

CalcSliceBandX берёт кромки TX из FTXEdge* ТОЙ вьюхи, где живёт слайс, а
PushFilterEdgesToView отдавала их только FSpecView (пан 0). У панов N поля
оставались нулями, ветка TX не срабатывала, и слайс на передаче показывал
свою RX-полосу независимо от профиля и TX-фильтра.

Кромки TX уходят во вьюхи всех панов, кадр каждого помечается грязным.
RX-кромки главного туда не отдаём: на панах N главный VFO не рисуется.

Подтверждено на железе.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-04 18:20:52 +03:00
co-authored by Claude Opus 5
parent 8f95795bbb
commit f320ef1bcf
+11 -1
View File
@@ -5437,12 +5437,22 @@ procedure TMainForm.PushFilterEdgesToView;
// Кромки в спектр: RX — то, что реально стоит в приёмнике (фильтр может быть // Кромки в спектр: RX — то, что реально стоит в приёмнике (фильтр может быть
// произвольным), TX — из TXSignedEdges движка. Полоса на экране обязана // произвольным), TX — из TXSignedEdges движка. Полоса на экране обязана
// совпадать с тем, что слышно и что уходит в эфир. // совпадать с тем, что слышно и что уходит в эфир.
var Lo, Hi: Integer; var Lo, Hi, i: Integer;
begin begin
if FSpecView = nil then Exit; if FSpecView = nil then Exit;
FSpecView.SetRXEdges(FController.FilterLo, FController.FilterHi); FSpecView.SetRXEdges(FController.FilterLo, FController.FilterHi);
FController.TXFilterEdges(Lo, Hi); FController.TXFilterEdges(Lo, Hi);
FSpecView.SetTXEdges(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; end;
procedure TMainForm.BtnFilterMouseDown(Sender: TObject; Button: TMouseButton; procedure TMainForm.BtnFilterMouseDown(Sender: TObject; Button: TMouseButton;