From a36e5e1323a35e5eb3d3254e1a55ec882c1a4f1a Mon Sep 17 00:00:00 2001 From: Nicola Pievani Date: Wed, 30 Jul 2025 11:20:57 +0200 Subject: [PATCH] Gestione selezione configurazione corrente --- CameraMng/SetConfigForm.vb | 105 ++++++++++++------ .../CameraMng.vbproj.AssemblyReference.cache | Bin 7744 -> 7768 bytes .../CameraMng.vbproj.CoreCompileInputs.cache | 2 +- .../CameraMng.vbproj.GenerateResource.cache | Bin 1488 -> 1488 bytes .../DesignTimeResolveAssemblyReferences.cache | Bin 145 -> 4717 bytes 5 files changed, 72 insertions(+), 35 deletions(-) diff --git a/CameraMng/SetConfigForm.vb b/CameraMng/SetConfigForm.vb index bd50122..6468385 100644 --- a/CameraMng/SetConfigForm.vb +++ b/CameraMng/SetConfigForm.vb @@ -6,17 +6,21 @@ Public Class SetConfigForm Private CameraListCfg As New List(Of String) Private myImage As Image + Private CurrIndexRow As Integer = 0 + Private CurrAppliedConfig As String = String.Empty + Sub New() ' La chiamata è richiesta dalla finestra di progettazione. InitializeComponent() ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent(). - ' PopolateDataGrid() End Sub Private Sub LoadWindows() Handles Me.Load PopolateDataGrid() + + CurrAppliedConfig = FrmMain.ComboBoxCameraCfg.SelectedItem End Sub Private Sub PopolateDataGrid() @@ -59,9 +63,58 @@ Public Class SetConfigForm riga.Cells(5).Value = "Apply" ' Aggiungi la riga completa al DataGridView DataGridView1.Rows.Add(riga) + + If CfgItem = FrmMain.ComboBoxCameraCfg.SelectedItem Then + DataGridView1.ClearSelection() + ' Mantengo la selezione sulla riga corrente + DataGridView1.Rows(DataGridView1.Rows.Count - 1).Selected = True + ' Indico in grassetto il comando Apply + End If Next End Sub + Private Sub RefreshDataGrid(IndexRawDataGrid As Integer) + DataGridView1.ClearSelection() + + Dim CfgItem As String = DataGridView1.Rows(IndexRawDataGrid).Cells("Config").Value.ToString() + ' Aggiorno lo stato delle icone della lista + + Dim DirToReadCfg As String = FrmMain.sDataRoot + Dim NomeFileCfg As String = DirToReadCfg & If(CfgItem = "Default", String.Empty, CfgItem) & "\CameraMng.cfg" + ' Creo la nuova riga che sostituirà quella precedente + Dim riga As New DataGridViewRow() + ' Crea le celle corrispondenti alle colonne + riga.CreateCells(DataGridView1) + riga.Cells(0).Value = CfgItem + Dim id As String = ReadIdCameraFromCfg(NomeFileCfg) + If Not String.IsNullOrEmpty(id) Then + ' Icone CFG + If CameraListCfg.IndexOf(id) < 0 Then + riga.Cells(1).Value = GetCurrIco(2) + Else + riga.Cells(1).Value = GetCurrIco(0) + End If + ' Icone CAMERA + If ComboCamera.Items.IndexOf(id) > -1 Then + riga.Cells(3).Value = GetCurrIco(2) + riga.Cells(2).Value = id + Else + riga.Cells(3).Value = GetCurrIco(0) + End If + Else + riga.Cells(1).Value = GetCurrIco(-1) + riga.Cells(3).Value = GetCurrIco(-1) + End If + riga.Cells(4).Value = "Save" + riga.Cells(5).Value = "Apply" + + ' Sostituisco la riga corrente: rimuovo la precedente riga e ne inserisco una nuova + DataGridView1.Rows.RemoveAt(IndexRawDataGrid) + DataGridView1.Rows.Insert(IndexRawDataGrid, riga) + ' Mantengo la selezione sulla riga corrente + DataGridView1.CurrentCell = DataGridView1.Rows(IndexRawDataGrid).Cells(4) + End Sub + Private Function ReadIdCameraFromCfg(NomeFileCfg As String) As String Dim IDCamera As String = String.Empty Dim reader As New StreamReader(NomeFileCfg) @@ -137,40 +190,14 @@ Public Class SetConfigForm End Try End Sub - Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing - ' Controlla se la cella corrente è nella colonna della ComboBox e se il controllo è una ComboBox - If DataGridView1.CurrentCell.ColumnIndex = DataGridView1.Columns("ComboCamera").Index AndAlso TypeOf e.Control Is ComboBox Then - Dim comboBox As ComboBox = TryCast(e.Control, ComboBox) - If comboBox IsNot Nothing Then - ' Rimuovi eventuali gestori eventi precedenti per evitare eventi duplicati - ' Questo è importante se l'utente modifica più volte la stessa cella - RemoveHandler comboBox.SelectedIndexChanged, AddressOf DataGridViewComboBox_SelectedIndexChanged - ' Aggiungi il gestore eventi per l'evento SelectedIndexChanged della ComboBox - AddHandler comboBox.SelectedIndexChanged, AddressOf DataGridViewComboBox_SelectedIndexChanged - End If - End If - End Sub - - ' Questo è il gestore eventi che si attiverà quando l'utente seleziona un elemento nella ComboBox - Private Sub DataGridViewComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) - Dim comboBox As ComboBox = TryCast(sender, ComboBox) - If comboBox IsNot Nothing Then - Dim selectedValue As String = comboBox.SelectedItem.ToString() - Dim currentRowIndex As Integer = DataGridView1.CurrentCell.RowIndex - - Dim IDCamera As String = If(Not IsNothing(DataGridView1.Rows(currentRowIndex).Cells("ComboCamera").Value), DataGridView1.Rows(currentRowIndex).Cells("ComboCamera").Value.ToString(), String.Empty) - - If IDCamera <> selectedValue Then - DataGridView1.Rows(currentRowIndex).Cells(4).Value = "Save*" - End If - - End If - End Sub - - - Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick + ' Tutti i click sulla datagrid passono da qui + Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick ' Controlla che il click non sia sull'intestazione della colonna If e.RowIndex < 0 Then Return + DataGridView1.Rows(e.RowIndex).Selected = True + + If e.ColumnIndex < 0 Then Return + Dim IDConfig As String = DataGridView1.Rows(e.RowIndex).Cells("Config").Value.ToString() Dim IDCamera As String = If(Not IsNothing(DataGridView1.Rows(e.RowIndex).Cells("ComboCamera").Value), DataGridView1.Rows(e.RowIndex).Cells("ComboCamera").Value.ToString(), String.Empty) @@ -179,10 +206,11 @@ Public Class SetConfigForm If Not String.IsNullOrEmpty(IDConfig) And Not String.IsNullOrEmpty(IDCamera) Then SaveIDCamera(IDConfig, IDCamera) DataGridView1.Rows(e.RowIndex).Cells(4).Value = "Save" + RefreshDataGrid(e.RowIndex) Else MessageBox.Show("Non è possibile salvare l'ID di una camera non connessa.", "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) End If - PopolateDataGrid() + ElseIf Me.DataGridView1.Columns(e.ColumnIndex).Name = "ApplyConfig" Then If Not (String.IsNullOrEmpty(IDConfig) And String.IsNullOrEmpty(IDCamera)) Then ' verifico che non sia stato salvato l'id indicato @@ -195,6 +223,15 @@ Public Class SetConfigForm FrmMain.ComboBoxCameraCfg.SelectedIndex = IndCameraCfg End If + ElseIf Me.DataGridView1.Columns(e.ColumnIndex).Name = "ComboCamera" Then + Dim comboBox As ComboBox = TryCast(sender, ComboBox) + If comboBox IsNot Nothing Then + Dim selectedValue As String = comboBox.SelectedItem.ToString() + If IDCamera <> selectedValue Then + DataGridView1.Rows(e.RowIndex).Cells(4).Value = "Save*" + End If + + End If End If End Sub diff --git a/CameraMng/obj/x64/Debug/CameraMng.vbproj.AssemblyReference.cache b/CameraMng/obj/x64/Debug/CameraMng.vbproj.AssemblyReference.cache index 38abe7b9abd6ffa6e041f4961aab487da865e0e3..aed544b6ef4bc24a252af5afeeafed2ff8c14a80 100644 GIT binary patch delta 261 zcmX?LbHhfSjggOmfq~K4*(%00y~HK8EG9WIH?=4+H!&|UJ+)|}v?1&Klz$TrPYkqF z@J`FjNww0~*LSwkhbY!ZQM_?k0JDTO4wEKxb4ZJZ=NILq=%wW3FfsydWq7djZ;9yD r$yO|u3eE(~-rUcU!7O2c+i*2@m~j>yW(p1jjGNrgBE5Mj$81pmS}9rP delta 242 zcmca%bHGNLjggOmfq~K9*(%00y~HK8EXFx8H?=6yH!ppnydmqfcq@ms6GJU!+|x31 zQmyp$^_{KsAqw^33OB9`U=}gQV!~v34r#IQ{Gyx`y_B3BMn<4b)~5RsdQaWum|Vc6 tG&zSuOvWCM!JFr^WH5`EU^iKf9ctEO9}Y7a8$8BLp3fq^c`wIoQ2=abPSXGY diff --git a/CameraMng/obj/x64/Debug/CameraMng.vbproj.CoreCompileInputs.cache b/CameraMng/obj/x64/Debug/CameraMng.vbproj.CoreCompileInputs.cache index 976291f..9c799eb 100644 --- a/CameraMng/obj/x64/Debug/CameraMng.vbproj.CoreCompileInputs.cache +++ b/CameraMng/obj/x64/Debug/CameraMng.vbproj.CoreCompileInputs.cache @@ -1 +1 @@ -2e81f805195d83a1f7262e8a96404099beb76326e9e80773b0d6eccdfc480373 +69636ff66d10d465f87b29c6b3440534ee373b52aa51b9726c6ce7a90119bc6f diff --git a/CameraMng/obj/x64/Debug/CameraMng.vbproj.GenerateResource.cache b/CameraMng/obj/x64/Debug/CameraMng.vbproj.GenerateResource.cache index c6d41f25170bcb7af1d99eea599d3061914172fd..99b945fb5d064edb05efba5cf64f56edac8932e1 100644 GIT binary patch delta 72 zcmcb>eSv#|HakOv{Cz3*D-(?_vxemb*Wj9AN>aegf ZodQYru$uCJt=_Tc$ho^5jEoE*005IF7)SsB delta 72 zcmcb>eSv#|Hv88Dx~n&AzdOC(`~ox582p~N@=Sw24{C~m!Y#WaA$Yh z8VIe4CMre~Ytlp$;SD1aO-$58pPHCRG(2HcqHQ3&6kdEY;YaSdJ2U&!3)Ag%A2^%c z`Mdj_@1D8eIp@}+MnMozFx(|a)7c2l%Sk1JiIP!tC5?$3W>*7xT283CJh{6=j^IQt zUA!;iNsJK1*mXT{Gj#dy287Uh=U-?Yee#6$g;8L2^ovfz$uvEoM-&}XHQXghQn*Vh z(2&Y#NDiPxX-JfY#Ap=n0}X~HppY}T#Xo|HsTz8)T@27qTZ=!O)3P~&gF4P-iK4am z2XhHcO}>n$4jSWF59&Ehql^T!9)1vN$e2lkXleohYo4*0z=Oi{Py;>v?oD}QbI0Pl z&TWcRKQv`#amF*wrU5lc4AU6PiX*C-Q?$K`sV0#Rd~u9N@9W+pr=Py!>w@8oHKq4V zfu1<3>M3Kw6k`U-n4ZZ#X`x1lGNJ0}s_=L$8>5+YP7IHTqx7Yu&|~%l=y3@GZy9gW zWM*Ufxi2G~FvOm;&xRY0d&b%jA5>EPYJw*%Vuia!LL01jg$;tM z3fA%!$K3hy9b&7vvvp_N9)udj{n3Lls%<=BkZ}k8f6I`7j?gqPNQ^WcoxFh#naWdRs-KofJ%kx9)|H6P~nN&oe8cT6DuLObLgWSs;W%3q*;b2;xGPiH@oQy zR411l!U~ct)w=0|Hc@=F6>2%1vlLu-zEJ&U>1jPA3VMBDsILubBh{hs;qVN;^e0O*L($}YJh^KYo{ z``d%BZT~BB;_Asgv+sms!|xAAw<-P?Mi-Wv=bL(7n%_3@-m%b(j1FJ>;8f^jQ*-|u zS(y8D;j_z2;{#v3)p_pfv)d1M{PN#FtcsOpOaVa^FDr;Zn`f0d?m-37XD!NCGaAd6 zUa+1jVu}5#eu8ClNWPV}QgW4rtD4F33RhWThqC2`oZU)PLuz?}K&Z)z+7KprHHim| z6xLYeDx(J1D~lW(>C3m%sj#_&uRrc9OtR`VI`X{-I!PDT13vm+#Xro^7}il zE2!8Wdqr}|$`E@n-YP83Q+8*!*7|KYgj4&7a{MT=TRJ#iIL=71A0D%H=evK}*!$ZX zFu-QER^na5jKb)ZiMF>|(Uvs7j%q(o-TP?%65A2FHpjH?RqP4(tyZ=bR0@HIDGIFR zEvsSRmS?<|$;+Vj%k+vHk>&_dix!|Iq8WlQ>p85~Zz!E0Oz-3=X*f delta 21 ccmaE>GLeykjggUofq^k+@E05)U=A^-pY