mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-26 04:47:35 +00:00
fix connect
This commit is contained in:
+9
-1
@@ -105,7 +105,8 @@ type
|
||||
function GetAutoStartBoardType: Integer;
|
||||
function GetSavedBoardType(Idx: Integer): Integer;
|
||||
|
||||
// Получить результат
|
||||
// Получить/сбросить результат
|
||||
procedure ClearResult;
|
||||
property DialogResult: TDeviceDialogResult read FResult;
|
||||
property OnDiscover: TNotifyEvent read FOnDiscover write FOnDiscover;
|
||||
property SavedCount: Integer read FSavedCount;
|
||||
@@ -596,6 +597,13 @@ begin
|
||||
ModalResult := mrCancel;
|
||||
end;
|
||||
|
||||
procedure TDeviceDialog.ClearResult;
|
||||
begin
|
||||
FResult.Accepted := False;
|
||||
FResult.IPAddress := '';
|
||||
FResult.SavedIdx := -1;
|
||||
end;
|
||||
|
||||
function TDeviceDialog.GetAutoStartIP: string;
|
||||
var
|
||||
I: Integer;
|
||||
|
||||
+16
-1
@@ -3285,8 +3285,10 @@ begin
|
||||
FDeviceDialog.OnDiscover := BtnDiscoverFromDialog;
|
||||
if FLightTheme then FDeviceDialog.SetTheme(LightTheme)
|
||||
else FDeviceDialog.SetTheme(DarkTheme);
|
||||
FDeviceDialog.ClearResult; // сбрасываем старый выбор перед открытием
|
||||
FDeviceDialog.ShowModal;
|
||||
// Результат диалога не обрабатываем здесь — START сам спросит если нужно
|
||||
// Если пользователь нажал CONNECT — результат хранится в DialogResult,
|
||||
// START его заберёт и использует с приоритетом над autostart
|
||||
end;
|
||||
|
||||
procedure TMainForm.BtnDiscoverFromDialog(Sender: TObject);
|
||||
@@ -3350,6 +3352,17 @@ begin
|
||||
// --- START ---
|
||||
AutoIP := '';
|
||||
FPendingBoardType := 0;
|
||||
|
||||
// Явный выбор через CONNECT в диалоге имеет приоритет над autostart
|
||||
if Assigned(FDeviceDialog) and FDeviceDialog.DialogResult.Accepted then
|
||||
begin
|
||||
FPendingIP := FDeviceDialog.DialogResult.IPAddress;
|
||||
FPendingBoardType := FDeviceDialog.GetSavedBoardType(
|
||||
FDeviceDialog.DialogResult.SavedIdx);
|
||||
FDeviceDialog.ClearResult; // consumed — следующий START снова спросит
|
||||
end
|
||||
else
|
||||
begin
|
||||
if Assigned(FDeviceDialog) then
|
||||
AutoIP := FDeviceDialog.GetAutoStartIP;
|
||||
|
||||
@@ -3370,6 +3383,8 @@ begin
|
||||
FPendingIP := FDeviceDialog.DialogResult.IPAddress;
|
||||
FPendingBoardType := FDeviceDialog.GetSavedBoardType(
|
||||
FDeviceDialog.DialogResult.SavedIdx);
|
||||
FDeviceDialog.ClearResult;
|
||||
end;
|
||||
end;
|
||||
|
||||
// Создаём запись устройства из IP + BoardType из диалога если есть
|
||||
|
||||
Reference in New Issue
Block a user