From b943765a168223e36a27e827f53f9edf7796e6db Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 27 Aug 2025 13:02:14 +0200 Subject: [PATCH 01/90] Atuostart Dateiimport und Autostart Nachindexierung - frmDIHauptseite, frmNIHauptseite, frmStart, ModuleCURRENT --- ToolCollection/ModuleCURRENT.vb | 3 +++ ToolCollection/frmDIHauptseite.vb | 9 ++++++++- ToolCollection/frmNIHauptseite.vb | 16 ++++++++++------ ToolCollection/frmStart.vb | 22 ++++++++++++++++++++++ 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/ToolCollection/ModuleCURRENT.vb b/ToolCollection/ModuleCURRENT.vb index 4cf9284..83eea1a 100644 --- a/ToolCollection/ModuleCURRENT.vb +++ b/ToolCollection/ModuleCURRENT.vb @@ -6,6 +6,9 @@ Module ModuleCURRENT Public NI_OPENED As Boolean = False + Public AUTOSTART_FIM As Boolean = False + Public AUTOSTART_FIH As Boolean = False + Public CURRENT_STATE As String = "" Public DI_PAGECOUNT As Integer diff --git a/ToolCollection/frmDIHauptseite.vb b/ToolCollection/frmDIHauptseite.vb index d75155d..478bbe9 100644 --- a/ToolCollection/frmDIHauptseite.vb +++ b/ToolCollection/frmDIHauptseite.vb @@ -239,9 +239,16 @@ Public Class frmDIHauptseite Private Sub frmDIHauptseite_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown Formloaded = True Me.LoadProfilesInCombobox() - If My.Settings.DI_RUNNING = True Then + If My.Settings.DI_RUNNING = True Or AUTOSTART_FIM = True Then Me.rbAutomatisch.Checked = True Automatischer_Durchlauf(False) + _Logger.Info("Dateiimport wird gestartet.") + If My.Settings.DI_RUNNING Then + _Logger.Info("My.Settings.DI_RUNNING = True") + End If + If AUTOSTART_FIM Then + _Logger.Info("AUTOSTART_FIM = True") + End If End If End Sub #End Region diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 719761d..a34a8b4 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -113,12 +113,17 @@ Public Class frmNIHauptseite _MyLogger.Debug = False End If - If My.Settings.NI_RUNNING = True Then - - _Logger.Info("Nachindexierungslauf wird wieder gestartet - My.Settings.NI_RUNNING = True") + If My.Settings.NI_RUNNING = True Or AUTOSTART_FIH = True Then Start_NachindexierungThreads() + _Logger.Info("Nachindexierungslauf wird gestartet.") + If My.Settings.NI_RUNNING Then + _Logger.Info("My.Settings.NI_RUNNING = True") + End If + If AUTOSTART_FIH Then + _Logger.Info("AUTOSTART_FIH = True") + End If Else - _Logger.Info("Nachindexierung Hauptformular wurde geladen - Nachindexierungslauf wird NICHT gestartet.") + _Logger.Info("Nachindexierung Hauptformular wurde geladen - Nachindexierungslauf wird NICHT gestartet.") End If End Sub Private Sub frmNIHauptseite_Load(sender As Object, e As System.EventArgs) Handles Me.Load @@ -2818,7 +2823,6 @@ Public Class frmNIHauptseite Else TimerRefresh.Stop() End If - manuallyRun = True If Me.btnStartStop.Text = "Nachindexierung stoppen" Then If timRun.Enabled = True Then timRun.Stop() @@ -2826,7 +2830,7 @@ Public Class frmNIHauptseite Abbruch_NI("Manueller Abbruch 1 durch User " & Environment.UserName, False, False) Me.btnStartStop.Text = "Nachindexierung starten" Else - Me.btnStartStop.Text = "Nachindexierung stoppen" + Me.btnStartStop.Text = "Nachindexierung stoppen" Start_NachindexierungThreads() End If manuallyRun = False diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index 9ec1a5c..21b2b49 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -133,6 +133,28 @@ Public Class frmStart _Instance = Me + 'For Each arg As String In My.Application.CommandLineArgs + ' Select Case arg.ToLower() + ' Case "/startfim" + ' _Logger.Info("Autostart: Module FIM wird gestartet.") + ' ' Modul FIM starten oder Flag setzen + ' frmNIHauptseite.Start_NachindexierungThreads() + ' Case "/startfih" + ' _Logger.Info("Autostart: Module FIH wird gestartet.") + ' ' Modul FIH starten oder Flag setzen + ' frmDIHauptseite.Automatischer_Durchlauf(True) + ' End Select + 'Next + + For Each arg As String In My.Application.CommandLineArgs + Select Case arg.ToLower() + Case "/startfim" + AUTOSTART_FIM = True 'Dateiimport + Case "/startfih" + AUTOSTART_FIH = True 'Nachindexierung + End Select + Next + Try 'Delete_LogFiles() From a539adfee33e1ab6e9d62737611431e1694f2a1f Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 27 Aug 2025 15:39:33 +0200 Subject: [PATCH 02/90] =?UTF-8?q?Logik=20verbessert=20f=C3=BCr=20Autostart?= =?UTF-8?q?=20von=20Dateiimport=20und=20Nachindexierung=20-=20frmDIHauptse?= =?UTF-8?q?ite,=20frmNIHauptseite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmDIHauptseite.vb | 17 +++++++++-------- ToolCollection/frmNIHauptseite.vb | 16 +++++++--------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/ToolCollection/frmDIHauptseite.vb b/ToolCollection/frmDIHauptseite.vb index 478bbe9..7f6fc76 100644 --- a/ToolCollection/frmDIHauptseite.vb +++ b/ToolCollection/frmDIHauptseite.vb @@ -239,16 +239,17 @@ Public Class frmDIHauptseite Private Sub frmDIHauptseite_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown Formloaded = True Me.LoadProfilesInCombobox() - If My.Settings.DI_RUNNING = True Or AUTOSTART_FIM = True Then + + If AUTOSTART_FIM Then Me.rbAutomatisch.Checked = True Automatischer_Durchlauf(False) - _Logger.Info("Dateiimport wird gestartet.") - If My.Settings.DI_RUNNING Then - _Logger.Info("My.Settings.DI_RUNNING = True") - End If - If AUTOSTART_FIM Then - _Logger.Info("AUTOSTART_FIM = True") - End If + _Logger.Info("AUTOSTART_FIM = True - Dateiimport wird gestartet.") + ElseIf My.Settings.DI_RUNNING Then + Me.rbAutomatisch.Checked = True + Automatischer_Durchlauf(False) + _Logger.Info("My.Settings.DI_RUNNING = True - Dateiimport wird gestartet.") + Else + _Logger.Info("Dateiimport Hauptformular wurde geladen - Dateiimport wird NICHT gestartet.") End If End Sub #End Region diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index a34a8b4..02dba3b 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -113,18 +113,16 @@ Public Class frmNIHauptseite _MyLogger.Debug = False End If - If My.Settings.NI_RUNNING = True Or AUTOSTART_FIH = True Then + If AUTOSTART_FIH Then Start_NachindexierungThreads() - _Logger.Info("Nachindexierungslauf wird gestartet.") - If My.Settings.NI_RUNNING Then - _Logger.Info("My.Settings.NI_RUNNING = True") - End If - If AUTOSTART_FIH Then - _Logger.Info("AUTOSTART_FIH = True") - End If + _Logger.Info("AUTOSTART_FIH = True - Nachindexierung wird gestartet.") + ElseIf My.Settings.NI_RUNNING Then + Start_NachindexierungThreads() + _Logger.Info("My.Settings.NI_RUNNING = True - Nachindexierung wird gestartet.") Else - _Logger.Info("Nachindexierung Hauptformular wurde geladen - Nachindexierungslauf wird NICHT gestartet.") + _Logger.Info("Nachindexierung Hauptformular wurde geladen - Nachindexierungslauf wird NICHT gestartet.") End If + End Sub Private Sub frmNIHauptseite_Load(sender As Object, e As System.EventArgs) Handles Me.Load 'Try From 6c9543b7af7a1e4884af53d68d422cd56fb9117d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 28 Aug 2025 15:27:07 +0200 Subject: [PATCH 03/90] =?UTF-8?q?Autostart=20=C3=BCber=20Parameter,=20Last?= =?UTF-8?q?=20State=20wird=20bei=20Starten=20der=20Anwendung=20beibehalten?= =?UTF-8?q?=20-=20frmDIHauptseite,=20frmNIHauptseite,=20frmStart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmDIHauptseite.vb | 14 ++++++++------ ToolCollection/frmNIHauptseite.vb | 13 ++++++++----- ToolCollection/frmStart.vb | 17 ++--------------- 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/ToolCollection/frmDIHauptseite.vb b/ToolCollection/frmDIHauptseite.vb index 7f6fc76..11154e1 100644 --- a/ToolCollection/frmDIHauptseite.vb +++ b/ToolCollection/frmDIHauptseite.vb @@ -240,14 +240,16 @@ Public Class frmDIHauptseite Formloaded = True Me.LoadProfilesInCombobox() - If AUTOSTART_FIM Then + If AUTOSTART_FIM Or My.Settings.DI_RUNNING Then Me.rbAutomatisch.Checked = True Automatischer_Durchlauf(False) - _Logger.Info("AUTOSTART_FIM = True - Dateiimport wird gestartet.") - ElseIf My.Settings.DI_RUNNING Then - Me.rbAutomatisch.Checked = True - Automatischer_Durchlauf(False) - _Logger.Info("My.Settings.DI_RUNNING = True - Dateiimport wird gestartet.") + If AUTOSTART_FIM Then + _Logger.Info("AUTOSTART_FIM = True - Dateiimport wird gestartet.") + AUTOSTART_FIM = False + End If + If My.Settings.DI_RUNNING Then + _Logger.Info("My.Settings.DI_RUNNING = True - Dateiimport wird gestartet.") + End If Else _Logger.Info("Dateiimport Hauptformular wurde geladen - Dateiimport wird NICHT gestartet.") End If diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 02dba3b..51b8fa9 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -113,12 +113,15 @@ Public Class frmNIHauptseite _MyLogger.Debug = False End If - If AUTOSTART_FIH Then + If AUTOSTART_FIH Or My.Settings.NI_RUNNING Then Start_NachindexierungThreads() - _Logger.Info("AUTOSTART_FIH = True - Nachindexierung wird gestartet.") - ElseIf My.Settings.NI_RUNNING Then - Start_NachindexierungThreads() - _Logger.Info("My.Settings.NI_RUNNING = True - Nachindexierung wird gestartet.") + If AUTOSTART_FIH Then + _Logger.Info("AUTOSTART_FIH = True - Nachindexierung wird gestartet.") + AUTOSTART_FIH = False + End If + If My.Settings.NI_RUNNING Then + _Logger.Info("My.Settings.NI_RUNNING = True - Nachindexierung wird gestartet.") + End If Else _Logger.Info("Nachindexierung Hauptformular wurde geladen - Nachindexierungslauf wird NICHT gestartet.") End If diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index 21b2b49..60eafc4 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -133,19 +133,6 @@ Public Class frmStart _Instance = Me - 'For Each arg As String In My.Application.CommandLineArgs - ' Select Case arg.ToLower() - ' Case "/startfim" - ' _Logger.Info("Autostart: Module FIM wird gestartet.") - ' ' Modul FIM starten oder Flag setzen - ' frmNIHauptseite.Start_NachindexierungThreads() - ' Case "/startfih" - ' _Logger.Info("Autostart: Module FIH wird gestartet.") - ' ' Modul FIH starten oder Flag setzen - ' frmDIHauptseite.Automatischer_Durchlauf(True) - ' End Select - 'Next - For Each arg As String In My.Application.CommandLineArgs Select Case arg.ToLower() Case "/startfim" @@ -396,10 +383,10 @@ Public Class frmStart Private Sub FMStart_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown TimerNIRestart.Start() - If My.Settings.DI_RUNNING = True Then + If My.Settings.DI_RUNNING Or AUTOSTART_FIM Then Open_DI_Main() End If - If NIDurchlaufRunning = True Then + If NIDurchlaufRunning Or AUTOSTART_FIH Then Open_NI_Main() End If End Sub From 565eaf764c34d639d8e799f5da123b51ba711d6c Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 28 Aug 2025 15:57:07 +0200 Subject: [PATCH 04/90] =?UTF-8?q?Last=20State=20wurde=20entfernt;=20DI=20u?= =?UTF-8?q?nd=20NI=20starten=20nur=20=C3=BCber=20AutoStart=20oder=20Aktivi?= =?UTF-8?q?eren=20durch=20Nutzer=20-=20Settings,=20frmDIHauptseite,=20frmN?= =?UTF-8?q?IHautpseite,=20frmStart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../My Project/Settings.Designer.vb | 24 ------------------- ToolCollection/My Project/Settings.settings | 6 ----- ToolCollection/app.config | 6 ----- ToolCollection/frmDIHauptseite.vb | 14 +++-------- ToolCollection/frmNIHauptseite.vb | 13 +++------- ToolCollection/frmStart.vb | 7 +++--- 6 files changed, 10 insertions(+), 60 deletions(-) diff --git a/ToolCollection/My Project/Settings.Designer.vb b/ToolCollection/My Project/Settings.Designer.vb index 6552cfd..78c0e71 100644 --- a/ToolCollection/My Project/Settings.Designer.vb +++ b/ToolCollection/My Project/Settings.Designer.vb @@ -678,30 +678,6 @@ Namespace My End Get End Property - _ - Public Property NI_RUNNING() As Boolean - Get - Return CType(Me("NI_RUNNING"),Boolean) - End Get - Set - Me("NI_RUNNING") = value - End Set - End Property - - _ - Public Property DI_RUNNING() As Boolean - Get - Return CType(Me("DI_RUNNING"),Boolean) - End Get - Set - Me("DI_RUNNING") = value - End Set - End Property - _ diff --git a/ToolCollection/My Project/Settings.settings b/ToolCollection/My Project/Settings.settings index 3be624a..b402bd0 100644 --- a/ToolCollection/My Project/Settings.settings +++ b/ToolCollection/My Project/Settings.settings @@ -166,12 +166,6 @@ </SerializableConnectionString> Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd - - False - - - False - @Domain#@User#@PW diff --git a/ToolCollection/app.config b/ToolCollection/app.config index d383cbe..f350c26 100644 --- a/ToolCollection/app.config +++ b/ToolCollection/app.config @@ -147,12 +147,6 @@ myInvalidDateiname.pdf - - False - - - False - diff --git a/ToolCollection/frmDIHauptseite.vb b/ToolCollection/frmDIHauptseite.vb index 11154e1..4d086c9 100644 --- a/ToolCollection/frmDIHauptseite.vb +++ b/ToolCollection/frmDIHauptseite.vb @@ -155,7 +155,6 @@ Public Class frmDIHauptseite Me.tvLog.Visible = False Me.timRun_Dateiimport.Stop() Durchlauf = False - My.Settings.DI_RUNNING = False End If Me.progressImport.Enabled = False @@ -240,16 +239,11 @@ Public Class frmDIHauptseite Formloaded = True Me.LoadProfilesInCombobox() - If AUTOSTART_FIM Or My.Settings.DI_RUNNING Then + If AUTOSTART_FIM Then Me.rbAutomatisch.Checked = True Automatischer_Durchlauf(False) - If AUTOSTART_FIM Then - _Logger.Info("AUTOSTART_FIM = True - Dateiimport wird gestartet.") - AUTOSTART_FIM = False - End If - If My.Settings.DI_RUNNING Then - _Logger.Info("My.Settings.DI_RUNNING = True - Dateiimport wird gestartet.") - End If + _Logger.Info("AUTOSTART_FIM = True - Dateiimport wird gestartet.") + AUTOSTART_FIM = False Else _Logger.Info("Dateiimport Hauptformular wurde geladen - Dateiimport wird NICHT gestartet.") End If @@ -2307,7 +2301,6 @@ Public Class frmDIHauptseite Me.timRun_Dateiimport.Interval = Me.numIntervallDurchlauf.Value * 60 * 1000 Me.timRun_Dateiimport.Start() - My.Settings.DI_RUNNING = True My.Settings.Save() 'Direkt einen Durchlauf starten If runnow = True Then @@ -2326,7 +2319,6 @@ Public Class frmDIHauptseite Me.tvLog.Visible = False Me.timRun_Dateiimport.Stop() Durchlauf = False - My.Settings.DI_RUNNING = False End If Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei btnDurchlauf.Click:") diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 51b8fa9..dda797d 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -113,15 +113,10 @@ Public Class frmNIHauptseite _MyLogger.Debug = False End If - If AUTOSTART_FIH Or My.Settings.NI_RUNNING Then + If AUTOSTART_FIH Then Start_NachindexierungThreads() - If AUTOSTART_FIH Then - _Logger.Info("AUTOSTART_FIH = True - Nachindexierung wird gestartet.") - AUTOSTART_FIH = False - End If - If My.Settings.NI_RUNNING Then - _Logger.Info("My.Settings.NI_RUNNING = True - Nachindexierung wird gestartet.") - End If + _Logger.Info("AUTOSTART_FIH = True - Nachindexierung wird gestartet.") + AUTOSTART_FIH = False Else _Logger.Info("Nachindexierung Hauptformular wurde geladen - Nachindexierungslauf wird NICHT gestartet.") End If @@ -2748,7 +2743,6 @@ Public Class frmNIHauptseite bwDatei.WorkerReportsProgress = True bwDatei.WorkerSupportsCancellation = True - My.Settings.NI_RUNNING = True My.Settings.Save() ' den Indexierungsvorgang direkt (zum ersten Mal) durchführen Me.Profile_Durchlaufen() @@ -2790,7 +2784,6 @@ Public Class frmNIHauptseite If keeprunning = False Then _Logger.Debug("keeprunning = False - Zurücksetzen") 'Abbruch der Nachindexierung - My.Settings.NI_RUNNING = False Me.numIntervall.Enabled = True Me.pnlInfos.Visible = False Me.tslblStatus.Visible = False diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index 60eafc4..cd378fc 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -383,10 +383,12 @@ Public Class frmStart Private Sub FMStart_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown TimerNIRestart.Start() - If My.Settings.DI_RUNNING Or AUTOSTART_FIM Then + 'If My.Settings.DI_RUNNING Or AUTOSTART_FIM Then + If AUTOSTART_FIM Then Open_DI_Main() End If - If NIDurchlaufRunning Or AUTOSTART_FIH Then + 'If NIDurchlaufRunning Or AUTOSTART_FIH Then + If AUTOSTART_FIH Then Open_NI_Main() End If End Sub @@ -530,7 +532,6 @@ Public Class frmStart Private Sub TimerNIRestart_Tick(sender As Object, e As EventArgs) Handles TimerNIRestart.Tick If NI_Restart = True Then - My.Settings.NI_RUNNING = True NI_Restart = False Open_NI_Main() From d22733d5324a3c7e67cbead6b453d538bcc15912 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 15 Sep 2025 15:22:42 +0200 Subject: [PATCH 05/90] Autostartparameter - My.Settings.Debug --- .vs/ToolCollection/v17/.wsuo | Bin 10240 -> 0 bytes .../v17/ResourceExplorer/settings.json | 14 -------------- ToolCollection/ToolCollection.vbproj | 6 +++--- 3 files changed, 3 insertions(+), 17 deletions(-) delete mode 100644 .vs/ToolCollection/v17/.wsuo delete mode 100644 .vs/ToolCollection/v17/ResourceExplorer/settings.json diff --git a/.vs/ToolCollection/v17/.wsuo b/.vs/ToolCollection/v17/.wsuo deleted file mode 100644 index 51b25122a2b3678a28e50e46805f9dd7e9cb4d5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 zcmeHNTW=dh6h2NVrQFLUKqwHQ2=##tzSWmJR3S}(3PMVpCJ2lwdw0{Ob?nG?C>1Kt zh#$Z!@Dq>_PdxM=q)!!ymmu-R1HXWT@0<0kC$7C-uiMZHA8Wj`vorI}oHOUlnX`Lq z=fv(0KTiB19dt&H$lm^OdDtkA8F_hH;l2bQIVUsEP!L8`dc ziCg`NM)sH^q*N#y@ACxAT1r;DCy<*DP3BmV@_Gf0#*%TC}* zQ8GWG2af}XssFc%7k&M|c?^pNr1kGG_5W4ij`Ux#-`8{61KI)V@w3Ql{ic|-ZfpIg zz3H~npF=rqLAPh4vip+*lx?@9M|#01)6Y7u_a{gGU!z)* zGQ6)v_#JgQ3-5P5|G{&B=2~!V?pzPB#dWCrn+IkYKG-Gv==ZHDug{jtxNGQ20oTb0{wIAZ+DcL<{v5{OVhmT| zjnK&#x{N5<@;|9_l!5BB&mVn0%8WFJo@+qc1ZExAuzs)CTI3|~dG6D8 zUzZ16C-Cr8tHO$s{#E$^b8TSl6~KA=;7zfWXWUN)lt1?_+N-ehe+hLtUeYR1R}>E_ zSO+zn0t#v!e2($h$n_(x|A$cN2vS)57g3jONb|ttOgDi=-CI*KcTjo_zEKUM+d%0C za@8)<7l{L3ucxs1Tzk6&2bp+_kVO^A(}Zbg;opSavh zNCnK^Zh3*^xudv0jq(~S1J6d@+^4ZZY8acN?8CO=72BVQpnoUPPRoA~eA=ldG^Vcj zL>nP88v*|nwA1G=WQQj5UDKeQ1M-AvuF12qtfT7_MU zOG2jAe^Aey%iW-##{Syb`}5b|2JLIJ)M&c(_y3OC{@d@4P1skWw;y!8o%K6?a(#ao z{y(us^xtxTc3>DC8n!*{;4t{K<80sVV`~<-p=sFhhXx9$sLw)Xm0`-ve(rTXW^g_V zmiB|Av}GI0{VSvenUNxP>I%G9dWXxnt-{JoBAK6w&wQC!x0CUtleV06Ji$I} zE1yfHt<&XXB6m8QE|)Xe8(xD{e82|DoNAEBILTx_X}PJaW2Fv{H;B)`rdjNW}?6V*7{r@+uN}c$856`&UmcJVZp^ISt1HXUg ziB-pcy5V~fa7LmW^*ut+co6?k-!t$XNZ9%F{aG)3N}c-1^{|bYOTQQ-=g&Qy@(hbl zY#smToPQhtI-(4Wh*nU$H);O!n}V?TLGkxRaD5Y~{0_y8jr3XtZ$^+meXf<(lsf0{ zVKUC=eF^e5R^pcO2Kjx4S88&D^5?uYna_IV`EFJFy^J<9^3G@?eNG}Tql|KAJoqE5 t0=}2vyOD+;18eu3i=h7||Jyx9%Z=hc!^MB7x8654c!wGx{xod-=wHi~cF_O; diff --git a/.vs/ToolCollection/v17/ResourceExplorer/settings.json b/.vs/ToolCollection/v17/ResourceExplorer/settings.json deleted file mode 100644 index ca0a9cc..0000000 --- a/.vs/ToolCollection/v17/ResourceExplorer/settings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ShowEmptyProjects": false, - "SelectedGroups": [], - "ExpandedProjects": [], - "EnableSpellChecker": true, - "ColumnOrder": [ - "name", - "type" - ], - "VisibleColumnKeys": [ - "name", - "neutral-value" - ] -} \ No newline at end of file diff --git a/ToolCollection/ToolCollection.vbproj b/ToolCollection/ToolCollection.vbproj index 3a5c542..6994a3d 100644 --- a/ToolCollection/ToolCollection.vbproj +++ b/ToolCollection/ToolCollection.vbproj @@ -93,16 +93,16 @@ - ..\..\2_DLL Projekte\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll + ..\..\..\2_DLL Projekte\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll - ..\..\2_DLL Projekte\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll + ..\..\..\2_DLL Projekte\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Digital Data\DigitalData.Modules.Filesystem.dll - ..\..\2_DLL Projekte\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll + ..\..\..\2_DLL Projekte\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll packages\EntityFramework.6.0.2\lib\net45\EntityFramework.dll From aacc21091c56eb68075cfbf23ec16928fe1e709b Mon Sep 17 00:00:00 2001 From: OlgunR Date: Tue, 16 Sep 2025 16:40:40 +0200 Subject: [PATCH 06/90] =?UTF-8?q?SQL=20Test=20in=20der=20Nachindexierung?= =?UTF-8?q?=20-=20frmNI=5FSQLTest;=20Lizenzpr=C3=BCfung=20entfernt=20-=20f?= =?UTF-8?q?rmNIProfileigenschaften,=20frmDIProfileigenschaften?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmDIProfilEigenschaften.vb | 17 ----------------- ToolCollection/frmNIProfileigenschaften.vb | 18 +----------------- ToolCollection/frmNIVerknuepfungen.vb | 12 ++++++++++++ ToolCollection/frmNI_SQLTest.Designer.vb | 1 - 4 files changed, 13 insertions(+), 35 deletions(-) diff --git a/ToolCollection/frmDIProfilEigenschaften.vb b/ToolCollection/frmDIProfilEigenschaften.vb index 0049e59..f990b3f 100644 --- a/ToolCollection/frmDIProfilEigenschaften.vb +++ b/ToolCollection/frmDIProfilEigenschaften.vb @@ -256,23 +256,6 @@ Public Class frmDIProfilEigenschaften End Sub Private Sub btnHinzufügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHinzufügen.Click - Try - For Each license As ClassLicense In Me.licenseManager.Licenses.Licenses() - Select Case license.Modulename.ToUpper - Case "DATEIIMPORT" - If Prof_Anzahl + 1 > license.Anz_Profile Then - MsgBox("Die Maximalanzahl der lizensierten Dateiimport-Profile (" & license.Anz_Profile.ToString & ") ist erreicht!", MsgBoxStyle.Exclamation, "Achtung - Lizenzfehler:") - Exit Sub - End If - End Select - - Next - Catch ex As Exception - If My.Settings.licensekey <> "DD MaxLicense" Or My.Settings.licensekey.ToUpper <> "DDALLIN" Or My.Settings.licensekey.ToUpper <> "DD_ALL_IN" Then - MsgBox("Error Adding Profile due to license issue!", MsgBoxStyle.Critical) - End If - End Try - ' das Formular zum Erstellen eines neuen Profil öffnen frmLogin_DI.ShowDialog() 'frmDIProfilHinzufuegen.ShowDialog() diff --git a/ToolCollection/frmNIProfileigenschaften.vb b/ToolCollection/frmNIProfileigenschaften.vb index 125aa03..eae978d 100644 --- a/ToolCollection/frmNIProfileigenschaften.vb +++ b/ToolCollection/frmNIProfileigenschaften.vb @@ -17,6 +17,7 @@ Public Class frmNIProfileigenschaften Private Shared _Instance As frmNIProfileigenschaften = Nothing Private licenseManager As ClassLicenseManager = Nothing Private INDEX_LIST As New List(Of String) + Private selectedProfile As ClassNIProfil Public Shared Function Instance() As frmNIProfileigenschaften If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then _Instance = New frmNIProfileigenschaften @@ -540,23 +541,6 @@ Public Class frmNIProfileigenschaften End Sub Private Sub btnHinzufügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHinzufügen.Click - Try - For Each license As ClassLicense In Me.licenseManager.Licenses.Licenses() - Select Case license.Modulename.ToUpper - Case "NACHINDEXIERUNG" - If Prof_Anzahl + 1 > license.Anz_Profile Then - MsgBox("Die Maximalanzahl der lizensierten Nachindexierungs-Profile (" & license.Anz_Profile.ToString & ") ist erreicht!", MsgBoxStyle.Exclamation, "Achtung - Lizenzfehler:") - Exit Sub - End If - End Select - - Next - Catch ex As Exception - If My.Settings.licensekey <> "DD MaxLicense" Then - MsgBox("Error Adding Profile due to license issue!", MsgBoxStyle.Critical) - End If - End Try - frmLogin_NI.ShowDialog() ' wenn das Formular geschlossen wurde, werden die Profile neu in die Combobox geladen Me.LoadProfilesInCombobox() diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index a61fbfb..9dbd4af 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -2217,6 +2217,12 @@ Public Class frmNIVerknuepfungen Private Sub btnTestSQL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTestSQL.Click Try + If Me.txtSelectAnweisung.Text = "" Then + MsgBox("Bitte geben Sie eine Select-Anweisung ein!", MsgBoxStyle.Exclamation, "Select-Anweisung fehlt:") + Me.txtTestwert.BackColor = Drawing.Color.Lime + Me.txtTestwert.Focus() + Exit Sub + End If If Me.txtTestwert.Text = "" Then MsgBox("Bitte geben Sie einen Testwert für den eindeutigen Startwert ein!", MsgBoxStyle.Exclamation, "Testparameter fehlt:") Me.txtTestwert.BackColor = Drawing.Color.Lime @@ -2628,6 +2634,12 @@ Public Class frmNIVerknuepfungen Private Sub btntest_checkIndexsql_Click(sender As System.Object, e As System.EventArgs) Handles btntest_checkIndexsql.Click Try + If Me.txtCheckIndexSQL.Text = "" Then + MsgBox("Bitte geben Sie eine Select-Anweisung ein!", MsgBoxStyle.Exclamation, "Select-Anweisung fehlt:") + Me.txtTestwert.BackColor = Drawing.Color.Lime + Me.txtTestwert.Focus() + Exit Sub + End If If Me.txtTestwert_checkindex.Text = "" Then MsgBox("Bitte geben Sie einen Testwert für den eindeutigen Startwert ein!", MsgBoxStyle.Exclamation, "Testparameter fehlt:") Me.txtTestwert_checkindex.BackColor = Drawing.Color.Lime diff --git a/ToolCollection/frmNI_SQLTest.Designer.vb b/ToolCollection/frmNI_SQLTest.Designer.vb index 3c18701..ec7dded 100644 --- a/ToolCollection/frmNI_SQLTest.Designer.vb +++ b/ToolCollection/frmNI_SQLTest.Designer.vb @@ -183,7 +183,6 @@ Partial Class frmNI_SQLTest Me.Controls.Add(Me.ListBox1) Me.Controls.Add(Me.txtSQL_String) Me.Controls.Add(Me.BindingNavigator1) - Me.DataBindings.Add(New System.Windows.Forms.Binding("Location", Global.ToolCollection.My.MySettings.Default, "frmNI_SQL_Loc", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) From c6ee88e8715f35b53510f0b5f0b26d06dfedc242 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Tue, 16 Sep 2025 16:55:56 +0200 Subject: [PATCH 07/90] LIzenzverwaltung aus UI entfernt - frmStart --- ToolCollection/frmStart.Designer.vb | 23 ++++++------------ ToolCollection/frmStart.resx | 36 ++++++++++++++--------------- ToolCollection/frmStart.vb | 4 ---- 3 files changed, 25 insertions(+), 38 deletions(-) diff --git a/ToolCollection/frmStart.Designer.vb b/ToolCollection/frmStart.Designer.vb index f762d25..c2a1643 100644 --- a/ToolCollection/frmStart.Designer.vb +++ b/ToolCollection/frmStart.Designer.vb @@ -36,7 +36,6 @@ Partial Class frmStart Me.ZeigeLogFileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ÖffneLogverzeichnisToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ModuleToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.LizenzverwaltungToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.PasswortverwaltungToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.GrundeinstellungenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.CriticalEmailTestToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -93,7 +92,7 @@ Partial Class frmStart Me.Status_Machine.Image = CType(resources.GetObject("Status_Machine.Image"), System.Drawing.Image) Me.Status_Machine.Margin = New System.Windows.Forms.Padding(10, 3, 0, 2) Me.Status_Machine.Name = "Status_Machine" - Me.Status_Machine.Size = New System.Drawing.Size(139, 20) + Me.Status_Machine.Size = New System.Drawing.Size(140, 20) Me.Status_Machine.Text = "ToolStripStatusLabel1" Me.Status_Machine.ToolTipText = "Client-Name" ' @@ -104,7 +103,7 @@ Partial Class frmStart Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) Me.ToolStripStatusLabel2.Image = CType(resources.GetObject("ToolStripStatusLabel2.Image"), System.Drawing.Image) Me.ToolStripStatusLabel2.Name = "ToolStripStatusLabel2" - Me.ToolStripStatusLabel2.Size = New System.Drawing.Size(139, 20) + Me.ToolStripStatusLabel2.Size = New System.Drawing.Size(140, 20) Me.ToolStripStatusLabel2.Text = "ToolStripStatusLabel1" Me.ToolStripStatusLabel2.ToolTipText = "Aktueller Benutzer" ' @@ -114,7 +113,7 @@ Partial Class frmStart Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Right) _ Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) Me.tslblVersion.Name = "tslblVersion" - Me.tslblVersion.Size = New System.Drawing.Size(123, 20) + Me.tslblVersion.Size = New System.Drawing.Size(124, 20) Me.tslblVersion.Text = "ToolStripStatusLabel1" Me.tslblVersion.ToolTipText = "Aktueller Benutzer" ' @@ -173,34 +172,27 @@ Partial Class frmStart ' 'ModuleToolStripMenuItem ' - Me.ModuleToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LizenzverwaltungToolStripMenuItem, Me.PasswortverwaltungToolStripMenuItem, Me.GrundeinstellungenToolStripMenuItem, Me.CriticalEmailTestToolStripMenuItem}) + Me.ModuleToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.PasswortverwaltungToolStripMenuItem, Me.GrundeinstellungenToolStripMenuItem, Me.CriticalEmailTestToolStripMenuItem}) Me.ModuleToolStripMenuItem.Name = "ModuleToolStripMenuItem" Me.ModuleToolStripMenuItem.Size = New System.Drawing.Size(75, 20) Me.ModuleToolStripMenuItem.Text = "Bearbeiten" ' - 'LizenzverwaltungToolStripMenuItem - ' - Me.LizenzverwaltungToolStripMenuItem.Name = "LizenzverwaltungToolStripMenuItem" - Me.LizenzverwaltungToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F10 - Me.LizenzverwaltungToolStripMenuItem.Size = New System.Drawing.Size(190, 22) - Me.LizenzverwaltungToolStripMenuItem.Text = "Lizenzverwaltung" - ' 'PasswortverwaltungToolStripMenuItem ' Me.PasswortverwaltungToolStripMenuItem.Name = "PasswortverwaltungToolStripMenuItem" - Me.PasswortverwaltungToolStripMenuItem.Size = New System.Drawing.Size(190, 22) + Me.PasswortverwaltungToolStripMenuItem.Size = New System.Drawing.Size(180, 22) Me.PasswortverwaltungToolStripMenuItem.Text = "Passwortverwaltung" ' 'GrundeinstellungenToolStripMenuItem ' Me.GrundeinstellungenToolStripMenuItem.Name = "GrundeinstellungenToolStripMenuItem" - Me.GrundeinstellungenToolStripMenuItem.Size = New System.Drawing.Size(190, 22) + Me.GrundeinstellungenToolStripMenuItem.Size = New System.Drawing.Size(180, 22) Me.GrundeinstellungenToolStripMenuItem.Text = "Grundeinstellungen" ' 'CriticalEmailTestToolStripMenuItem ' Me.CriticalEmailTestToolStripMenuItem.Name = "CriticalEmailTestToolStripMenuItem" - Me.CriticalEmailTestToolStripMenuItem.Size = New System.Drawing.Size(190, 22) + Me.CriticalEmailTestToolStripMenuItem.Size = New System.Drawing.Size(180, 22) Me.CriticalEmailTestToolStripMenuItem.Text = "Critical Email - Test" ' 'HilfeToolStripMenuItem @@ -486,7 +478,6 @@ Partial Class frmStart Friend WithEvents DateiToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents BeendenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ModuleToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents LizenzverwaltungToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents HilfeToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ÜberToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ImageList1 As System.Windows.Forms.ImageList diff --git a/ToolCollection/frmStart.resx b/ToolCollection/frmStart.resx index 1c385eb..3d73fd5 100644 --- a/ToolCollection/frmStart.resx +++ b/ToolCollection/frmStart.resx @@ -124,28 +124,28 @@ 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 + CebOM54n/eSouhlrbUcAAAAASUVORK5CYII= @@ -159,7 +159,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAO - FAAAAk1TRnQBSQFMAgEBCQEAAVgBAwFYAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + FAAAAk1TRnQBSQFMAgEBCQEAAWABAwFgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index cd378fc..6e5a41c 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -278,10 +278,6 @@ Public Class frmStart Cursor = Cursors.Default End Sub - Private Sub LizenzverwaltungToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LizenzverwaltungToolStripMenuItem.Click - ' Öffnet den Lizenz-Manager - frmLizenzmanager.ShowDialog() - End Sub Public Sub ClearGroupBoxes() Me.grbDI.Visible = False Me.GBNachindexierung.Visible = False From 08dc11f2928fc791f049223faf8ceb33d74809e2 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 17 Sep 2025 14:28:17 +0200 Subject: [PATCH 08/90] =?UTF-8?q?Oberfl=C3=A4che=20etwas=20aufger=C3=A4umt?= =?UTF-8?q?,=20Speichern=20per=20Focuslost=20durch=20Button=20ersetzt.=20-?= =?UTF-8?q?=20frmNIVerknuepfungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frmNIVerknuepfungen.Designer.vb | 123 ++++++++++-------- ToolCollection/frmNIVerknuepfungen.vb | 40 ++++-- 2 files changed, 100 insertions(+), 63 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index 9388fc0..99d7dce 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -86,6 +86,7 @@ Partial Class frmNIVerknuepfungen Me.lblDescrangelegteVerknuepf = New System.Windows.Forms.Label() Me.tabctrlbottom = New System.Windows.Forms.TabControl() Me.TabPage6 = New System.Windows.Forms.TabPage() + Me.btnSaveCheckIndex = New System.Windows.Forms.Button() Me.btnzuruecksetzen_checksql = New System.Windows.Forms.Button() Me.txtGrundgeruest_check = New System.Windows.Forms.Button() Me.Panel2 = New System.Windows.Forms.Panel() @@ -215,7 +216,7 @@ Partial Class frmNIVerknuepfungen Me.cmbDatenbankSpalten.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cmbDatenbankSpalten.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.cmbDatenbankSpalten.FormattingEnabled = True - Me.cmbDatenbankSpalten.Location = New System.Drawing.Point(996, 119) + Me.cmbDatenbankSpalten.Location = New System.Drawing.Point(996, 122) Me.cmbDatenbankSpalten.Name = "cmbDatenbankSpalten" Me.cmbDatenbankSpalten.RightToLeft = System.Windows.Forms.RightToLeft.No Me.cmbDatenbankSpalten.Size = New System.Drawing.Size(191, 21) @@ -228,7 +229,7 @@ Partial Class frmNIVerknuepfungen Me.Label8.AutoSize = True Me.Label8.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.Label8.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label8.Location = New System.Drawing.Point(880, 122) + Me.Label8.Location = New System.Drawing.Point(884, 125) Me.Label8.Name = "Label8" Me.Label8.RightToLeft = System.Windows.Forms.RightToLeft.No Me.Label8.Size = New System.Drawing.Size(105, 13) @@ -357,10 +358,10 @@ Partial Class frmNIVerknuepfungen Me.btnZurücksetzen.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btnZurücksetzen.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.btnZurücksetzen.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnZurücksetzen.Location = New System.Drawing.Point(996, 32) + Me.btnZurücksetzen.Location = New System.Drawing.Point(997, 32) Me.btnZurücksetzen.Name = "btnZurücksetzen" Me.btnZurücksetzen.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.btnZurücksetzen.Size = New System.Drawing.Size(89, 21) + Me.btnZurücksetzen.Size = New System.Drawing.Size(110, 24) Me.btnZurücksetzen.TabIndex = 33 Me.btnZurücksetzen.Text = "Zurücksetzen" Me.btnZurücksetzen.UseVisualStyleBackColor = True @@ -376,7 +377,7 @@ Partial Class frmNIVerknuepfungen Me.Label6.AutoSize = True Me.Label6.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.Label6.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label6.Location = New System.Drawing.Point(879, 149) + Me.Label6.Location = New System.Drawing.Point(884, 152) Me.Label6.Name = "Label6" Me.Label6.RightToLeft = System.Windows.Forms.RightToLeft.No Me.Label6.Size = New System.Drawing.Size(99, 13) @@ -400,7 +401,7 @@ Partial Class frmNIVerknuepfungen Me.cmbWindreamIndexe.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cmbWindreamIndexe.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.cmbWindreamIndexe.FormattingEnabled = True - Me.cmbWindreamIndexe.Location = New System.Drawing.Point(996, 146) + Me.cmbWindreamIndexe.Location = New System.Drawing.Point(996, 149) Me.cmbWindreamIndexe.Name = "cmbWindreamIndexe" Me.cmbWindreamIndexe.RightToLeft = System.Windows.Forms.RightToLeft.No Me.cmbWindreamIndexe.Size = New System.Drawing.Size(191, 21) @@ -467,7 +468,7 @@ Partial Class frmNIVerknuepfungen Me.btnStandardSQL.ImeMode = System.Windows.Forms.ImeMode.NoControl Me.btnStandardSQL.Location = New System.Drawing.Point(880, 32) Me.btnStandardSQL.Name = "btnStandardSQL" - Me.btnStandardSQL.Size = New System.Drawing.Size(110, 21) + Me.btnStandardSQL.Size = New System.Drawing.Size(110, 24) Me.btnStandardSQL.TabIndex = 42 Me.btnStandardSQL.Text = "SQL Grundgerüst" Me.btnStandardSQL.UseVisualStyleBackColor = True @@ -501,27 +502,27 @@ Partial Class frmNIVerknuepfungen 'btnEindIndex ' Me.btnEindIndex.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnEindIndex.Font = New System.Drawing.Font("Segoe UI", 8.25!) + Me.btnEindIndex.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnEindIndex.ForeColor = System.Drawing.Color.OrangeRed Me.btnEindIndex.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnEindIndex.Location = New System.Drawing.Point(880, 59) + Me.btnEindIndex.Location = New System.Drawing.Point(880, 85) Me.btnEindIndex.Name = "btnEindIndex" Me.btnEindIndex.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.btnEindIndex.Size = New System.Drawing.Size(89, 21) + Me.btnEindIndex.Size = New System.Drawing.Size(110, 24) Me.btnEindIndex.TabIndex = 49 - Me.btnEindIndex.Text = "Eind. Index" + Me.btnEindIndex.Text = "Eindeutiger Index" Me.btnEindIndex.UseVisualStyleBackColor = True ' 'Panel1 ' Me.Panel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Panel1.BackColor = System.Drawing.Color.Lime + Me.Panel1.BackColor = System.Drawing.Color.GreenYellow Me.Panel1.Controls.Add(Me.lblSQLTest) Me.Panel1.Controls.Add(Me.txtTestwert) Me.Panel1.Controls.Add(Me.btnTestSQL) - Me.Panel1.Location = New System.Drawing.Point(996, 59) + Me.Panel1.Location = New System.Drawing.Point(996, 62) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(200, 52) + Me.Panel1.Size = New System.Drawing.Size(228, 52) Me.Panel1.TabIndex = 48 ' 'lblSQLTest @@ -540,7 +541,7 @@ Partial Class frmNIVerknuepfungen Me.txtTestwert.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.txtTestwert.Location = New System.Drawing.Point(3, 24) Me.txtTestwert.Name = "txtTestwert" - Me.txtTestwert.Size = New System.Drawing.Size(93, 22) + Me.txtTestwert.Size = New System.Drawing.Size(100, 22) Me.txtTestwert.TabIndex = 45 ' 'btnTestSQL @@ -549,12 +550,11 @@ Partial Class frmNIVerknuepfungen Me.btnTestSQL.Image = Global.ToolCollection.My.Resources.Resources.ico2469 Me.btnTestSQL.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btnTestSQL.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnTestSQL.Location = New System.Drawing.Point(99, 24) + Me.btnTestSQL.Location = New System.Drawing.Point(109, 23) Me.btnTestSQL.Name = "btnTestSQL" - Me.btnTestSQL.Size = New System.Drawing.Size(92, 24) + Me.btnTestSQL.Size = New System.Drawing.Size(114, 24) Me.btnTestSQL.TabIndex = 44 Me.btnTestSQL.Text = "SQL testen" - Me.btnTestSQL.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.btnTestSQL.UseVisualStyleBackColor = True ' 'Label9 @@ -607,9 +607,9 @@ Partial Class frmNIVerknuepfungen Me.Button5.Image = Global.ToolCollection.My.Resources.Resources.save Me.Button5.ImageAlign = System.Drawing.ContentAlignment.MiddleRight Me.Button5.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Button5.Location = New System.Drawing.Point(1141, 97) + Me.Button5.Location = New System.Drawing.Point(1131, 97) Me.Button5.Name = "Button5" - Me.Button5.Size = New System.Drawing.Size(89, 23) + Me.Button5.Size = New System.Drawing.Size(100, 24) Me.Button5.TabIndex = 54 Me.Button5.Text = "Speichern" Me.Button5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -711,7 +711,7 @@ Partial Class frmNIVerknuepfungen Me.rbTables.ImeMode = System.Windows.Forms.ImeMode.NoControl Me.rbTables.Location = New System.Drawing.Point(132, 8) Me.rbTables.Name = "rbTables" - Me.rbTables.Size = New System.Drawing.Size(68, 17) + Me.rbTables.Size = New System.Drawing.Size(67, 17) Me.rbTables.TabIndex = 29 Me.rbTables.Text = "Tabellen" Me.rbTables.UseVisualStyleBackColor = True @@ -765,7 +765,7 @@ Partial Class frmNIVerknuepfungen Me.btnAddNI_Objekt.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.btnAddNI_Objekt.Image = Global.ToolCollection.My.Resources.Resources.add Me.btnAddNI_Objekt.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnAddNI_Objekt.Location = New System.Drawing.Point(1193, 175) + Me.btnAddNI_Objekt.Location = New System.Drawing.Point(1193, 177) Me.btnAddNI_Objekt.Name = "btnAddNI_Objekt" Me.btnAddNI_Objekt.RightToLeft = System.Windows.Forms.RightToLeft.No Me.btnAddNI_Objekt.Size = New System.Drawing.Size(33, 22) @@ -778,7 +778,7 @@ Partial Class frmNIVerknuepfungen Me.Label40.AutoSize = True Me.Label40.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.Label40.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label40.Location = New System.Drawing.Point(877, 175) + Me.Label40.Location = New System.Drawing.Point(884, 180) Me.Label40.Name = "Label40" Me.Label40.RightToLeft = System.Windows.Forms.RightToLeft.No Me.Label40.Size = New System.Drawing.Size(97, 13) @@ -793,7 +793,7 @@ Partial Class frmNIVerknuepfungen Me.cmbNI_Objekte.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.cmbNI_Objekte.FormattingEnabled = True Me.cmbNI_Objekte.Items.AddRange(New Object() {"Dokument - Dateiname.Endung", "Dokument - Dateiname", "Dokument - Pfad", "Dokument - Pfad\Dateiname.Endung", "Datum - heute"}) - Me.cmbNI_Objekte.Location = New System.Drawing.Point(996, 174) + Me.cmbNI_Objekte.Location = New System.Drawing.Point(996, 177) Me.cmbNI_Objekte.Name = "cmbNI_Objekte" Me.cmbNI_Objekte.RightToLeft = System.Windows.Forms.RightToLeft.No Me.cmbNI_Objekte.Size = New System.Drawing.Size(191, 21) @@ -807,9 +807,9 @@ Partial Class frmNIVerknuepfungen Me.btnsave_select.Image = Global.ToolCollection.My.Resources.Resources.save Me.btnsave_select.ImageAlign = System.Drawing.ContentAlignment.MiddleRight Me.btnsave_select.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnsave_select.Location = New System.Drawing.Point(1091, 32) + Me.btnsave_select.Location = New System.Drawing.Point(1114, 32) Me.btnsave_select.Name = "btnsave_select" - Me.btnsave_select.Size = New System.Drawing.Size(89, 23) + Me.btnsave_select.Size = New System.Drawing.Size(110, 24) Me.btnsave_select.TabIndex = 47 Me.btnsave_select.Text = "Speichern" Me.btnsave_select.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -821,7 +821,7 @@ Partial Class frmNIVerknuepfungen Me.btnSpalteEinfügen.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.btnSpalteEinfügen.Image = Global.ToolCollection.My.Resources.Resources.add Me.btnSpalteEinfügen.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnSpalteEinfügen.Location = New System.Drawing.Point(1193, 118) + Me.btnSpalteEinfügen.Location = New System.Drawing.Point(1193, 121) Me.btnSpalteEinfügen.Name = "btnSpalteEinfügen" Me.btnSpalteEinfügen.Size = New System.Drawing.Size(33, 22) Me.btnSpalteEinfügen.TabIndex = 36 @@ -834,7 +834,7 @@ Partial Class frmNIVerknuepfungen Me.btnWindreamIndexEinfügen.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.btnWindreamIndexEinfügen.Image = Global.ToolCollection.My.Resources.Resources.add Me.btnWindreamIndexEinfügen.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnWindreamIndexEinfügen.Location = New System.Drawing.Point(1193, 146) + Me.btnWindreamIndexEinfügen.Location = New System.Drawing.Point(1193, 149) Me.btnWindreamIndexEinfügen.Name = "btnWindreamIndexEinfügen" Me.btnWindreamIndexEinfügen.RightToLeft = System.Windows.Forms.RightToLeft.No Me.btnWindreamIndexEinfügen.Size = New System.Drawing.Size(33, 22) @@ -945,6 +945,7 @@ Partial Class frmNIVerknuepfungen ' 'TabPage6 ' + Me.TabPage6.Controls.Add(Me.btnSaveCheckIndex) Me.TabPage6.Controls.Add(Me.btnzuruecksetzen_checksql) Me.TabPage6.Controls.Add(Me.txtGrundgeruest_check) Me.TabPage6.Controls.Add(Me.Panel2) @@ -962,12 +963,27 @@ Partial Class frmNIVerknuepfungen Me.TabPage6.Text = "Überprüfung deskriptiver Index" Me.TabPage6.UseVisualStyleBackColor = True ' + 'btnSaveCheckIndex + ' + Me.btnSaveCheckIndex.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnSaveCheckIndex.BackColor = System.Drawing.SystemColors.Control + Me.btnSaveCheckIndex.Enabled = False + Me.btnSaveCheckIndex.Image = Global.ToolCollection.My.Resources.Resources.save + Me.btnSaveCheckIndex.ImageAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnSaveCheckIndex.Location = New System.Drawing.Point(1120, 21) + Me.btnSaveCheckIndex.Name = "btnSaveCheckIndex" + Me.btnSaveCheckIndex.Size = New System.Drawing.Size(110, 24) + Me.btnSaveCheckIndex.TabIndex = 52 + Me.btnSaveCheckIndex.Text = "Speichern" + Me.btnSaveCheckIndex.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnSaveCheckIndex.UseVisualStyleBackColor = True + ' 'btnzuruecksetzen_checksql ' Me.btnzuruecksetzen_checksql.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnzuruecksetzen_checksql.Location = New System.Drawing.Point(1008, 23) + Me.btnzuruecksetzen_checksql.Location = New System.Drawing.Point(1003, 21) Me.btnzuruecksetzen_checksql.Name = "btnzuruecksetzen_checksql" - Me.btnzuruecksetzen_checksql.Size = New System.Drawing.Size(84, 23) + Me.btnzuruecksetzen_checksql.Size = New System.Drawing.Size(110, 24) Me.btnzuruecksetzen_checksql.TabIndex = 51 Me.btnzuruecksetzen_checksql.Text = "Zurücksetzen" Me.btnzuruecksetzen_checksql.UseVisualStyleBackColor = True @@ -975,9 +991,9 @@ Partial Class frmNIVerknuepfungen 'txtGrundgeruest_check ' Me.txtGrundgeruest_check.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.txtGrundgeruest_check.Location = New System.Drawing.Point(897, 21) + Me.txtGrundgeruest_check.Location = New System.Drawing.Point(886, 21) Me.txtGrundgeruest_check.Name = "txtGrundgeruest_check" - Me.txtGrundgeruest_check.Size = New System.Drawing.Size(105, 21) + Me.txtGrundgeruest_check.Size = New System.Drawing.Size(110, 24) Me.txtGrundgeruest_check.TabIndex = 50 Me.txtGrundgeruest_check.Text = "SQL Grundgerüst" Me.txtGrundgeruest_check.UseVisualStyleBackColor = True @@ -985,13 +1001,13 @@ Partial Class frmNIVerknuepfungen 'Panel2 ' Me.Panel2.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Panel2.BackColor = System.Drawing.Color.Lime + Me.Panel2.BackColor = System.Drawing.Color.GreenYellow Me.Panel2.Controls.Add(Me.lblIndextestSQL) Me.Panel2.Controls.Add(Me.txtTestwert_checkindex) Me.Panel2.Controls.Add(Me.btntest_checkIndexsql) - Me.Panel2.Location = New System.Drawing.Point(897, 115) + Me.Panel2.Location = New System.Drawing.Point(1003, 51) Me.Panel2.Name = "Panel2" - Me.Panel2.Size = New System.Drawing.Size(205, 52) + Me.Panel2.Size = New System.Drawing.Size(227, 52) Me.Panel2.TabIndex = 49 ' 'lblIndextestSQL @@ -1010,7 +1026,7 @@ Partial Class frmNIVerknuepfungen Me.txtTestwert_checkindex.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.txtTestwert_checkindex.Location = New System.Drawing.Point(3, 24) Me.txtTestwert_checkindex.Name = "txtTestwert_checkindex" - Me.txtTestwert_checkindex.Size = New System.Drawing.Size(93, 22) + Me.txtTestwert_checkindex.Size = New System.Drawing.Size(100, 22) Me.txtTestwert_checkindex.TabIndex = 45 ' 'btntest_checkIndexsql @@ -1019,12 +1035,11 @@ Partial Class frmNIVerknuepfungen Me.btntest_checkIndexsql.Image = Global.ToolCollection.My.Resources.Resources.ico2469 Me.btntest_checkIndexsql.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btntest_checkIndexsql.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btntest_checkIndexsql.Location = New System.Drawing.Point(99, 24) + Me.btntest_checkIndexsql.Location = New System.Drawing.Point(109, 23) Me.btntest_checkIndexsql.Name = "btntest_checkIndexsql" - Me.btntest_checkIndexsql.Size = New System.Drawing.Size(93, 24) + Me.btntest_checkIndexsql.Size = New System.Drawing.Size(113, 24) Me.btntest_checkIndexsql.TabIndex = 44 Me.btntest_checkIndexsql.Text = "SQL testen" - Me.btntest_checkIndexsql.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.btntest_checkIndexsql.UseVisualStyleBackColor = True ' 'Label29 @@ -1044,12 +1059,12 @@ Partial Class frmNIVerknuepfungen ' Me.btnSpalteIndexSQLeinfuegen.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btnSpalteIndexSQLeinfuegen.Font = New System.Drawing.Font("Segoe UI", 8.25!) + Me.btnSpalteIndexSQLeinfuegen.Image = Global.ToolCollection.My.Resources.Resources.add Me.btnSpalteIndexSQLeinfuegen.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnSpalteIndexSQLeinfuegen.Location = New System.Drawing.Point(1064, 76) + Me.btnSpalteIndexSQLeinfuegen.Location = New System.Drawing.Point(1199, 110) Me.btnSpalteIndexSQLeinfuegen.Name = "btnSpalteIndexSQLeinfuegen" - Me.btnSpalteIndexSQLeinfuegen.Size = New System.Drawing.Size(97, 22) + Me.btnSpalteIndexSQLeinfuegen.Size = New System.Drawing.Size(33, 22) Me.btnSpalteIndexSQLeinfuegen.TabIndex = 42 - Me.btnSpalteIndexSQLeinfuegen.Text = "Spalte einfügen" Me.btnSpalteIndexSQLeinfuegen.UseVisualStyleBackColor = True ' 'txtCheckIndexSQL @@ -1064,7 +1079,7 @@ Partial Class frmNIVerknuepfungen Me.txtCheckIndexSQL.Multiline = True Me.txtCheckIndexSQL.Name = "txtCheckIndexSQL" Me.txtCheckIndexSQL.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.txtCheckIndexSQL.Size = New System.Drawing.Size(874, 245) + Me.txtCheckIndexSQL.Size = New System.Drawing.Size(850, 245) Me.txtCheckIndexSQL.TabIndex = 30 ' 'cmbSpalten_indexSQL @@ -1074,24 +1089,25 @@ Partial Class frmNIVerknuepfungen Me.cmbSpalten_indexSQL.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cmbSpalten_indexSQL.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.cmbSpalten_indexSQL.FormattingEnabled = True - Me.cmbSpalten_indexSQL.Location = New System.Drawing.Point(897, 76) + Me.cmbSpalten_indexSQL.Location = New System.Drawing.Point(1002, 111) Me.cmbSpalten_indexSQL.Name = "cmbSpalten_indexSQL" Me.cmbSpalten_indexSQL.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.cmbSpalten_indexSQL.Size = New System.Drawing.Size(163, 21) + Me.cmbSpalten_indexSQL.Size = New System.Drawing.Size(191, 21) Me.cmbSpalten_indexSQL.Sorted = True Me.cmbSpalten_indexSQL.TabIndex = 41 ' 'btnIndexSQL_einfuegen ' Me.btnIndexSQL_einfuegen.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnIndexSQL_einfuegen.Font = New System.Drawing.Font("Segoe UI", 8.25!) + Me.btnIndexSQL_einfuegen.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btnIndexSQL_einfuegen.ForeColor = System.Drawing.Color.OrangeRed Me.btnIndexSQL_einfuegen.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnIndexSQL_einfuegen.Location = New System.Drawing.Point(1167, 59) + Me.btnIndexSQL_einfuegen.Location = New System.Drawing.Point(886, 74) Me.btnIndexSQL_einfuegen.Name = "btnIndexSQL_einfuegen" Me.btnIndexSQL_einfuegen.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.btnIndexSQL_einfuegen.Size = New System.Drawing.Size(74, 38) + Me.btnIndexSQL_einfuegen.Size = New System.Drawing.Size(110, 24) Me.btnIndexSQL_einfuegen.TabIndex = 39 - Me.btnIndexSQL_einfuegen.Text = "Eind. Index einfügen" + Me.btnIndexSQL_einfuegen.Text = "Eindeutiger Index" Me.btnIndexSQL_einfuegen.UseVisualStyleBackColor = True ' 'Label30 @@ -1100,7 +1116,7 @@ Partial Class frmNIVerknuepfungen Me.Label30.AutoSize = True Me.Label30.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.Label30.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label30.Location = New System.Drawing.Point(897, 59) + Me.Label30.Location = New System.Drawing.Point(890, 114) Me.Label30.Name = "Label30" Me.Label30.RightToLeft = System.Windows.Forms.RightToLeft.No Me.Label30.Size = New System.Drawing.Size(105, 13) @@ -1150,7 +1166,7 @@ Partial Class frmNIVerknuepfungen Me.Label12.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label12.Location = New System.Drawing.Point(5, 17) Me.Label12.Name = "Label12" - Me.Label12.Size = New System.Drawing.Size(646, 13) + Me.Label12.Size = New System.Drawing.Size(647, 13) Me.Label12.TabIndex = 38 Me.Label12.Text = "Wenn ein SQL-Ergebnis geliefert wurde wird dieses Dokument als fertig indexiert m" & "arkiert! Voraussetzung Indextyp: Boolean" @@ -1353,7 +1369,7 @@ Partial Class frmNIVerknuepfungen Me.rbFT_single.AutoSize = True Me.rbFT_single.Location = New System.Drawing.Point(6, 21) Me.rbFT_single.Name = "rbFT_single" - Me.rbFT_single.Size = New System.Drawing.Size(201, 17) + Me.rbFT_single.Size = New System.Drawing.Size(202, 17) Me.rbFT_single.TabIndex = 3 Me.rbFT_single.Text = "Nur Bestimmte Position auswerten" Me.rbFT_single.UseVisualStyleBackColor = True @@ -1857,7 +1873,7 @@ Partial Class frmNIVerknuepfungen Me.rbFunctionsTb.ImeMode = System.Windows.Forms.ImeMode.NoControl Me.rbFunctionsTb.Location = New System.Drawing.Point(322, 8) Me.rbFunctionsTb.Name = "rbFunctionsTb" - Me.rbFunctionsTb.Size = New System.Drawing.Size(112, 17) + Me.rbFunctionsTb.Size = New System.Drawing.Size(111, 17) Me.rbFunctionsTb.TabIndex = 81 Me.rbFunctionsTb.Text = "Functions (Table)" Me.rbFunctionsTb.UseVisualStyleBackColor = True @@ -2132,4 +2148,5 @@ Partial Class frmNIVerknuepfungen Friend WithEvents rbFunctionsTb As RadioButton Friend WithEvents rbFunctionsSc As RadioButton Friend WithEvents Label2 As Label + Friend WithEvents btnSaveCheckIndex As Button End Class diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 9dbd4af..6c18cde 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -2020,6 +2020,7 @@ Public Class frmNIVerknuepfungen Me._selectedProfil.Save(True, "link") If Me._selectedProfil._links.selectedLink.SaveLink(Me._selectedProfil.Profilname, Me._selectedProfil.Ni_Art) = True Then + btnsave_select.Enabled = False MsgBox("Verknüpfung erfolgreich gespeichert!", MsgBoxStyle.Information) End If With btnsave_select @@ -2031,6 +2032,7 @@ Public Class frmNIVerknuepfungen Catch ex As Exception MsgBox("Fehler beim Speichern der DB-Verknüpfung." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try + End Sub Private Sub txtSelectAnweisung_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSelectAnweisung.TextChanged Try @@ -2042,7 +2044,7 @@ Public Class frmNIVerknuepfungen If SQL_ORIGIN <> Me.txtSelectAnweisung.Text Then With btnsave_select .Enabled = True - .ForeColor = Drawing.Color.Red + .ForeColor = Drawing.Color.Black End With End If ' die Informationen der selektierten Verknüpfung auslesen @@ -2600,12 +2602,27 @@ Public Class frmNIVerknuepfungen End If End Sub - Private Sub txtCheckIndexSQL_LostFocus(sender As Object, e As System.EventArgs) Handles txtCheckIndexSQL.LostFocus + 'Private Sub txtCheckIndexSQL_LostFocus(sender As Object, e As System.EventArgs) Handles txtCheckIndexSQL.LostFocus + ' If Me.txtCheckIndexSQL.Text <> "" Then + ' Try + ' ' die Änderungen speichern + ' If Me._selectedProfil.Save(True, "profile") = True Then ' wenn das Speichern erfolgreich war + ' ' den Speichern-Button deaktivieren + ' Else + ' MsgBox("Das Profil konnte nicht erfolgreich gespeichert werden.", MsgBoxStyle.Exclamation, "Fehler beim Speichern eines Profils") + ' End If + ' Catch ex As Exception + ' MsgBox("Fehler beim Speichern des SQL-Befehles." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Speichern eines SQL-Befehls.") + ' End Try + ' End If + 'End Sub + + Private Sub btnSaveCheckIndex_Click(sender As Object, e As EventArgs) Handles btnSaveCheckIndex.Click If Me.txtCheckIndexSQL.Text <> "" Then Try ' die Änderungen speichern - If Me._selectedProfil.Save(True, "profile") = True Then ' wenn das Speichern erfolgreich war - ' den Speichern-Button deaktivieren + If Me._selectedProfil.Save(True, "profile") = True Then + Me.btnSaveCheckIndex.Enabled = False Else MsgBox("Das Profil konnte nicht erfolgreich gespeichert werden.", MsgBoxStyle.Exclamation, "Fehler beim Speichern eines Profils") End If @@ -2616,14 +2633,17 @@ Public Class frmNIVerknuepfungen End Sub Private Sub txtCheckIndexSQL_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCheckIndexSQL.TextChanged - If Me.txtCheckIndexSQL.Text <> "" Then - If Me._selectedProfil IsNot Nothing Then - Me._selectedProfil.checkIndexsql = txtCheckIndexSQL.Text - If Not Me._selectedProfil.checkIndexsql = Me._selectedProfil.OriginalcheckIndexsql Then - Me._selectedProfil.setChanged() - End If + + If Me._selectedProfil IsNot Nothing Then + Me._selectedProfil.checkIndexsql = txtCheckIndexSQL.Text + + If Not Me._selectedProfil.checkIndexsql = Me._selectedProfil.OriginalcheckIndexsql Then + btnSaveCheckIndex.Enabled = True + Me._selectedProfil.setChanged() End If + End If + End Sub Private Sub txteindeutigerIndex_TextChanged(sender As System.Object, e As System.EventArgs) Handles txteindeutigerIndex.TextChanged From 86cebc8ae661a3e40b4b3143dbd29ded7f49bbe4 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 18 Sep 2025 16:11:06 +0200 Subject: [PATCH 09/90] =?UTF-8?q?Bei=20Verkn=C3=BCpdung=20verwalten=20aus?= =?UTF-8?q?=20Profileigenschaften=20heraus=20->=20Laden=20des=20akutellen?= =?UTF-8?q?=20NI=20Profils=20-=20ClassNIProfile,=20frmNIProfileigenschafte?= =?UTF-8?q?n,=20frmNIVerkn=C3=BCpfungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/ClassNIProfile.vb | 2 ++ ToolCollection/frmNIProfileigenschaften.vb | 4 ++++ ToolCollection/frmNIVerknuepfungen.vb | 22 ++++++++++++++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ToolCollection/ClassNIProfile.vb b/ToolCollection/ClassNIProfile.vb index 64e76ff..3e1097d 100644 --- a/ToolCollection/ClassNIProfile.vb +++ b/ToolCollection/ClassNIProfile.vb @@ -4,6 +4,8 @@ Public Class ClassNIProfile Private Shared _profiles() As ClassNIProfil Public Shared _windream As New ClassWindream_allgemein(CURR_LogConfig) Public Shared xmlConfigFile As String + Public Shared aktivesProfil As ClassNIProfil + Public Shared aktivesProfilAusProfileigenschaften As Boolean = False Public Shared Sub Init() Dim oConfigPath As String = My.Application.Info.DirectoryPath & "\" & My.Settings.vNIConfigDatei diff --git a/ToolCollection/frmNIProfileigenschaften.vb b/ToolCollection/frmNIProfileigenschaften.vb index eae978d..8b96550 100644 --- a/ToolCollection/frmNIProfileigenschaften.vb +++ b/ToolCollection/frmNIProfileigenschaften.vb @@ -814,11 +814,15 @@ Public Class frmNIProfileigenschaften End Sub Private Sub btnVerknüpfungen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerknüpfungen.Click + + ClassNIProfile.aktivesProfil = Me._selectedProfile + ClassNIProfile.aktivesProfilAusProfileigenschaften = True Cursor = Cursors.WaitCursor Dim frm As New frmNIVerknuepfungen frm = frmNIVerknuepfungen.Instance frm.MdiParent = frmStart frm.Show() + frm.BringToFront() Cursor = Cursors.Default End Sub diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 6c18cde..db58d29 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -478,6 +478,8 @@ Public Class frmNIVerknuepfungen ''' ''' Private Sub cmbProfilauswahl_DropDownItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles cmbProfilauswahl.DropDownItemClicked + ClassNIProfile.aktivesProfil = ClassNIProfile.getProfilByName(e.ClickedItem.Text) + Me._selectedProfil = ClassNIProfile.aktivesProfil Try 'wenn noch kein Profil geladen wurde soll das ausgewählte auf jeden Fall geladen werden If Me._selectedProfil Is Nothing Then @@ -2291,8 +2293,24 @@ Public Class frmNIVerknuepfungen Private Sub frmNIVerknuepfungen_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.LoadProfilesInCombobox() - Me._selectedProfil = Nothing - Me.pnlZielQuelle.Visible = False + + If ClassNIProfile.aktivesProfilAusProfileigenschaften And ClassNIProfile.aktivesProfil Is Nothing = False Then + Me._selectedProfil = ClassNIProfile.aktivesProfil + Me.lblProfil.Text = "(" & Me._selectedProfil.Profilname & ")" + Me.lblProfil.Visible = True + 'Me.pnlZielQuelle.Visible = False + + Me.LoadSelectedProfile(Me._selectedProfil.Profilname) + + ClassNIProfile.aktivesProfilAusProfileigenschaften = False + + If Me._selectedProfil.Dokumenttyp Is Nothing Then + Me.lblProfil.Enabled = False + Else + Me.lblProfil.Enabled = True + End If + End If + End Sub Private Sub btnEindIndex_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEindIndex.Click Dim text As String = Me.txteindeutigerIndex.Text From c024228b06cd20ea99b80d618bc4b49602e06ddf Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 22 Sep 2025 09:44:10 +0200 Subject: [PATCH 10/90] Revert "LIzenzverwaltung aus UI entfernt - frmStart" This reverts commit c6ee88e8715f35b53510f0b5f0b26d06dfedc242. --- ToolCollection/frmStart.Designer.vb | 23 ++++++++++++------ ToolCollection/frmStart.resx | 36 ++++++++++++++--------------- ToolCollection/frmStart.vb | 4 ++++ 3 files changed, 38 insertions(+), 25 deletions(-) diff --git a/ToolCollection/frmStart.Designer.vb b/ToolCollection/frmStart.Designer.vb index c2a1643..f762d25 100644 --- a/ToolCollection/frmStart.Designer.vb +++ b/ToolCollection/frmStart.Designer.vb @@ -36,6 +36,7 @@ Partial Class frmStart Me.ZeigeLogFileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ÖffneLogverzeichnisToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ModuleToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.LizenzverwaltungToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.PasswortverwaltungToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.GrundeinstellungenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.CriticalEmailTestToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -92,7 +93,7 @@ Partial Class frmStart Me.Status_Machine.Image = CType(resources.GetObject("Status_Machine.Image"), System.Drawing.Image) Me.Status_Machine.Margin = New System.Windows.Forms.Padding(10, 3, 0, 2) Me.Status_Machine.Name = "Status_Machine" - Me.Status_Machine.Size = New System.Drawing.Size(140, 20) + Me.Status_Machine.Size = New System.Drawing.Size(139, 20) Me.Status_Machine.Text = "ToolStripStatusLabel1" Me.Status_Machine.ToolTipText = "Client-Name" ' @@ -103,7 +104,7 @@ Partial Class frmStart Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) Me.ToolStripStatusLabel2.Image = CType(resources.GetObject("ToolStripStatusLabel2.Image"), System.Drawing.Image) Me.ToolStripStatusLabel2.Name = "ToolStripStatusLabel2" - Me.ToolStripStatusLabel2.Size = New System.Drawing.Size(140, 20) + Me.ToolStripStatusLabel2.Size = New System.Drawing.Size(139, 20) Me.ToolStripStatusLabel2.Text = "ToolStripStatusLabel1" Me.ToolStripStatusLabel2.ToolTipText = "Aktueller Benutzer" ' @@ -113,7 +114,7 @@ Partial Class frmStart Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Right) _ Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) Me.tslblVersion.Name = "tslblVersion" - Me.tslblVersion.Size = New System.Drawing.Size(124, 20) + Me.tslblVersion.Size = New System.Drawing.Size(123, 20) Me.tslblVersion.Text = "ToolStripStatusLabel1" Me.tslblVersion.ToolTipText = "Aktueller Benutzer" ' @@ -172,27 +173,34 @@ Partial Class frmStart ' 'ModuleToolStripMenuItem ' - Me.ModuleToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.PasswortverwaltungToolStripMenuItem, Me.GrundeinstellungenToolStripMenuItem, Me.CriticalEmailTestToolStripMenuItem}) + Me.ModuleToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LizenzverwaltungToolStripMenuItem, Me.PasswortverwaltungToolStripMenuItem, Me.GrundeinstellungenToolStripMenuItem, Me.CriticalEmailTestToolStripMenuItem}) Me.ModuleToolStripMenuItem.Name = "ModuleToolStripMenuItem" Me.ModuleToolStripMenuItem.Size = New System.Drawing.Size(75, 20) Me.ModuleToolStripMenuItem.Text = "Bearbeiten" ' + 'LizenzverwaltungToolStripMenuItem + ' + Me.LizenzverwaltungToolStripMenuItem.Name = "LizenzverwaltungToolStripMenuItem" + Me.LizenzverwaltungToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F10 + Me.LizenzverwaltungToolStripMenuItem.Size = New System.Drawing.Size(190, 22) + Me.LizenzverwaltungToolStripMenuItem.Text = "Lizenzverwaltung" + ' 'PasswortverwaltungToolStripMenuItem ' Me.PasswortverwaltungToolStripMenuItem.Name = "PasswortverwaltungToolStripMenuItem" - Me.PasswortverwaltungToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.PasswortverwaltungToolStripMenuItem.Size = New System.Drawing.Size(190, 22) Me.PasswortverwaltungToolStripMenuItem.Text = "Passwortverwaltung" ' 'GrundeinstellungenToolStripMenuItem ' Me.GrundeinstellungenToolStripMenuItem.Name = "GrundeinstellungenToolStripMenuItem" - Me.GrundeinstellungenToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.GrundeinstellungenToolStripMenuItem.Size = New System.Drawing.Size(190, 22) Me.GrundeinstellungenToolStripMenuItem.Text = "Grundeinstellungen" ' 'CriticalEmailTestToolStripMenuItem ' Me.CriticalEmailTestToolStripMenuItem.Name = "CriticalEmailTestToolStripMenuItem" - Me.CriticalEmailTestToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.CriticalEmailTestToolStripMenuItem.Size = New System.Drawing.Size(190, 22) Me.CriticalEmailTestToolStripMenuItem.Text = "Critical Email - Test" ' 'HilfeToolStripMenuItem @@ -478,6 +486,7 @@ Partial Class frmStart Friend WithEvents DateiToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents BeendenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ModuleToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents LizenzverwaltungToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents HilfeToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ÜberToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ImageList1 As System.Windows.Forms.ImageList diff --git a/ToolCollection/frmStart.resx b/ToolCollection/frmStart.resx index 3d73fd5..1c385eb 100644 --- a/ToolCollection/frmStart.resx +++ b/ToolCollection/frmStart.resx @@ -124,28 +124,28 @@ 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 - CebOM54n/eSouhlrbUcAAAAASUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAmklEQVQ4T7WPIQ5DIRAF96gcgVtwBCor + K7+jsrIOWVlZWfkl3Wl2k+YrlqQvmZAA8xbkb0kpDce25oNEeu+j1hovQUBurY1SyloBk5FzzuvfcGxr + Pki7yHgrTyVU4rIa3/WlPCIlXGTy7wt6tACJyaxMDxcguAi3aAHcVQKXpwsIl68qwmYFdjQXhIuKcF4t + OKnoLBUcsaNDRD795Ki6zCeHqwAAAABJRU5ErkJggg== @@ -159,7 +159,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAO - FAAAAk1TRnQBSQFMAgEBCQEAAWABAwFgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + FAAAAk1TRnQBSQFMAgEBCQEAAVgBAwFYAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index 6e5a41c..cd378fc 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -278,6 +278,10 @@ Public Class frmStart Cursor = Cursors.Default End Sub + Private Sub LizenzverwaltungToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LizenzverwaltungToolStripMenuItem.Click + ' Öffnet den Lizenz-Manager + frmLizenzmanager.ShowDialog() + End Sub Public Sub ClearGroupBoxes() Me.grbDI.Visible = False Me.GBNachindexierung.Visible = False From 4a7eb3fe38c07d9f91aa59305c13f9989a520065 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 22 Sep 2025 13:55:03 +0200 Subject: [PATCH 11/90] =?UTF-8?q?Verkn=C3=BCpfungen=20-=20Laden=20des=20Pr?= =?UTF-8?q?ofils=20aus=20Profileigenschaften=20heraus=20-=20Verkn=C3=BCpfu?= =?UTF-8?q?ngen=20ohne=20Profil=20laden=20nichts=20-=20frmNIVerknuepfungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmNIVerknuepfungen.vb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index db58d29..136a1ed 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -482,7 +482,7 @@ Public Class frmNIVerknuepfungen Me._selectedProfil = ClassNIProfile.aktivesProfil Try 'wenn noch kein Profil geladen wurde soll das ausgewählte auf jeden Fall geladen werden - If Me._selectedProfil Is Nothing Then + If Me._selectedProfil IsNot Nothing Then Me.LoadSelectedProfile(e.ClickedItem.Text) Me.pnlZielQuelle.Enabled = True Else ' wenn bereits ein Profil geladen war @@ -2309,6 +2309,9 @@ Public Class frmNIVerknuepfungen Else Me.lblProfil.Enabled = True End If + Else + Me._selectedProfil = Nothing + Me.pnlZielQuelle.Visible = False End If End Sub From 96425efd79ad923465bd7305279ac7661d45cece Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 22 Sep 2025 14:20:59 +0200 Subject: [PATCH 12/90] Textbox bei Select-Anweisung an die Form verankert - frmNIVerknuepfungen --- .../frmNIVerknuepfungen.Designer.vb | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index 99d7dce..cf1a450 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -753,7 +753,7 @@ Partial Class frmNIVerknuepfungen Me.grbFilterDB.Location = New System.Drawing.Point(10, 304) Me.grbFilterDB.Name = "grbFilterDB" Me.grbFilterDB.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.grbFilterDB.Size = New System.Drawing.Size(1243, 214) + Me.grbFilterDB.Size = New System.Drawing.Size(1243, 220) Me.grbFilterDB.TabIndex = 23 Me.grbFilterDB.TabStop = False Me.grbFilterDB.Text = " Einschränkung der Datenbankansicht zum Auslesen des windream-Indexes " @@ -868,7 +868,7 @@ Partial Class frmNIVerknuepfungen Me.txtSelectAnweisung.Name = "txtSelectAnweisung" Me.txtSelectAnweisung.RightToLeft = System.Windows.Forms.RightToLeft.No Me.txtSelectAnweisung.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.txtSelectAnweisung.Size = New System.Drawing.Size(865, 175) + Me.txtSelectAnweisung.Size = New System.Drawing.Size(865, 181) Me.txtSelectAnweisung.TabIndex = 28 ' 'Label5 @@ -939,7 +939,7 @@ Partial Class frmNIVerknuepfungen Me.tabctrlbottom.Location = New System.Drawing.Point(0, 0) Me.tabctrlbottom.Name = "tabctrlbottom" Me.tabctrlbottom.SelectedIndex = 0 - Me.tabctrlbottom.Size = New System.Drawing.Size(1265, 222) + Me.tabctrlbottom.Size = New System.Drawing.Size(1265, 226) Me.tabctrlbottom.TabIndex = 41 Me.tabctrlbottom.Visible = False ' @@ -958,7 +958,7 @@ Partial Class frmNIVerknuepfungen Me.TabPage6.Location = New System.Drawing.Point(4, 22) Me.TabPage6.Name = "TabPage6" Me.TabPage6.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage6.Size = New System.Drawing.Size(1257, 196) + Me.TabPage6.Size = New System.Drawing.Size(1257, 200) Me.TabPage6.TabIndex = 3 Me.TabPage6.Text = "Überprüfung deskriptiver Index" Me.TabPage6.UseVisualStyleBackColor = True @@ -1047,7 +1047,7 @@ Partial Class frmNIVerknuepfungen Me.Label29.AutoSize = True Me.Label29.Font = New System.Drawing.Font("Segoe UI", 8.25!) Me.Label29.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label29.Location = New System.Drawing.Point(8, 3) + Me.Label29.Location = New System.Drawing.Point(8, 5) Me.Label29.Name = "Label29" Me.Label29.RightToLeft = System.Windows.Forms.RightToLeft.No Me.Label29.Size = New System.Drawing.Size(374, 13) @@ -1075,11 +1075,12 @@ Partial Class frmNIVerknuepfungen Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.txtCheckIndexSQL.BackColor = System.Drawing.Color.LemonChiffon Me.txtCheckIndexSQL.Font = New System.Drawing.Font("Segoe UI", 8.25!) - Me.txtCheckIndexSQL.Location = New System.Drawing.Point(9, 22) + Me.txtCheckIndexSQL.Location = New System.Drawing.Point(9, 21) Me.txtCheckIndexSQL.Multiline = True Me.txtCheckIndexSQL.Name = "txtCheckIndexSQL" Me.txtCheckIndexSQL.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.txtCheckIndexSQL.Size = New System.Drawing.Size(850, 245) + Me.txtCheckIndexSQL.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.txtCheckIndexSQL.Size = New System.Drawing.Size(868, 174) Me.txtCheckIndexSQL.TabIndex = 30 ' 'cmbSpalten_indexSQL @@ -1305,7 +1306,7 @@ Partial Class frmNIVerknuepfungen Me.pnlfulltext.Enabled = False Me.pnlfulltext.Location = New System.Drawing.Point(503, 291) Me.pnlfulltext.Name = "pnlfulltext" - Me.pnlfulltext.Size = New System.Drawing.Size(313, 220) + Me.pnlfulltext.Size = New System.Drawing.Size(313, 226) Me.pnlfulltext.TabIndex = 47 Me.pnlfulltext.Visible = False ' @@ -1488,7 +1489,7 @@ Partial Class frmNIVerknuepfungen Me.RichTextBox_RegEx.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.RichTextBox_RegEx.Location = New System.Drawing.Point(10, 88) Me.RichTextBox_RegEx.Name = "RichTextBox_RegEx" - Me.RichTextBox_RegEx.Size = New System.Drawing.Size(60, 122) + Me.RichTextBox_RegEx.Size = New System.Drawing.Size(60, 128) Me.RichTextBox_RegEx.TabIndex = 24 Me.RichTextBox_RegEx.Text = "" ' @@ -1864,7 +1865,7 @@ Partial Class frmNIVerknuepfungen Me.pnlZielQuelle.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlZielQuelle.Location = New System.Drawing.Point(0, 0) Me.pnlZielQuelle.Name = "pnlZielQuelle" - Me.pnlZielQuelle.Size = New System.Drawing.Size(1265, 521) + Me.pnlZielQuelle.Size = New System.Drawing.Size(1265, 527) Me.pnlZielQuelle.TabIndex = 50 ' 'rbFunctionsTb @@ -1948,15 +1949,15 @@ Partial Class frmNIVerknuepfungen 'SplitContainer1.Panel2 ' Me.SplitContainer1.Panel2.Controls.Add(Me.tabctrlbottom) - Me.SplitContainer1.Size = New System.Drawing.Size(1265, 747) - Me.SplitContainer1.SplitterDistance = 521 + Me.SplitContainer1.Size = New System.Drawing.Size(1265, 757) + Me.SplitContainer1.SplitterDistance = 527 Me.SplitContainer1.TabIndex = 51 ' 'frmNIVerknuepfungen ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1265, 769) + Me.ClientSize = New System.Drawing.Size(1265, 779) Me.Controls.Add(Me.SplitContainer1) Me.Controls.Add(Me.StatusStrip1) Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) From ae99271e9dd19c137c991746ebb5709a3337d2bf Mon Sep 17 00:00:00 2001 From: OlgunR Date: Tue, 23 Sep 2025 10:45:00 +0200 Subject: [PATCH 13/90] =?UTF-8?q?Aktualisieren=20der=20Profileigenschaften?= =?UTF-8?q?=20nach=20Erstellen/L=C3=B6schen=20von=20Profilen=20-=20frmDIPr?= =?UTF-8?q?ofileigenschaften,=20frmDIProfilHinzufuegen,=20frmNIProfileigen?= =?UTF-8?q?schaften,=20frmNIProfilHinzufuegen;=20Entfernen=20des=20Login?= =?UTF-8?q?=20Dialogs=20-=20frmLogin=5FDI,=20frmLogin=5F=20NI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/ToolCollection.vbproj | 18 -- ToolCollection/frmDIProfilEigenschaften.vb | 19 +- ToolCollection/frmDIProfilHinzufuegen.vb | 1 - ToolCollection/frmLogin_DI.Designer.vb | 95 ---------- ToolCollection/frmLogin_DI.resx | 120 ------------- ToolCollection/frmLogin_DI.vb | 33 ---- ToolCollection/frmLogin_NI.Designer.vb | 94 ---------- ToolCollection/frmLogin_NI.resx | 120 ------------- ToolCollection/frmLogin_NI.vb | 34 ---- .../frmNIProfileigenschaften.Designer.vb | 163 ++++++++++-------- ToolCollection/frmNIProfileigenschaften.resx | 24 +-- ToolCollection/frmNIProfileigenschaften.vb | 25 ++- ToolCollection/frmNIProfilhinzufuegen.vb | 1 - 13 files changed, 132 insertions(+), 615 deletions(-) delete mode 100644 ToolCollection/frmLogin_DI.Designer.vb delete mode 100644 ToolCollection/frmLogin_DI.resx delete mode 100644 ToolCollection/frmLogin_DI.vb delete mode 100644 ToolCollection/frmLogin_NI.Designer.vb delete mode 100644 ToolCollection/frmLogin_NI.resx delete mode 100644 ToolCollection/frmLogin_NI.vb diff --git a/ToolCollection/ToolCollection.vbproj b/ToolCollection/ToolCollection.vbproj index 6994a3d..0e203b8 100644 --- a/ToolCollection/ToolCollection.vbproj +++ b/ToolCollection/ToolCollection.vbproj @@ -334,18 +334,6 @@ Form - - frmLogin_DI.vb - - - Form - - - frmLogin_NI.vb - - - Form - frmMIProfileigenschaften.vb @@ -507,12 +495,6 @@ frmDIRegelverwaltung.vb - - frmLogin_DI.vb - - - frmLogin_NI.vb - frmMIProfileigenschaften.vb diff --git a/ToolCollection/frmDIProfilEigenschaften.vb b/ToolCollection/frmDIProfilEigenschaften.vb index f990b3f..0cf42fd 100644 --- a/ToolCollection/frmDIProfilEigenschaften.vb +++ b/ToolCollection/frmDIProfilEigenschaften.vb @@ -57,11 +57,11 @@ Public Class frmDIProfilEigenschaften End Sub Private Sub LoadProfilesInCombobox() 'Schreibt die Profile in die Combobox in der Toolbar. - Try - ClassDIProfile.Init() - Me.cmbProfilauswahl.DropDownItems.Clear() + 'Try + ClassDIProfile.Init() - If ClassDIProfile.Profile IsNot Nothing Then + Me.cmbProfilauswahl.DropDownItems.Clear() + If ClassDIProfile.Profile IsNot Nothing Then Dim anz As Integer = 0 For Each item As ClassDIProfil In ClassDIProfile.Profile Me.cmbProfilauswahl.DropDownItems.Add(item.Profilname) @@ -73,9 +73,9 @@ Public Class frmDIProfilEigenschaften Prof_Anzahl = anz Me.tslblAnzahl.Text = "Anzahl Profile: " & anz End If - Catch ex As Exception - MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der Profile in Auswahlliste:") - End Try + 'Catch ex As Exception + ' MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der Profile in Auswahlliste:") + 'End Try End Sub Sub Lade_Profil(ByVal profilname As String) ' das ausgewählte Profil in selectedProfile laden @@ -257,7 +257,8 @@ Public Class frmDIProfilEigenschaften Private Sub btnHinzufügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHinzufügen.Click ' das Formular zum Erstellen eines neuen Profil öffnen - frmLogin_DI.ShowDialog() + frmDIProfilHinzufuegen.ShowDialog() + 'frmLogin_DI.ShowDialog() 'frmDIProfilHinzufuegen.ShowDialog() ' wenn das Formular geschlossen wurde, werden die Profile neu in die Combobox geladen Me.LoadProfilesInCombobox() @@ -282,6 +283,8 @@ Public Class frmDIProfilEigenschaften Me.btnLöschen.Enabled = False ' kein Profil als selektiert wählen Me.selectedProfile = Nothing + + Me.lblProfil.Text = "Kein Profil gewählt" ' die Profile neu in die Combobox laden Me.LoadProfilesInCombobox() End If diff --git a/ToolCollection/frmDIProfilHinzufuegen.vb b/ToolCollection/frmDIProfilHinzufuegen.vb index bae0bba..fe029e3 100644 --- a/ToolCollection/frmDIProfilHinzufuegen.vb +++ b/ToolCollection/frmDIProfilHinzufuegen.vb @@ -31,7 +31,6 @@ Me.chkQuellverzeichnisLoeschen.Checked = False Me.ObjekttypenEintragen() - frmLogin_DI.Close() Label6.Visible = False End Sub Private Sub btnQuellordner_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnQuellordner.Click diff --git a/ToolCollection/frmLogin_DI.Designer.vb b/ToolCollection/frmLogin_DI.Designer.vb deleted file mode 100644 index e92d5ce..0000000 --- a/ToolCollection/frmLogin_DI.Designer.vb +++ /dev/null @@ -1,95 +0,0 @@ - _ -Partial Class frmLogin_DI - Inherits System.Windows.Forms.Form - - 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. - _ - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Wird vom Windows Form-Designer benötigt. - Private components As System.ComponentModel.IContainer - - 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. - 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. - 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. - _ - Private Sub InitializeComponent() - Me.txtPW = New System.Windows.Forms.TextBox() - Me.Label1 = New System.Windows.Forms.Label() - Me.btnAbbruch = New System.Windows.Forms.Button() - Me.btnok = New System.Windows.Forms.Button() - Me.SuspendLayout() - ' - 'txtPW - ' - Me.txtPW.Location = New System.Drawing.Point(12, 23) - Me.txtPW.Name = "txtPW" - Me.txtPW.Size = New System.Drawing.Size(248, 22) - Me.txtPW.TabIndex = 7 - Me.txtPW.UseSystemPasswordChar = True - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(9, 7) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(56, 13) - Me.Label1.TabIndex = 6 - Me.Label1.Text = "Passwort:" - ' - 'btnAbbruch - ' - Me.btnAbbruch.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnAbbruch.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.btnAbbruch.Location = New System.Drawing.Point(105, 56) - Me.btnAbbruch.Name = "btnAbbruch" - Me.btnAbbruch.Size = New System.Drawing.Size(75, 23) - Me.btnAbbruch.TabIndex = 5 - Me.btnAbbruch.Text = "Abbruch" - Me.btnAbbruch.UseVisualStyleBackColor = True - ' - 'btnok - ' - Me.btnok.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnok.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.btnok.Location = New System.Drawing.Point(186, 56) - Me.btnok.Name = "btnok" - Me.btnok.Size = New System.Drawing.Size(75, 23) - Me.btnok.TabIndex = 4 - Me.btnok.Text = "Weiter" - Me.btnok.UseVisualStyleBackColor = True - ' - 'frmLogin_DI - ' - Me.AcceptButton = Me.btnok - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.CancelButton = Me.btnok - Me.ClientSize = New System.Drawing.Size(285, 91) - Me.Controls.Add(Me.txtPW) - Me.Controls.Add(Me.Label1) - Me.Controls.Add(Me.btnAbbruch) - Me.Controls.Add(Me.btnok) - Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow - Me.Name = "frmLogin_DI" - Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen - Me.Text = "Passwort eingeben" - Me.TopMost = True - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - Friend WithEvents txtPW As System.Windows.Forms.TextBox - Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents btnAbbruch As System.Windows.Forms.Button - Friend WithEvents btnok As System.Windows.Forms.Button -End Class diff --git a/ToolCollection/frmLogin_DI.resx b/ToolCollection/frmLogin_DI.resx deleted file mode 100644 index 1af7de1..0000000 --- a/ToolCollection/frmLogin_DI.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ToolCollection/frmLogin_DI.vb b/ToolCollection/frmLogin_DI.vb deleted file mode 100644 index 4e7fdc4..0000000 --- a/ToolCollection/frmLogin_DI.vb +++ /dev/null @@ -1,33 +0,0 @@ -Public Class frmLogin_DI - Private Sub btnok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnok.Click - If Me.txtPW.Text <> "" Then - If Me.txtPW.Text = My.Settings.vPW_admin Then - Me.Hide() - frmDIProfilHinzufuegen.Show() - Cursor = Cursors.Default - Else - MsgBox("Das eingegebene Passwort stimmt nicht überein!", MsgBoxStyle.Critical, "Falsche Eingabe:") - Me.txtPW.Text = "" - Me.txtPW.Focus() - End If - End If - End Sub - Private Sub frmLogin_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load - Me.txtPW.Text = "" - End Sub - - Private Sub btnAbbruch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbbruch.Click - Me.Close() - End Sub - - Private Sub txtPW_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPW.GotFocus - Me.txtPW.BackColor = Color.Lime - End Sub - - Private Sub txtPW_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPW.LostFocus - Me.txtPW.BackColor = Color.White - End Sub - Private Sub frmLogin_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown - Me.txtPW.Focus() - End Sub -End Class \ No newline at end of file diff --git a/ToolCollection/frmLogin_NI.Designer.vb b/ToolCollection/frmLogin_NI.Designer.vb deleted file mode 100644 index e39d3a2..0000000 --- a/ToolCollection/frmLogin_NI.Designer.vb +++ /dev/null @@ -1,94 +0,0 @@ - _ -Partial Class frmLogin_NI - Inherits System.Windows.Forms.Form - - 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. - _ - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Wird vom Windows Form-Designer benötigt. - Private components As System.ComponentModel.IContainer - - 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. - 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. - 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. - _ - Private Sub InitializeComponent() - Me.btnok = New System.Windows.Forms.Button() - Me.btnAbbruch = New System.Windows.Forms.Button() - Me.Label1 = New System.Windows.Forms.Label() - Me.txtPW = New System.Windows.Forms.TextBox() - Me.SuspendLayout() - ' - 'btnok - ' - Me.btnok.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnok.Location = New System.Drawing.Point(188, 74) - Me.btnok.Name = "btnok" - Me.btnok.Size = New System.Drawing.Size(75, 23) - Me.btnok.TabIndex = 0 - Me.btnok.Text = "Weiter" - Me.btnok.UseVisualStyleBackColor = True - ' - 'btnAbbruch - ' - Me.btnAbbruch.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnAbbruch.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.btnAbbruch.Location = New System.Drawing.Point(107, 74) - Me.btnAbbruch.Name = "btnAbbruch" - Me.btnAbbruch.Size = New System.Drawing.Size(75, 23) - Me.btnAbbruch.TabIndex = 1 - Me.btnAbbruch.Text = "Abbruch" - Me.btnAbbruch.UseVisualStyleBackColor = True - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(12, 9) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(56, 13) - Me.Label1.TabIndex = 2 - Me.Label1.Text = "Passwort:" - ' - 'txtPW - ' - Me.txtPW.Location = New System.Drawing.Point(15, 25) - Me.txtPW.Name = "txtPW" - Me.txtPW.Size = New System.Drawing.Size(248, 22) - Me.txtPW.TabIndex = 3 - Me.txtPW.UseSystemPasswordChar = True - ' - 'frmLogin - ' - Me.AcceptButton = Me.btnok - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.CancelButton = Me.btnAbbruch - Me.ClientSize = New System.Drawing.Size(285, 109) - Me.Controls.Add(Me.txtPW) - Me.Controls.Add(Me.Label1) - Me.Controls.Add(Me.btnAbbruch) - Me.Controls.Add(Me.btnok) - Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow - Me.Name = "frmLogin" - Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen - Me.Text = "Passwort notwendig:" - Me.TopMost = True - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - Friend WithEvents btnok As System.Windows.Forms.Button - Friend WithEvents btnAbbruch As System.Windows.Forms.Button - Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents txtPW As System.Windows.Forms.TextBox -End Class diff --git a/ToolCollection/frmLogin_NI.resx b/ToolCollection/frmLogin_NI.resx deleted file mode 100644 index 1af7de1..0000000 --- a/ToolCollection/frmLogin_NI.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ToolCollection/frmLogin_NI.vb b/ToolCollection/frmLogin_NI.vb deleted file mode 100644 index a91af74..0000000 --- a/ToolCollection/frmLogin_NI.vb +++ /dev/null @@ -1,34 +0,0 @@ -Public Class frmLogin_NI - - Private Sub btnok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnok.Click - If Me.txtPW.Text <> "" Then - If Me.txtPW.Text = My.Settings.vPW_admin Then - Me.Hide() - frmNIProfilhinzufuegen.ShowDialog() - Cursor = Cursors.Default - Else - MsgBox("Das eingegebene Passwort stimmt nicht überein!", MsgBoxStyle.Critical, "Falsche Eingabe:") - Me.txtPW.Text = "" - Me.txtPW.Focus() - End If - End If - End Sub - Private Sub frmLogin_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load - Me.txtPW.Text = "" - End Sub - - Private Sub btnAbbruch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbbruch.Click - Me.Close() - End Sub - - Private Sub txtPW_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPW.GotFocus - Me.txtPW.BackColor = Color.Lime - End Sub - - Private Sub txtPW_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPW.LostFocus - Me.txtPW.BackColor = Color.White - End Sub - Private Sub frmLogin_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown - Me.txtPW.Focus() - End Sub -End Class \ No newline at end of file diff --git a/ToolCollection/frmNIProfileigenschaften.Designer.vb b/ToolCollection/frmNIProfileigenschaften.Designer.vb index 0d6db11..9d96749 100644 --- a/ToolCollection/frmNIProfileigenschaften.Designer.vb +++ b/ToolCollection/frmNIProfileigenschaften.Designer.vb @@ -24,15 +24,15 @@ Partial Class frmNIProfileigenschaften Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmNIProfileigenschaften)) - Dim TreeNode1 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 1") - Dim TreeNode2 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 2") - Dim TreeNode3 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 3") - Dim TreeNode4 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Parent", New System.Windows.Forms.TreeNode() {TreeNode1, TreeNode2, TreeNode3}) - Dim TreeNode5 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-1", New System.Windows.Forms.TreeNode() {TreeNode4}) - Dim TreeNode6 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-2", New System.Windows.Forms.TreeNode() {TreeNode5}) - Dim TreeNode7 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-3", New System.Windows.Forms.TreeNode() {TreeNode6}) - Dim TreeNode8 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-4", New System.Windows.Forms.TreeNode() {TreeNode7}) - Dim TreeNode9 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Windream-/W-Laufwerk", New System.Windows.Forms.TreeNode() {TreeNode8}) + Dim TreeNode10 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 1") + Dim TreeNode11 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 2") + Dim TreeNode12 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 3") + Dim TreeNode13 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Parent", New System.Windows.Forms.TreeNode() {TreeNode10, TreeNode11, TreeNode12}) + Dim TreeNode14 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-1", New System.Windows.Forms.TreeNode() {TreeNode13}) + Dim TreeNode15 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-2", New System.Windows.Forms.TreeNode() {TreeNode14}) + Dim TreeNode16 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-3", New System.Windows.Forms.TreeNode() {TreeNode15}) + Dim TreeNode17 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-4", New System.Windows.Forms.TreeNode() {TreeNode16}) + Dim TreeNode18 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Windream-/W-Laufwerk", New System.Windows.Forms.TreeNode() {TreeNode17}) Me.StatusStrip1 = New System.Windows.Forms.StatusStrip() Me.btnSpeichern = New System.Windows.Forms.ToolStripDropDownButton() Me.btnLöschen = New System.Windows.Forms.ToolStripDropDownButton() @@ -148,6 +148,7 @@ Partial Class frmNIProfileigenschaften Me.Label16 = New System.Windows.Forms.Label() Me.txtObjekttyp = New System.Windows.Forms.TextBox() Me.btnopenSuche = New System.Windows.Forms.Button() + Me.pnlProfileigenschaften = New System.Windows.Forms.Panel() Me.StatusStrip1.SuspendLayout() Me.gbxDatenbank.SuspendLayout() Me.gbxDatei.SuspendLayout() @@ -165,6 +166,7 @@ Partial Class frmNIProfileigenschaften Me.GroupBox5.SuspendLayout() Me.GroupBox3.SuspendLayout() Me.TabPage4.SuspendLayout() + Me.pnlProfileigenschaften.SuspendLayout() Me.SuspendLayout() ' 'StatusStrip1 @@ -176,7 +178,7 @@ Partial Class frmNIProfileigenschaften Me.StatusStrip1.Name = "StatusStrip1" Me.StatusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode Me.StatusStrip1.ShowItemToolTips = True - Me.StatusStrip1.Size = New System.Drawing.Size(920, 22) + Me.StatusStrip1.Size = New System.Drawing.Size(991, 22) Me.StatusStrip1.SizingGrip = False Me.StatusStrip1.TabIndex = 23 Me.StatusStrip1.Text = "StatusStrip1" @@ -524,7 +526,7 @@ Partial Class frmNIProfileigenschaften Me.lblDateiendung.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lblDateiendung.Location = New System.Drawing.Point(130, 25) Me.lblDateiendung.Name = "lblDateiendung" - Me.lblDateiendung.Size = New System.Drawing.Size(114, 13) + Me.lblDateiendung.Size = New System.Drawing.Size(113, 13) Me.lblDateiendung.TabIndex = 3 Me.lblDateiendung.Text = "Dateiendungen/Typ*" ' @@ -555,11 +557,12 @@ Partial Class frmNIProfileigenschaften ' 'btnVerknüpfungen ' - Me.btnVerknüpfungen.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.btnVerknüpfungen.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnVerknüpfungen.Location = New System.Drawing.Point(754, 36) + Me.btnVerknüpfungen.Location = New System.Drawing.Point(746, 26) Me.btnVerknüpfungen.Name = "btnVerknüpfungen" - Me.btnVerknüpfungen.Size = New System.Drawing.Size(150, 23) + Me.btnVerknüpfungen.Size = New System.Drawing.Size(171, 23) Me.btnVerknüpfungen.TabIndex = 49 Me.btnVerknüpfungen.Text = "Verknüpfungen verwalten ..." Me.btnVerknüpfungen.UseVisualStyleBackColor = True @@ -569,7 +572,7 @@ Partial Class frmNIProfileigenschaften ' Me.txtWindreamsuche.BackColor = System.Drawing.SystemColors.Info Me.txtWindreamsuche.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.txtWindreamsuche.Location = New System.Drawing.Point(18, 126) + Me.txtWindreamsuche.Location = New System.Drawing.Point(7, 118) Me.txtWindreamsuche.Name = "txtWindreamsuche" Me.txtWindreamsuche.Size = New System.Drawing.Size(451, 22) Me.txtWindreamsuche.TabIndex = 6 @@ -577,7 +580,7 @@ Partial Class frmNIProfileigenschaften 'btnWindreamsuche ' Me.btnWindreamsuche.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnWindreamsuche.Location = New System.Drawing.Point(475, 125) + Me.btnWindreamsuche.Location = New System.Drawing.Point(464, 117) Me.btnWindreamsuche.Name = "btnWindreamsuche" Me.btnWindreamsuche.Size = New System.Drawing.Size(24, 21) Me.btnWindreamsuche.TabIndex = 3 @@ -587,7 +590,7 @@ Partial Class frmNIProfileigenschaften 'Label2 ' Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(15, 63) + Me.Label2.Location = New System.Drawing.Point(4, 55) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(61, 13) Me.Label2.TabIndex = 37 @@ -596,7 +599,7 @@ Partial Class frmNIProfileigenschaften 'Label1 ' Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(15, 22) + Me.Label1.Location = New System.Drawing.Point(4, 14) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(70, 13) Me.Label1.TabIndex = 36 @@ -604,7 +607,7 @@ Partial Class frmNIProfileigenschaften ' 'txtProfilname ' - Me.txtProfilname.Location = New System.Drawing.Point(18, 38) + Me.txtProfilname.Location = New System.Drawing.Point(7, 30) Me.txtProfilname.Name = "txtProfilname" Me.txtProfilname.Size = New System.Drawing.Size(396, 22) Me.txtProfilname.TabIndex = 35 @@ -613,7 +616,7 @@ Partial Class frmNIProfileigenschaften ' Me.chkbxAktiv.AutoSize = True Me.chkbxAktiv.BackColor = System.Drawing.Color.Transparent - Me.chkbxAktiv.Location = New System.Drawing.Point(429, 40) + Me.chkbxAktiv.Location = New System.Drawing.Point(418, 32) Me.chkbxAktiv.Name = "chkbxAktiv" Me.chkbxAktiv.Size = New System.Drawing.Size(119, 17) Me.chkbxAktiv.TabIndex = 52 @@ -671,7 +674,7 @@ Partial Class frmNIProfileigenschaften 'Label7 ' Me.Label7.AutoSize = True - Me.Label7.Location = New System.Drawing.Point(426, 63) + Me.Label7.Location = New System.Drawing.Point(415, 55) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(98, 13) Me.Label7.TabIndex = 73 @@ -681,7 +684,7 @@ Partial Class frmNIProfileigenschaften ' Me.txtlastRun.BackColor = System.Drawing.Color.WhiteSmoke Me.txtlastRun.Enabled = False - Me.txtlastRun.Location = New System.Drawing.Point(429, 79) + Me.txtlastRun.Location = New System.Drawing.Point(418, 71) Me.txtlastRun.Name = "txtlastRun" Me.txtlastRun.Size = New System.Drawing.Size(160, 22) Me.txtlastRun.TabIndex = 74 @@ -733,7 +736,7 @@ Partial Class frmNIProfileigenschaften Me.lblSave.AutoSize = True Me.lblSave.BackColor = System.Drawing.Color.Yellow Me.lblSave.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblSave.Location = New System.Drawing.Point(643, 79) + Me.lblSave.Location = New System.Drawing.Point(656, 71) Me.lblSave.Name = "lblSave" Me.lblSave.Size = New System.Drawing.Size(261, 17) Me.lblSave.TabIndex = 76 @@ -765,10 +768,10 @@ Partial Class frmNIProfileigenschaften Me.TabControl1.Controls.Add(Me.TabPage2) Me.TabControl1.Controls.Add(Me.TabPage3) Me.TabControl1.Controls.Add(Me.TabPage4) - Me.TabControl1.Location = New System.Drawing.Point(18, 159) + Me.TabControl1.Location = New System.Drawing.Point(3, 222) Me.TabControl1.Name = "TabControl1" Me.TabControl1.SelectedIndex = 0 - Me.TabControl1.Size = New System.Drawing.Size(890, 442) + Me.TabControl1.Size = New System.Drawing.Size(985, 481) Me.TabControl1.TabIndex = 78 ' 'TabPage1 @@ -781,7 +784,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(882, 416) + Me.TabPage1.Size = New System.Drawing.Size(977, 455) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "Typ und Quelle" Me.TabPage1.UseVisualStyleBackColor = True @@ -802,7 +805,7 @@ Partial Class frmNIProfileigenschaften Me.grbxLDAP.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.grbxLDAP.Location = New System.Drawing.Point(407, 210) Me.grbxLDAP.Name = "grbxLDAP" - Me.grbxLDAP.Size = New System.Drawing.Size(413, 176) + Me.grbxLDAP.Size = New System.Drawing.Size(508, 215) Me.grbxLDAP.TabIndex = 79 Me.grbxLDAP.TabStop = False Me.grbxLDAP.Text = "Indexierung gegen Active Directory:" @@ -904,7 +907,7 @@ Partial Class frmNIProfileigenschaften Me.grbxVolltext.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.grbxVolltext.Location = New System.Drawing.Point(568, 18) Me.grbxVolltext.Name = "grbxVolltext" - Me.grbxVolltext.Size = New System.Drawing.Size(293, 162) + Me.grbxVolltext.Size = New System.Drawing.Size(392, 201) Me.grbxVolltext.TabIndex = 78 Me.grbxVolltext.TabStop = False Me.grbxVolltext.Text = "Indexierung gegen den Volltext" @@ -957,7 +960,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage2.Size = New System.Drawing.Size(882, 416) + Me.TabPage2.Size = New System.Drawing.Size(970, 556) Me.TabPage2.TabIndex = 1 Me.TabPage2.Text = "Kennzeichnung und Active Directory" Me.TabPage2.UseVisualStyleBackColor = True @@ -1251,7 +1254,7 @@ Partial Class frmNIProfileigenschaften Me.Label4.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label4.Location = New System.Drawing.Point(6, 18) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(639, 15) + Me.Label4.Size = New System.Drawing.Size(638, 15) Me.Label4.TabIndex = 71 Me.Label4.Text = "Wählen Sie hier einen Ordner in windream, in welchen die Datei, nach erfolgreiche" & "r Indexierung verschoben werden soll." @@ -1290,7 +1293,7 @@ Partial Class frmNIProfileigenschaften Me.Label24.AutoSize = True Me.Label24.Location = New System.Drawing.Point(461, 56) Me.Label24.Name = "Label24" - Me.Label24.Size = New System.Drawing.Size(121, 13) + Me.Label24.Size = New System.Drawing.Size(122, 13) Me.Label24.TabIndex = 63 Me.Label24.Text = "Beispiel Ordnerebene:" ' @@ -1320,31 +1323,31 @@ Partial Class frmNIProfileigenschaften Me.TreeViewOrdnerVererbung.ImageList = Me.ImageList1 Me.TreeViewOrdnerVererbung.Location = New System.Drawing.Point(464, 72) Me.TreeViewOrdnerVererbung.Name = "TreeViewOrdnerVererbung" - TreeNode1.ImageKey = "page.png" - TreeNode1.Name = "Knoten3" - TreeNode1.SelectedImageIndex = 1 - TreeNode1.Text = "Datei 1" - TreeNode2.ImageKey = "page.png" - TreeNode2.Name = "Knoten4" - TreeNode2.SelectedImageIndex = 1 - TreeNode2.Text = "Datei 2" - TreeNode3.ImageKey = "page.png" - TreeNode3.Name = "Knoten5" - TreeNode3.SelectedImageIndex = 1 - TreeNode3.Text = "Datei 3" - TreeNode4.Name = "Knoten4" - TreeNode4.Text = "Parent" - TreeNode5.Name = "Knoten3" - TreeNode5.Text = "-1" - TreeNode6.Name = "Knoten2" - TreeNode6.Text = "-2" - TreeNode7.Name = "Knoten5" - TreeNode7.Text = "-3" - TreeNode8.Name = "Knoten1" - TreeNode8.Text = "-4" - TreeNode9.Name = "Knoten0" - TreeNode9.Text = "Windream-/W-Laufwerk" - Me.TreeViewOrdnerVererbung.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode9}) + TreeNode10.ImageKey = "page.png" + TreeNode10.Name = "Knoten3" + TreeNode10.SelectedImageIndex = 1 + TreeNode10.Text = "Datei 1" + TreeNode11.ImageKey = "page.png" + TreeNode11.Name = "Knoten4" + TreeNode11.SelectedImageIndex = 1 + TreeNode11.Text = "Datei 2" + TreeNode12.ImageKey = "page.png" + TreeNode12.Name = "Knoten5" + TreeNode12.SelectedImageIndex = 1 + TreeNode12.Text = "Datei 3" + TreeNode13.Name = "Knoten4" + TreeNode13.Text = "Parent" + TreeNode14.Name = "Knoten3" + TreeNode14.Text = "-1" + TreeNode15.Name = "Knoten2" + TreeNode15.Text = "-2" + TreeNode16.Name = "Knoten5" + TreeNode16.Text = "-3" + TreeNode17.Name = "Knoten1" + TreeNode17.Text = "-4" + TreeNode18.Name = "Knoten0" + TreeNode18.Text = "Windream-/W-Laufwerk" + Me.TreeViewOrdnerVererbung.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode18}) Me.TreeViewOrdnerVererbung.SelectedImageIndex = 0 Me.TreeViewOrdnerVererbung.Size = New System.Drawing.Size(220, 157) Me.TreeViewOrdnerVererbung.TabIndex = 59 @@ -1401,7 +1404,7 @@ Partial Class frmNIProfileigenschaften ' Me.Label16.AutoSize = True Me.Label16.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label16.Location = New System.Drawing.Point(15, 110) + Me.Label16.Location = New System.Drawing.Point(4, 102) Me.Label16.Name = "Label16" Me.Label16.Size = New System.Drawing.Size(174, 13) Me.Label16.TabIndex = 79 @@ -1409,7 +1412,7 @@ Partial Class frmNIProfileigenschaften ' 'txtObjekttyp ' - Me.txtObjekttyp.Location = New System.Drawing.Point(18, 79) + Me.txtObjekttyp.Location = New System.Drawing.Point(7, 71) Me.txtObjekttyp.Name = "txtObjekttyp" Me.txtObjekttyp.ReadOnly = True Me.txtObjekttyp.Size = New System.Drawing.Size(396, 22) @@ -1421,7 +1424,7 @@ Partial Class frmNIProfileigenschaften Me.btnopenSuche.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnopenSuche.Image = Global.ToolCollection.My.Resources.Resources.plugin Me.btnopenSuche.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnopenSuche.Location = New System.Drawing.Point(505, 117) + Me.btnopenSuche.Location = New System.Drawing.Point(494, 109) Me.btnopenSuche.Name = "btnopenSuche" Me.btnopenSuche.Padding = New System.Windows.Forms.Padding(0, 0, 2, 2) Me.btnopenSuche.Size = New System.Drawing.Size(68, 36) @@ -1430,26 +1433,35 @@ Partial Class frmNIProfileigenschaften Me.btnopenSuche.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.btnopenSuche.UseVisualStyleBackColor = True ' + 'pnlProfileigenschaften + ' + Me.pnlProfileigenschaften.Controls.Add(Me.TabControl1) + Me.pnlProfileigenschaften.Controls.Add(Me.txtObjekttyp) + Me.pnlProfileigenschaften.Controls.Add(Me.lblSave) + Me.pnlProfileigenschaften.Controls.Add(Me.btnopenSuche) + Me.pnlProfileigenschaften.Controls.Add(Me.btnVerknüpfungen) + Me.pnlProfileigenschaften.Controls.Add(Me.Label16) + Me.pnlProfileigenschaften.Controls.Add(Me.txtProfilname) + Me.pnlProfileigenschaften.Controls.Add(Me.btnWindreamsuche) + Me.pnlProfileigenschaften.Controls.Add(Me.Label2) + Me.pnlProfileigenschaften.Controls.Add(Me.txtWindreamsuche) + Me.pnlProfileigenschaften.Controls.Add(Me.Label1) + Me.pnlProfileigenschaften.Controls.Add(Me.txtlastRun) + Me.pnlProfileigenschaften.Controls.Add(Me.chkbxAktiv) + Me.pnlProfileigenschaften.Controls.Add(Me.Label7) + Me.pnlProfileigenschaften.Dock = System.Windows.Forms.DockStyle.Fill + Me.pnlProfileigenschaften.Location = New System.Drawing.Point(0, 22) + Me.pnlProfileigenschaften.Name = "pnlProfileigenschaften" + Me.pnlProfileigenschaften.Size = New System.Drawing.Size(991, 706) + Me.pnlProfileigenschaften.TabIndex = 81 + ' 'frmNIProfileigenschaften ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(920, 603) - Me.Controls.Add(Me.txtObjekttyp) - Me.Controls.Add(Me.btnopenSuche) - Me.Controls.Add(Me.Label16) - Me.Controls.Add(Me.btnWindreamsuche) - Me.Controls.Add(Me.txtWindreamsuche) - Me.Controls.Add(Me.TabControl1) - Me.Controls.Add(Me.lblSave) - Me.Controls.Add(Me.txtlastRun) - Me.Controls.Add(Me.Label7) - Me.Controls.Add(Me.chkbxAktiv) + Me.ClientSize = New System.Drawing.Size(991, 728) + Me.Controls.Add(Me.pnlProfileigenschaften) Me.Controls.Add(Me.StatusStrip1) - Me.Controls.Add(Me.btnVerknüpfungen) - Me.Controls.Add(Me.txtProfilname) - Me.Controls.Add(Me.Label1) - Me.Controls.Add(Me.Label2) Me.DataBindings.Add(New System.Windows.Forms.Binding("Location", Global.ToolCollection.My.MySettings.Default, "frmNIProfileigenschaften", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) @@ -1488,6 +1500,8 @@ Partial Class frmNIProfileigenschaften Me.GroupBox3.PerformLayout() Me.TabPage4.ResumeLayout(False) Me.TabPage4.PerformLayout() + Me.pnlProfileigenschaften.ResumeLayout(False) + Me.pnlProfileigenschaften.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -1607,4 +1621,5 @@ Partial Class frmNIProfileigenschaften Friend WithEvents Label20 As System.Windows.Forms.Label Friend WithEvents Label25 As System.Windows.Forms.Label Friend WithEvents btnMoveRename As Button + Friend WithEvents pnlProfileigenschaften As Panel End Class diff --git a/ToolCollection/frmNIProfileigenschaften.resx b/ToolCollection/frmNIProfileigenschaften.resx index 5262658..d1e981a 100644 --- a/ToolCollection/frmNIProfileigenschaften.resx +++ b/ToolCollection/frmNIProfileigenschaften.resx @@ -130,17 +130,17 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m - dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIySURBVDhPlZJrTxNBFIaJicnG36BWiYbISkDiDaEt - C5TWBgQT6P1Cu5UC0pZe0qZQG/WDJv4SfxeIir1hpbu97Pb1TEmXbvqJD08yc2be98w5Z0YAXIvmlnhr - cK87RCZnIHhdbIBmMMzLXn+i4XCb+rGrC0ycO0Q3m4eaSA2ZNAMhvhmKoLWzh39vN77XV9cesbhOjOIn - dAk1mUFnd18zkf1bPGVHJ5YACkWw9bnVnqguWG5cGqSzXDeZUbuHH4Cv36DmC8wArZDIy74gT9nR3o8D - dC4HQzhffq1UhaWbVy8g1HiSU97HFTWTAz5/gZLOohmOgLKjvRcD8ke9dc1iI/Ei19dpBoxOdJdridtK - J3ZA5XwEjookLAC5PGRfALUlq1KdX9DEDJ0Bg57LSR6/ijyV4w0ALi+QyaK2uKxWzIJOzNBtGJLbx0YF - 0DTgcAMbTuAgRXXbUJqZG5qObiO5vLzk8aEdiQKpDAnTQJzKoQbKm05UjWb8nprWmWiLhtPDS24v2uI2 - QGOUXB5Qs5TynEm9WF0HojtovFlH6elznI6NayaXYoebp+xoh99R1iQkejo1SynPmrjSixnubPqZUrdY - gbCIC5sdZxOTOLk32jPpGdDPEhoOF9ohEdKmC9QspfzKqDXs18QU93P8sfLXLECyr+DP5BMc3zEImgGD - fpZQX1lDxTSvUrOGun36cIz7MfpAGRQzdJcqRrNQejk7JO5zYrjPHd++q4kZugvXByP/AXK7pMeJCyzg - AAAAAElFTkSuQmCC + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAItSURBVDhPnZHbThNhFEaJicnEZ1BRojEyEpB4QqBl + OBUbEEig9FymRU5CDzBpMxwa8UITn8TnAlGxtFSgM6Wd6TIFHanjjV58yfcn/1rJ3rsJaPqXlGdj1y6/ + Gz8omWaUjPgnZMGRqKgHQomSx+ewC+pwZoNaWsVMrNkk5bAsluU5zhaXOZmc+ng8Nn7/t+AnTHaHWnYH + M6VQXVqxJHpoVixHolRXE7CVpd6LLnei0D905UKwnhZqKcWsbWzD+w+Y6lZdwJkcE/VgRCyHZSorcdjY + Ro/IFIdfGAVp8GrDCGY8JRiv44apZODtO4z1NOXoHHpolsryKqib5/1oaMQoSAOCfQfQVF1YEs5i80Z1 + NQnZN7CZBXULMip6MMzRoMso9PVbsE1QTzksC5o/ZKJuQyAM3gAoaY4Ghs28U2qA/yrQfMH6qSCtgscH + UzOQXKM4PEKuq8d2nUbYGxA1f5DK3AKsKZBch3gSVuLo0zMUep187ehskFilNOMXNV+ASmweUgqa109B + GjAOexzm6dgELCxSejlB7tET9u+1WpIL2OMTNW+ASvQVJFNoHh+Fvn7jsNsh5J52CQedj43jIRdEY5yO + uDloa2fvVsu55FxwMjkllTxeKnIMbdpL3ikZh897rYV9aesQPrc+ML47JTT3KN/aH7J7o1lqGKHockvH + o+PkHX1mrqvHtu39u/eETy13jMtwg6CefK9Tyj3rtsG/std8W9i9ftOCbYL/yQ9yu6TH5dYZBAAAAABJ + RU5ErkJggg== @@ -161,7 +161,7 @@ einen Startindex erhält, der nicht in der Datenbank existiert. Diese Kennzeichn AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAK - CQAAAk1TRnQBSQFMAgEBAgEAAZgBAAGYAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAAaABAAGgAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/ToolCollection/frmNIProfileigenschaften.vb b/ToolCollection/frmNIProfileigenschaften.vb index 8b96550..d702217 100644 --- a/ToolCollection/frmNIProfileigenschaften.vb +++ b/ToolCollection/frmNIProfileigenschaften.vb @@ -142,6 +142,7 @@ Public Class frmNIProfileigenschaften ' die Profile neu in die Combobox der Toolbar laden (für den Fall das Profilname geändert wurde) Me.LoadProfilesInCombobox() + Me.pnlProfileigenschaften.Visible = False ' die Profileigenschaften auf diesem Panel ausblenden ' den Speichern-Button deaktivieren Me.btnSpeichern.Enabled = False @@ -158,6 +159,7 @@ Public Class frmNIProfileigenschaften ' wenn ein Profil selektiert ist: den originalen Profilnamen setzen If Me._selectedProfile IsNot Nothing Then Me._selectedProfile.SetBackToOriginal() + Me.pnlProfileigenschaften.Visible = False ' den Speichern-Button deaktivieren Me.btnSpeichern.Enabled = False ' den Löschen-Button deaktivieren @@ -174,6 +176,8 @@ Public Class frmNIProfileigenschaften Return "keineAenderung" ' wenn ein Profil selektiert ist: den originalen Profilnamen setzen If Me._selectedProfile IsNot Nothing Then Me._selectedProfile.SetBackToOriginal() + + Me.pnlProfileigenschaften.Visible = False ' den Speichern-Button deaktivieren Me.btnSpeichern.Enabled = False ' den Löschen-Button deaktivieren @@ -249,6 +253,7 @@ Public Class frmNIProfileigenschaften Me._selectedProfile = ClassNIProfile.getProfilByName(name) ' wenn das selektierte Profil gefunden wurde If Me._selectedProfile IsNot Nothing Then + Me.pnlProfileigenschaften.Visible = True Me.lblSave.Visible = False ' die Steuerelemente für die Profilinformationen mit den Daten füllen Me.txtProfilname.Text = Me._selectedProfile.Profilname @@ -541,7 +546,8 @@ Public Class frmNIProfileigenschaften End Sub Private Sub btnHinzufügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHinzufügen.Click - frmLogin_NI.ShowDialog() + 'frmLogin_NI.ShowDialog() + frmNIProfilhinzufuegen.ShowDialog() ' wenn das Formular geschlossen wurde, werden die Profile neu in die Combobox geladen Me.LoadProfilesInCombobox() End Sub @@ -644,20 +650,24 @@ Public Class frmNIProfileigenschaften If result = MsgBoxResult.Yes Then ' das Profil löschen If ClassNIProfile.DeleteProfil(Me._selectedProfile.OriginalProfilname) Then + + Me.pnlProfileigenschaften.Visible = False ' den Speichern-Button deaktivieren Me.btnSpeichern.Enabled = False ' den Löschen-Button deaktivieren Me.btnLöschen.Enabled = False ' kein Profil als selektiert wählen Me._selectedProfile = Nothing + + Me.lblProfil.Text = "Kein Profil gewählt" ' die Profile neu in die Combobox laden Me.LoadProfilesInCombobox() 'Das erste Profil laden - Try - Lade_Profil(Me.cmbProfilauswahl.DropDownItems(0).ToString) - Catch ex As Exception + 'Try + ' Lade_Profil(Me.cmbProfilauswahl.DropDownItems(0).ToString) + 'Catch ex As Exception - End Try + 'End Try End If End If @@ -1103,6 +1113,11 @@ Public Class frmNIProfileigenschaften Else grpbxMORE.Enabled = False End If + If Me._selectedProfile Is Nothing Then + Me.pnlProfileigenschaften.Visible = False + Else + Lade_Profil(Me._selectedProfile.Profilname) + End If End Sub Private Sub chkbxUserIdent_CheckedChanged(sender As Object, e As EventArgs) Handles chkbxUserIdent.CheckedChanged diff --git a/ToolCollection/frmNIProfilhinzufuegen.vb b/ToolCollection/frmNIProfilhinzufuegen.vb index 96c9cfe..c5f9097 100644 --- a/ToolCollection/frmNIProfilhinzufuegen.vb +++ b/ToolCollection/frmNIProfilhinzufuegen.vb @@ -34,7 +34,6 @@ Public Class frmNIProfilhinzufuegen ' Standardbuttons festlegen Me.AcceptButton = Me.btnOK Me.CancelButton = Me.btnAbbrechen - frmLogin_NI.Close() End Sub Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click From 881797110c53c939cd22aa75780c4e766f14f5cc Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 25 Sep 2025 14:43:23 +0200 Subject: [PATCH 14/90] =?UTF-8?q?Erster=20Entwurf=20Speichern=20bei=20Schl?= =?UTF-8?q?ie=C3=9Fen=20der=20Form=20-=20ClassNIVerknuepfungen,=20frmNIVer?= =?UTF-8?q?knuepfungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/ClassNIVerknüpfungen.vb | 6 ++- ToolCollection/frmNIVerknuepfungen.vb | 71 ++++++++++++++++---------- 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/ToolCollection/ClassNIVerknüpfungen.vb b/ToolCollection/ClassNIVerknüpfungen.vb index 53b62d9..cb95d4b 100644 --- a/ToolCollection/ClassNIVerknüpfungen.vb +++ b/ToolCollection/ClassNIVerknüpfungen.vb @@ -201,7 +201,11 @@ Public Class ClassNIVerknüpfungen End Sub - + Public ReadOnly Property IsSaved() As Boolean + Get + Return Me._linksSaved + End Get + End Property Private _linksSaved As Boolean = True diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 136a1ed..d6988b5 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -2015,26 +2015,28 @@ Public Class frmNIVerknuepfungen MsgBox("Die SELECT-Anweisung konnte nicht auf ihren Ursprungswert zurückgesetzt werden." & vbNewLine & vbNewLine & ex.Message, MsgBoxStyle.Exclamation, "Fehler beim Zurücksetzen der SQL-Anweisung") End Try End Sub - Private Sub btnsave_select_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave_select.Click + + Private Sub SaveLinks() Try If Me._selectedProfil._links.selectedLink IsNot Nothing Then - If Me._selectedProfil.IsSaved = False Then - - Me._selectedProfil.Save(True, "link") - If Me._selectedProfil._links.selectedLink.SaveLink(Me._selectedProfil.Profilname, Me._selectedProfil.Ni_Art) = True Then - btnsave_select.Enabled = False - MsgBox("Verknüpfung erfolgreich gespeichert!", MsgBoxStyle.Information) - End If - With btnsave_select - .Enabled = False - .ForeColor = Drawing.Color.Black - End With + 'Me._selectedProfil.Save(True, "link") + If Me._selectedProfil._links.selectedLink.SaveLink(Me._selectedProfil.Profilname, Me._selectedProfil.Ni_Art) = True Then + Me._selectedProfil._links.setLinksSaved() + btnsave_select.Enabled = False + MsgBox("Verknüpfung erfolgreich gespeichert!", MsgBoxStyle.Information) End If + With btnsave_select + .Enabled = False + .ForeColor = Drawing.Color.Black + End With End If Catch ex As Exception MsgBox("Fehler beim Speichern der DB-Verknüpfung." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try + End Sub + Private Sub btnsave_select_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave_select.Click + SaveLinks() End Sub Private Sub txtSelectAnweisung_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSelectAnweisung.TextChanged Try @@ -2266,6 +2268,7 @@ Public Class frmNIVerknuepfungen End Sub Private Sub frmNIVerknuepfungen_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If Me._selectedProfil IsNot Nothing Then + If Me._selectedProfil.Desk_windreamIndex = "" Then If Me._selectedProfil.DbArt = "xml" Then MsgBox("Bitte definieren Sie einen eindeutigen/deskriptiven Index!", MsgBoxStyle.Critical, "Fehlende Konfiguration:") @@ -2273,21 +2276,32 @@ Public Class frmNIVerknuepfungen e.Cancel = True End If End If - If Me._selectedProfil IsNot Nothing Then - If Me._selectedProfil.HasChanges Then - If _selectedProfil.MR_DAIndex <> "" And Me._selectedProfil.checkIndexsql = "" Then - MsgBox("Bitte definieren Sie einen SQL-Befehl zum überprüfen des gültigen Startindexwertes!", MsgBoxStyle.Critical, "Fehlende Konfiguration:") - Me.tabctrlbottom.SelectedIndex = 0 - e.Cancel = True - End If - End If - If Me._selectedProfil Is Nothing = False Then - Me.tabctrlbottom.Visible = False - If Me._selectedProfil.HasChanges Then - Me._selectedProfil.Save(True, "profile") - End If + + If Me._selectedProfil.HasChanges Then + If _selectedProfil.MR_DAIndex <> "" And Me._selectedProfil.checkIndexsql = "" Then + MsgBox("Bitte definieren Sie einen SQL-Befehl zum überprüfen des gültigen Startindexwertes!", MsgBoxStyle.Critical, "Fehlende Konfiguration:") + Me.tabctrlbottom.SelectedIndex = 0 + e.Cancel = True End If End If + + If Not Me._selectedProfil.IsSaved Or Not Me._selectedProfil._links.IsSaved Then + + Dim msgResult As MsgBoxResult = MsgBox("Möchten Sie die Änderungen speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen?") + If msgResult = MsgBoxResult.Yes Then + + If Not Me._selectedProfil.IsSaved Then + SaveProfile() + End If + + If Not Me._selectedProfil._links.IsSaved Then + SaveLinks() + End If + + End If + + End If + End If End Sub @@ -2638,11 +2652,12 @@ Public Class frmNIVerknuepfungen ' End If 'End Sub - Private Sub btnSaveCheckIndex_Click(sender As Object, e As EventArgs) Handles btnSaveCheckIndex.Click + Private Sub SaveProfile() If Me.txtCheckIndexSQL.Text <> "" Then Try ' die Änderungen speichern If Me._selectedProfil.Save(True, "profile") = True Then + Me._selectedProfil.setSaved() Me.btnSaveCheckIndex.Enabled = False Else MsgBox("Das Profil konnte nicht erfolgreich gespeichert werden.", MsgBoxStyle.Exclamation, "Fehler beim Speichern eines Profils") @@ -2653,6 +2668,10 @@ Public Class frmNIVerknuepfungen End If End Sub + Private Sub btnSaveCheckIndex_Click(sender As Object, e As EventArgs) Handles btnSaveCheckIndex.Click + SaveProfile() + End Sub + Private Sub txtCheckIndexSQL_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCheckIndexSQL.TextChanged If Me._selectedProfil IsNot Nothing Then From 1cfc8934df791a941328422c06b8117c84a38c6d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 2 Oct 2025 10:11:07 +0200 Subject: [PATCH 15/90] Speichern an einer Stelle - ClassNIProfil, ClassNIVerknuepfungen, frmNIProfileigenschaften, frmNIVerknuepfungen, frmNIVerknuepfungen.Designer --- ToolCollection/ClassNIProfil.vb | 76 ++++++++------- ToolCollection/ClassNIVerknüpfungen.vb | 11 ++- ToolCollection/frmNIProfileigenschaften.vb | 1 + .../frmNIVerknuepfungen.Designer.vb | 95 ++++++++++++------- ToolCollection/frmNIVerknuepfungen.resx | 2 +- ToolCollection/frmNIVerknuepfungen.vb | 84 ++++++++++++---- 6 files changed, 178 insertions(+), 91 deletions(-) diff --git a/ToolCollection/ClassNIProfil.vb b/ToolCollection/ClassNIProfil.vb index de16ebc..e2bb061 100644 --- a/ToolCollection/ClassNIProfil.vb +++ b/ToolCollection/ClassNIProfil.vb @@ -67,7 +67,7 @@ Public Shared _windream As New ClassWindream_allgemein(CURR_LogConfig) - Private _saved As Boolean + Private _saved As Boolean = True 'Private _config As ClassNachindexierungKonfiguration = New ClassNachindexierungKonfiguration 'Private _xmlConfigFile As String = My.Settings.vConfigDatei @@ -81,11 +81,11 @@ ''' ''' ''' - Sub New(ByVal profilname As String, ByVal dokumenttyp_string As String, ByVal windreamSuche As String, _ - ByVal NI_Art As String, ByVal xmlEnd As String, ByVal folderxml As String, ByVal delfiles As String, ByVal dbArt As String, ByVal dataSource As String, ByVal userId As String, _ - ByVal password As String, ByVal initialCatalog As String, ByVal SQLAnweisung As String, ByVal windreamIndex As String, ByVal checkIndexSQL As String, ByVal indexVali As String, ByVal indexFehler As String, _ - ByVal finalerIndex As String, ByVal aktiv As String, ByVal mrDAIndex As String, ByVal mrKDIndex As String, ByVal move2Folder As String, ByVal intervall As Integer, ByVal lastRun As String, ByVal NB_AD As Boolean, _ - ByVal getOrdRechte As Boolean, ByVal ordnerType As String, ByVal ordnerType_Eb As String, _ + Sub New(ByVal profilname As String, ByVal dokumenttyp_string As String, ByVal windreamSuche As String, + ByVal NI_Art As String, ByVal xmlEnd As String, ByVal folderxml As String, ByVal delfiles As String, ByVal dbArt As String, ByVal dataSource As String, ByVal userId As String, + ByVal password As String, ByVal initialCatalog As String, ByVal SQLAnweisung As String, ByVal windreamIndex As String, ByVal checkIndexSQL As String, ByVal indexVali As String, ByVal indexFehler As String, + ByVal finalerIndex As String, ByVal aktiv As String, ByVal mrDAIndex As String, ByVal mrKDIndex As String, ByVal move2Folder As String, ByVal intervall As Integer, ByVal lastRun As String, ByVal NB_AD As Boolean, + ByVal getOrdRechte As Boolean, ByVal ordnerType As String, ByVal ordnerType_Eb As String, ByVal CreaFolderIndex As String, ByVal CreaFolder_Folder As String, ByVal CreaFolder_move As Boolean) Me._dokumenttypString = dokumenttyp_string @@ -177,7 +177,7 @@ Try ' wenn das Profil nicht gespeichert ist - If Not Me.IsSaved Then + If Not Me.GetSaved Then ' wenn ein Profilname für dieses Profil gesetzt ist If Me._profilname IsNot Nothing And Me._originalProfilname IsNot Nothing Then ' XML-Datei initialisieren @@ -288,7 +288,8 @@ ' Profil auf gespeichert setzen Me._saved = True - If msg = True And item = "profile" Then MsgBox("Das Profil '" & Me._originalProfilname & "' wurde erfolgreich gespeichert.", MsgBoxStyle.Information, "Profil gespeichert") + 'If msg = True And item = "profile" Then MsgBox("Das Profil '" & Me._originalProfilname & "' wurde erfolgreich gespeichert.", MsgBoxStyle.Information, "Profil gespeichert") + If msg = True And item = "profile" Then MsgBox("Änderungen wurden erfolgreich gespeichert.", MsgBoxStyle.Information, "Profil gespeichert") Return True Else @@ -364,34 +365,34 @@ Public ReadOnly Property HasChanges() As Boolean Get - If Me._profilname = Me._originalProfilname And _ - Me._windreamSuche = Me._originalWindreamSuche And _ - Me._NI_ART = Me._originalNI_ART And _ - Me._xmlEnd = Me._originalxmlEnd And _ - Me._dbArt = Me._originalDbArt And _ - Me._initialCatalog = Me._originalInitialCatalog And _ - Me._dataSource = Me._originalDataSource And _ - Me._userId = Me._originalUserId And _ - Me._password = Me._originalPassword And _ - Me._windreamIndex = Me._originalwindreamIndex And _ - Me._checkIndexSQL = Me._originalcheckIndexSQL And _ - Me._indexValidation = Me._originalindexValidation And _ - Me._indexFehler = Me._originalindexFehler And _ + If Me._profilname = Me._originalProfilname And + Me._windreamSuche = Me._originalWindreamSuche And + Me._NI_ART = Me._originalNI_ART And + Me._xmlEnd = Me._originalxmlEnd And + Me._dbArt = Me._originalDbArt And + Me._initialCatalog = Me._originalInitialCatalog And + Me._dataSource = Me._originalDataSource And + Me._userId = Me._originalUserId And + Me._password = Me._originalPassword And + Me._windreamIndex = Me._originalwindreamIndex And + Me._checkIndexSQL = Me._originalcheckIndexSQL And + Me._indexValidation = Me._originalindexValidation And + Me._indexFehler = Me._originalindexFehler And Me._finalerIndex = Me._originalfinalerIndex And - Me._aktiv = Me._originalaktiv And _ - Me._MR_IndexDokart = Me._originalMR_IndexDokart And _ - Me._MR_IndexKunde = Me._originalMR_IndexKunde And _ - Me._xmlFolder = Me._originalxmlFolder And _ - Me._delete = Me._originaldelete And _ - Me._move2Folder = Me._originalmove2Folder And _ - Me.Intervall = Me.OriginalIntervall And _ + Me._aktiv = Me._originalaktiv And + Me._MR_IndexDokart = Me._originalMR_IndexDokart And + Me._MR_IndexKunde = Me._originalMR_IndexKunde And + Me._xmlFolder = Me._originalxmlFolder And + Me._delete = Me._originaldelete And + Me._move2Folder = Me._originalmove2Folder And + Me.Intervall = Me.OriginalIntervall And Me.LastRun = Me.OriginallastRun And - Me.NachbearbeitungAD = Me.OriginalNachbearbeitungAD And _ - Me._GetOrdnerRechte = Me._originalGetOrdnerRechte And _ - Me._ordnerType = Me._originalordnerType And _ - Me._ordnerType_Eb = Me._originalordnerType_Eb And _ - Me._CrFolderIndex = _originalCrFolderIndex And _ - Me._CrFolder_Folder = _originalCrFolder_Folder And _ + Me.NachbearbeitungAD = Me.OriginalNachbearbeitungAD And + Me._GetOrdnerRechte = Me._originalGetOrdnerRechte And + Me._ordnerType = Me._originalordnerType And + Me._ordnerType_Eb = Me._originalordnerType_Eb And + Me._CrFolderIndex = _originalCrFolderIndex And + Me._CrFolder_Folder = _originalCrFolder_Folder And Me._CrFolder_move = Me._originalCrFolder_move Then Return False @@ -401,12 +402,17 @@ End Get End Property - Public ReadOnly Property IsSaved() As Boolean + Public ReadOnly Property GetSaved() As Boolean Get Return Me._saved End Get End Property + Public ReadOnly Property IsSaved() As Boolean + Get + Return Me._saved = True + End Get + End Property Public Property OriginalProfilname() As String Get diff --git a/ToolCollection/ClassNIVerknüpfungen.vb b/ToolCollection/ClassNIVerknüpfungen.vb index cb95d4b..fcad616 100644 --- a/ToolCollection/ClassNIVerknüpfungen.vb +++ b/ToolCollection/ClassNIVerknüpfungen.vb @@ -5,6 +5,7 @@ Public Class ClassNIVerknüpfungen Private _parentProfile As ClassNIProfil Public Shared xmlNIConfigFile As String Public selectedLink As ClassNIVerknüpfung + Private _linksSaved As Boolean = True Public Sub New(ByVal profil As ClassNIProfil) @@ -201,15 +202,17 @@ Public Class ClassNIVerknüpfungen End Sub - Public ReadOnly Property IsSaved() As Boolean + Public ReadOnly Property GetSaved() As Boolean Get Return Me._linksSaved End Get End Property - - Private _linksSaved As Boolean = True - + Public ReadOnly Property IsSaved() As Boolean + Get + Return Me._linksSaved = True + End Get + End Property Public Function CountLinks() ' Anzahl der Verknüpfungen zurückgeben diff --git a/ToolCollection/frmNIProfileigenschaften.vb b/ToolCollection/frmNIProfileigenschaften.vb index d702217..7773d27 100644 --- a/ToolCollection/frmNIProfileigenschaften.vb +++ b/ToolCollection/frmNIProfileigenschaften.vb @@ -507,6 +507,7 @@ Public Class frmNIProfileigenschaften ' Das Profil auf gespeichert setzen, da ja keine Änderungen am Profil selbst gemacht wurden. Das Profil ' hat jedoch zu diesem Zeitpunkt den Status HasChanges(), da der Inhalt der Steuerelemente verändert wurde. Me._selectedProfile.setSaved() + Me._selectedProfile._links.setLinksSaved() btnVerknüpfungen.Visible = True Else btnVerknüpfungen.Visible = False diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index cf1a450..6c107bb 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -58,7 +58,6 @@ Partial Class frmNIVerknuepfungen Me.Label9 = New System.Windows.Forms.Label() Me.gbUpdate = New System.Windows.Forms.GroupBox() Me.Label2 = New System.Windows.Forms.Label() - Me.Button5 = New System.Windows.Forms.Button() Me.Label1 = New System.Windows.Forms.Label() Me.lblsaveSQLAnweisung = New System.Windows.Forms.Label() Me.cmbWindreamIndexeSQL = New System.Windows.Forms.ComboBox() @@ -170,6 +169,9 @@ Partial Class frmNIVerknuepfungen Me.rbvkt_add = New System.Windows.Forms.RadioButton() Me.rbvkt_overwrite = New System.Windows.Forms.RadioButton() Me.SplitContainer1 = New System.Windows.Forms.SplitContainer() + Me.pnlFooter = New System.Windows.Forms.Panel() + Me.btnCancel = New System.Windows.Forms.Button() + Me.btnSaveAll = New System.Windows.Forms.Button() Me.StatusStrip1.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.Panel1.SuspendLayout() @@ -192,6 +194,7 @@ Partial Class frmNIVerknuepfungen Me.SplitContainer1.Panel1.SuspendLayout() Me.SplitContainer1.Panel2.SuspendLayout() Me.SplitContainer1.SuspendLayout() + Me.pnlFooter.SuspendLayout() Me.SuspendLayout() ' 'txtfinalSkriptUpdate @@ -206,7 +209,7 @@ Partial Class frmNIVerknuepfungen Me.txtfinalSkriptUpdate.Multiline = True Me.txtfinalSkriptUpdate.Name = "txtfinalSkriptUpdate" Me.txtfinalSkriptUpdate.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.txtfinalSkriptUpdate.Size = New System.Drawing.Size(963, 138) + Me.txtfinalSkriptUpdate.Size = New System.Drawing.Size(963, 166) Me.txtfinalSkriptUpdate.TabIndex = 29 ' 'cmbDatenbankSpalten @@ -574,7 +577,6 @@ Partial Class frmNIVerknuepfungen 'gbUpdate ' Me.gbUpdate.Controls.Add(Me.Label2) - Me.gbUpdate.Controls.Add(Me.Button5) Me.gbUpdate.Controls.Add(Me.Label1) Me.gbUpdate.Controls.Add(Me.lblsaveSQLAnweisung) Me.gbUpdate.Controls.Add(Me.GroupBox1) @@ -586,7 +588,7 @@ Partial Class frmNIVerknuepfungen Me.gbUpdate.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.gbUpdate.Location = New System.Drawing.Point(3, 3) Me.gbUpdate.Name = "gbUpdate" - Me.gbUpdate.Size = New System.Drawing.Size(1251, 190) + Me.gbUpdate.Size = New System.Drawing.Size(1251, 218) Me.gbUpdate.TabIndex = 39 Me.gbUpdate.TabStop = False Me.gbUpdate.Text = "SQL-Befehl oder Skript (ausgeführt nach jedem Dateidurchlauf)" @@ -600,21 +602,6 @@ Partial Class frmNIVerknuepfungen Me.Label2.TabIndex = 55 Me.Label2.Text = "EXECUTEVB PathToMyVBScriptfile.vbs Argument#Argument2#Argument3" ' - 'Button5 - ' - Me.Button5.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Button5.Font = New System.Drawing.Font("Segoe UI", 8.25!) - Me.Button5.Image = Global.ToolCollection.My.Resources.Resources.save - Me.Button5.ImageAlign = System.Drawing.ContentAlignment.MiddleRight - Me.Button5.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Button5.Location = New System.Drawing.Point(1131, 97) - Me.Button5.Name = "Button5" - Me.Button5.Size = New System.Drawing.Size(100, 24) - Me.Button5.TabIndex = 54 - Me.Button5.Text = "Speichern" - Me.Button5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button5.UseVisualStyleBackColor = True - ' 'Label1 ' Me.Label1.AutoSize = True @@ -753,7 +740,7 @@ Partial Class frmNIVerknuepfungen Me.grbFilterDB.Location = New System.Drawing.Point(10, 304) Me.grbFilterDB.Name = "grbFilterDB" Me.grbFilterDB.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.grbFilterDB.Size = New System.Drawing.Size(1243, 220) + Me.grbFilterDB.Size = New System.Drawing.Size(1243, 228) Me.grbFilterDB.TabIndex = 23 Me.grbFilterDB.TabStop = False Me.grbFilterDB.Text = " Einschränkung der Datenbankansicht zum Auslesen des windream-Indexes " @@ -868,7 +855,7 @@ Partial Class frmNIVerknuepfungen Me.txtSelectAnweisung.Name = "txtSelectAnweisung" Me.txtSelectAnweisung.RightToLeft = System.Windows.Forms.RightToLeft.No Me.txtSelectAnweisung.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.txtSelectAnweisung.Size = New System.Drawing.Size(865, 181) + Me.txtSelectAnweisung.Size = New System.Drawing.Size(865, 189) Me.txtSelectAnweisung.TabIndex = 28 ' 'Label5 @@ -935,11 +922,11 @@ Partial Class frmNIVerknuepfungen Me.tabctrlbottom.Controls.Add(Me.TabPage6) Me.tabctrlbottom.Controls.Add(Me.TabPage1) Me.tabctrlbottom.Controls.Add(Me.TabPage2) - Me.tabctrlbottom.Dock = System.Windows.Forms.DockStyle.Fill + Me.tabctrlbottom.Dock = System.Windows.Forms.DockStyle.Top Me.tabctrlbottom.Location = New System.Drawing.Point(0, 0) Me.tabctrlbottom.Name = "tabctrlbottom" Me.tabctrlbottom.SelectedIndex = 0 - Me.tabctrlbottom.Size = New System.Drawing.Size(1265, 226) + Me.tabctrlbottom.Size = New System.Drawing.Size(1265, 250) Me.tabctrlbottom.TabIndex = 41 Me.tabctrlbottom.Visible = False ' @@ -958,7 +945,7 @@ Partial Class frmNIVerknuepfungen Me.TabPage6.Location = New System.Drawing.Point(4, 22) Me.TabPage6.Name = "TabPage6" Me.TabPage6.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage6.Size = New System.Drawing.Size(1257, 200) + Me.TabPage6.Size = New System.Drawing.Size(1257, 224) Me.TabPage6.TabIndex = 3 Me.TabPage6.Text = "Überprüfung deskriptiver Index" Me.TabPage6.UseVisualStyleBackColor = True @@ -1080,7 +1067,7 @@ Partial Class frmNIVerknuepfungen Me.txtCheckIndexSQL.Name = "txtCheckIndexSQL" Me.txtCheckIndexSQL.RightToLeft = System.Windows.Forms.RightToLeft.No Me.txtCheckIndexSQL.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.txtCheckIndexSQL.Size = New System.Drawing.Size(868, 174) + Me.txtCheckIndexSQL.Size = New System.Drawing.Size(868, 190) Me.txtCheckIndexSQL.TabIndex = 30 ' 'cmbSpalten_indexSQL @@ -1130,7 +1117,7 @@ Partial Class frmNIVerknuepfungen Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(1257, 196) + Me.TabPage1.Size = New System.Drawing.Size(1257, 224) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "SQL oder Skript-Befehl" Me.TabPage1.UseVisualStyleBackColor = True @@ -1141,7 +1128,7 @@ Partial Class frmNIVerknuepfungen Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage2.Size = New System.Drawing.Size(1257, 196) + Me.TabPage2.Size = New System.Drawing.Size(1257, 224) Me.TabPage2.TabIndex = 1 Me.TabPage2.Text = "Zusatzoptionen" Me.TabPage2.UseVisualStyleBackColor = True @@ -1306,7 +1293,7 @@ Partial Class frmNIVerknuepfungen Me.pnlfulltext.Enabled = False Me.pnlfulltext.Location = New System.Drawing.Point(503, 291) Me.pnlfulltext.Name = "pnlfulltext" - Me.pnlfulltext.Size = New System.Drawing.Size(313, 226) + Me.pnlfulltext.Size = New System.Drawing.Size(313, 234) Me.pnlfulltext.TabIndex = 47 Me.pnlfulltext.Visible = False ' @@ -1489,7 +1476,7 @@ Partial Class frmNIVerknuepfungen Me.RichTextBox_RegEx.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.RichTextBox_RegEx.Location = New System.Drawing.Point(10, 88) Me.RichTextBox_RegEx.Name = "RichTextBox_RegEx" - Me.RichTextBox_RegEx.Size = New System.Drawing.Size(60, 128) + Me.RichTextBox_RegEx.Size = New System.Drawing.Size(60, 136) Me.RichTextBox_RegEx.TabIndex = 24 Me.RichTextBox_RegEx.Text = "" ' @@ -1865,7 +1852,7 @@ Partial Class frmNIVerknuepfungen Me.pnlZielQuelle.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlZielQuelle.Location = New System.Drawing.Point(0, 0) Me.pnlZielQuelle.Name = "pnlZielQuelle" - Me.pnlZielQuelle.Size = New System.Drawing.Size(1265, 527) + Me.pnlZielQuelle.Size = New System.Drawing.Size(1265, 532) Me.pnlZielQuelle.TabIndex = 50 ' 'rbFunctionsTb @@ -1948,16 +1935,53 @@ Partial Class frmNIVerknuepfungen ' 'SplitContainer1.Panel2 ' + Me.SplitContainer1.Panel2.Controls.Add(Me.pnlFooter) Me.SplitContainer1.Panel2.Controls.Add(Me.tabctrlbottom) - Me.SplitContainer1.Size = New System.Drawing.Size(1265, 757) - Me.SplitContainer1.SplitterDistance = 527 + Me.SplitContainer1.Size = New System.Drawing.Size(1265, 830) + Me.SplitContainer1.SplitterDistance = 532 Me.SplitContainer1.TabIndex = 51 ' + 'pnlFooter + ' + Me.pnlFooter.BackColor = System.Drawing.Color.Transparent + Me.pnlFooter.Controls.Add(Me.btnCancel) + Me.pnlFooter.Controls.Add(Me.btnSaveAll) + Me.pnlFooter.Dock = System.Windows.Forms.DockStyle.Fill + Me.pnlFooter.Location = New System.Drawing.Point(0, 250) + Me.pnlFooter.Name = "pnlFooter" + Me.pnlFooter.Size = New System.Drawing.Size(1265, 44) + Me.pnlFooter.TabIndex = 53 + ' + 'btnCancel + ' + Me.btnCancel.Anchor = System.Windows.Forms.AnchorStyles.Top + Me.btnCancel.BackColor = System.Drawing.SystemColors.Control + Me.btnCancel.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btnCancel.Location = New System.Drawing.Point(997, 5) + Me.btnCancel.Name = "btnCancel" + Me.btnCancel.Size = New System.Drawing.Size(120, 30) + Me.btnCancel.TabIndex = 1 + Me.btnCancel.Text = "Abbrechen" + Me.btnCancel.UseVisualStyleBackColor = False + ' + 'btnSaveAll + ' + Me.btnSaveAll.Anchor = System.Windows.Forms.AnchorStyles.Top + Me.btnSaveAll.BackColor = System.Drawing.SystemColors.Control + Me.btnSaveAll.Enabled = False + Me.btnSaveAll.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btnSaveAll.Location = New System.Drawing.Point(1123, 5) + Me.btnSaveAll.Name = "btnSaveAll" + Me.btnSaveAll.Size = New System.Drawing.Size(120, 30) + Me.btnSaveAll.TabIndex = 0 + Me.btnSaveAll.Text = "Speichern" + Me.btnSaveAll.UseVisualStyleBackColor = True + ' 'frmNIVerknuepfungen ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1265, 779) + Me.ClientSize = New System.Drawing.Size(1265, 852) Me.Controls.Add(Me.SplitContainer1) Me.Controls.Add(Me.StatusStrip1) Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) @@ -1999,6 +2023,7 @@ Partial Class frmNIVerknuepfungen Me.SplitContainer1.Panel2.ResumeLayout(False) CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit() Me.SplitContainer1.ResumeLayout(False) + Me.pnlFooter.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -2145,9 +2170,11 @@ Partial Class frmNIVerknuepfungen Friend WithEvents Button1 As Button Friend WithEvents lblsaveSQLAnweisung As Label Friend WithEvents Label1 As Label - Friend WithEvents Button5 As Button Friend WithEvents rbFunctionsTb As RadioButton Friend WithEvents rbFunctionsSc As RadioButton Friend WithEvents Label2 As Label Friend WithEvents btnSaveCheckIndex As Button + Friend WithEvents pnlFooter As Panel + Friend WithEvents btnSaveAll As Button + Friend WithEvents btnCancel As Button End Class diff --git a/ToolCollection/frmNIVerknuepfungen.resx b/ToolCollection/frmNIVerknuepfungen.resx index 06f82f7..3787feb 100644 --- a/ToolCollection/frmNIVerknuepfungen.resx +++ b/ToolCollection/frmNIVerknuepfungen.resx @@ -130,7 +130,7 @@ 606, 17 - 25 + 28 diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index d6988b5..bdea377 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -194,6 +194,9 @@ Public Class frmNIVerknuepfungen If Me._selectedProfil.Dokumenttyp IsNot Nothing Then 'Profilübergreifende Aktualisierungen Me.pnlZielQuelle.Visible = True + Me.SplitContainer1.Visible = True + Me.tabctrlbottom.Visible = True + Me.pnlFooter.Visible = True Me.pnlZielQuelle.Dock = DockStyle.Fill Me.lblProfil.Text = "Gewähltes Profil: '" & Me._selectedProfil.Profilname & "'" Me.lblProfil.Visible = True @@ -461,6 +464,8 @@ Public Class frmNIVerknuepfungen End If End If + ' Nach vollständigem Laden wird saved auf true (changed auf false) gesetzt + Me._selectedProfil.setSaved() Else Me.lblProfil.Text = "Gewähltes Profil: '" & Me._selectedProfil.Profilname & "'" & " - unbekannter Objekttyp -" MsgBox("Ein Dokumenttyp konnte nicht bestimmt werden! Vergewissern Sie sich das das Profil korrekt gespeichert wurde!", MsgBoxStyle.Exclamation, "Ausnahme:") @@ -1676,6 +1681,23 @@ Public Class frmNIVerknuepfungen Private Sub lvwVerknuepfungen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvwVerknuepfungen.SelectedIndexChanged + If Not Me._selectedProfil.IsSaved Then + + Dim msgResult As MsgBoxResult = MsgBox("Möchten Sie die Änderungen speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen?") + If msgResult = MsgBoxResult.Yes Then + + If Not Me._selectedProfil.IsSaved Then + SaveProfile() + End If + + If Not Me._selectedProfil._links.IsSaved Then + SaveLinks() + End If + + End If + + End If + Select Case Me._selectedProfil.Ni_Art Case "db" Try @@ -1695,7 +1717,7 @@ Public Class frmNIVerknuepfungen End If ' merken ob das Profil geändert wurde - Dim gespeichertVorher = Me._selectedProfil.IsSaved + Dim gespeichertVorher = Me._selectedProfil.GetSaved Dim gespeichertLinkVorher = Me._selectedProfil._links.IsLinksSaved ' wenn im ListView eine Zeile ausgewählt wurde @@ -1716,6 +1738,7 @@ Public Class frmNIVerknuepfungen ' die SQL-Anweisung der ausgewählten Verknüpfung in das Textfeld schreiben Me.txtSelectAnweisung.Text = Me._selectedProfil._links.selectedLink.SelectAnweisung 'Me.selectedProfil.getLinkByValues(Me.lvwVerbunden.SelectedItems(0).SubItems(0).Text, Me.lvwVerbunden.SelectedItems(0).SubItems(1).Text, Me.lvwVerbunden.SelectedItems(0).SubItems(2).Text).getSelectAnweisung() Me.grbFilterDB.Enabled = True + Me.btnSaveAll.Enabled = False ' mit dem Cursor an die letzte Position springen Me.txtSelectAnweisung.SelectionStart = Me.txtSelectAnweisung.Text.Length @@ -1838,7 +1861,7 @@ Public Class frmNIVerknuepfungen End If ' merken ob das Profil geändert wurde - Dim gespeichertVorher = Me._selectedProfil.IsSaved + Dim gespeichertVorher = Me._selectedProfil.GetSaved Dim gespeichertLinkVorher = Me._selectedProfil._links.IsLinksSaved ' wenn im ListView eine Zeile ausgewählt wurde @@ -1924,8 +1947,8 @@ Public Class frmNIVerknuepfungen End If ' merken ob das Profil geändert wurde - Dim gespeichertVorher = Me._selectedProfil.IsSaved - Dim gespeichertLinkVorher = Me._selectedProfil._links.IsLinksSaved + Dim gespeichertVorher = Me._selectedProfil.GetSaved + Dim gespeichertLinkVorher = Me._selectedProfil._links.GetSaved ' wenn im ListView eine Zeile ausgewählt wurde If Me.lvwVerknuepfungen.SelectedItems.Count > 0 Then @@ -2022,8 +2045,9 @@ Public Class frmNIVerknuepfungen 'Me._selectedProfil.Save(True, "link") If Me._selectedProfil._links.selectedLink.SaveLink(Me._selectedProfil.Profilname, Me._selectedProfil.Ni_Art) = True Then Me._selectedProfil._links.setLinksSaved() - btnsave_select.Enabled = False - MsgBox("Verknüpfung erfolgreich gespeichert!", MsgBoxStyle.Information) + Me.btnsave_select.Enabled = False + Me.btnSaveAll.Enabled = False + 'MsgBox("Verknüpfung erfolgreich gespeichert!", MsgBoxStyle.Information) End If With btnsave_select .Enabled = False @@ -2037,6 +2061,8 @@ Public Class frmNIVerknuepfungen Private Sub btnsave_select_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave_select.Click SaveLinks() + SaveProfile() + SaveScript() End Sub Private Sub txtSelectAnweisung_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSelectAnweisung.TextChanged Try @@ -2046,7 +2072,7 @@ Public Class frmNIVerknuepfungen Dim SQL_ORIGIN As String = Me._selectedProfil._links.getLinkByValues(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(2).Text).getSelectAnweisung().ToString If SQL_ORIGIN <> Me.txtSelectAnweisung.Text Then - With btnsave_select + With btnSaveAll .Enabled = True .ForeColor = Drawing.Color.Black End With @@ -2054,7 +2080,7 @@ Public Class frmNIVerknuepfungen ' die Informationen der selektierten Verknüpfung auslesen Me._selectedProfil._links.getLinkByValues(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(2).Text).setSelectAnweisung(Me.txtSelectAnweisung.Text) - ' das Profil auf den Status 'geändert' setzen + Me.btnSaveAll.Enabled = True Me._selectedProfil.setChanged() Me._selectedProfil._links.setLinksChanged() 'Jetzt den Startwert bestimmen @@ -2183,6 +2209,13 @@ Public Class frmNIVerknuepfungen Private Sub txtUpdateAnweisung_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtfinalSkriptUpdate.TextChanged + If Not Me.txtfinalSkriptUpdate.Text = Me._selectedProfil.OriginalSQL_Anweisung Then + Me._selectedProfil.SQL_Anweisung = Me.txtfinalSkriptUpdate.Text + Me._selectedProfil.setChanged() + Me._selectedProfil._links.setLinksChanged() + btnSaveAll.Enabled = True + End If + End Sub Private Sub btnWindreamIndexEinfügenSQL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWindreamIndexEinfügenSQL.Click If Not Me.cmbWindreamIndexeSQL.SelectedItem = "" Then @@ -2285,7 +2318,8 @@ Public Class frmNIVerknuepfungen End If End If - If Not Me._selectedProfil.IsSaved Or Not Me._selectedProfil._links.IsSaved Then + ' If Not Me._selectedProfil.IsSaved Or Not Me._selectedProfil._links.IsSaved Then + If Not Me._selectedProfil.IsSaved Then Dim msgResult As MsgBoxResult = MsgBox("Möchten Sie die Änderungen speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen?") If msgResult = MsgBoxResult.Yes Then @@ -2312,7 +2346,6 @@ Public Class frmNIVerknuepfungen Me._selectedProfil = ClassNIProfile.aktivesProfil Me.lblProfil.Text = "(" & Me._selectedProfil.Profilname & ")" Me.lblProfil.Visible = True - 'Me.pnlZielQuelle.Visible = False Me.LoadSelectedProfile(Me._selectedProfil.Profilname) @@ -2326,6 +2359,8 @@ Public Class frmNIVerknuepfungen Else Me._selectedProfil = Nothing Me.pnlZielQuelle.Visible = False + Me.SplitContainer1.Visible = False + Me.pnlfulltext.Visible = False End If End Sub @@ -2659,6 +2694,7 @@ Public Class frmNIVerknuepfungen If Me._selectedProfil.Save(True, "profile") = True Then Me._selectedProfil.setSaved() Me.btnSaveCheckIndex.Enabled = False + Me.btnSaveAll.Enabled = False Else MsgBox("Das Profil konnte nicht erfolgreich gespeichert werden.", MsgBoxStyle.Exclamation, "Fehler beim Speichern eines Profils") End If @@ -2669,18 +2705,21 @@ Public Class frmNIVerknuepfungen End Sub Private Sub btnSaveCheckIndex_Click(sender As Object, e As EventArgs) Handles btnSaveCheckIndex.Click + SaveLinks() SaveProfile() + SaveScript() End Sub Private Sub txtCheckIndexSQL_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCheckIndexSQL.TextChanged If Me._selectedProfil IsNot Nothing Then + Me._selectedProfil.checkIndexsql = txtCheckIndexSQL.Text - If Not Me._selectedProfil.checkIndexsql = Me._selectedProfil.OriginalcheckIndexsql Then - btnSaveCheckIndex.Enabled = True - Me._selectedProfil.setChanged() - End If + If Not Me._selectedProfil.checkIndexsql = Me._selectedProfil.OriginalcheckIndexsql Then + btnSaveAll.Enabled = True + Me._selectedProfil.setChanged() + End If End If @@ -3201,7 +3240,7 @@ Public Class frmNIVerknuepfungen Sub SaveLDAP() Try If Me._selectedProfil._links.selectedLink IsNot Nothing Then - If Me._selectedProfil.IsSaved = False Then + If Me._selectedProfil.GetSaved = False Then Me._selectedProfil.Save(True, "profile") Me._selectedProfil._links.selectedLink.SaveLink(Me._selectedProfil.Profilname, Me._selectedProfil.Ni_Art) With btnSaveLDAP @@ -3363,7 +3402,7 @@ Public Class frmNIVerknuepfungen Private Sub btnSave_FulltextLinks_Click(sender As Object, e As EventArgs) Handles btnSave_FulltextLinks.Click Try If Me._selectedProfil._links.selectedLink IsNot Nothing Then - If Me._selectedProfil.IsSaved = False Then + If Me._selectedProfil.GetSaved = False Then Me._selectedProfil.Save(False, "FTLink") If Me._selectedProfil._links.selectedLink.SaveLink(Me._selectedProfil.Profilname, Me._selectedProfil.Ni_Art) = True Then MsgBox("Speichern erfolgreich!", MsgBoxStyle.Information) @@ -3601,13 +3640,15 @@ Public Class frmNIVerknuepfungen End If End Sub - Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click + Private Sub SaveScript() + If Me._selectedProfil IsNot Nothing Then If Not Me.txtfinalSkriptUpdate.Text = Me._selectedProfil.OriginalSQL_Anweisung Then Me._selectedProfil.SQL_Anweisung = Me.txtfinalSkriptUpdate.Text Me._selectedProfil.setChanged() Me._selectedProfil._links.setLinksChanged() + btnSaveAll.Enabled = True Else Exit Sub End If @@ -3617,9 +3658,12 @@ Public Class frmNIVerknuepfungen If Me._selectedProfil.Save(True, "profile") = True Then ' wenn das Speichern erfolgreich war Me.lblsaveSQLAnweisung.Text = "Data saved - " & Now.ToString + Me._selectedProfil.setSaved() + Me.btnSaveAll.Visible = False Else Me.lblsaveSQLAnweisung.Text = "" End If + End Sub Private Sub rbFunctionsSc_CheckedChanged(sender As Object, e As EventArgs) Handles rbFunctionsSc.CheckedChanged @@ -3659,4 +3703,10 @@ Public Class frmNIVerknuepfungen Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click End Sub + + Private Sub btnSaveAll_Click(sender As Object, e As EventArgs) Handles btnSaveAll.Click + SaveLinks() + SaveProfile() + SaveScript() + End Sub End Class \ No newline at end of file From 609d90ed9c35456c35cd93dca44327b4332270ea Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 2 Oct 2025 10:44:19 +0200 Subject: [PATCH 16/90] Buttonanpassungen - frmNIVerknuepfungen, frmNIVerknuepfungen.Designer --- .../frmNIVerknuepfungen.Designer.vb | 85 +++++++------------ ToolCollection/frmNIVerknuepfungen.vb | 27 ++---- 2 files changed, 38 insertions(+), 74 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index 6c107bb..96b1132 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -72,7 +72,6 @@ Partial Class frmNIVerknuepfungen Me.btnAddNI_Objekt = New System.Windows.Forms.Button() Me.Label40 = New System.Windows.Forms.Label() Me.cmbNI_Objekte = New System.Windows.Forms.ComboBox() - Me.btnsave_select = New System.Windows.Forms.Button() Me.btnSpalteEinfügen = New System.Windows.Forms.Button() Me.btnWindreamIndexEinfügen = New System.Windows.Forms.Button() Me.Label7 = New System.Windows.Forms.Label() @@ -85,7 +84,6 @@ Partial Class frmNIVerknuepfungen Me.lblDescrangelegteVerknuepf = New System.Windows.Forms.Label() Me.tabctrlbottom = New System.Windows.Forms.TabControl() Me.TabPage6 = New System.Windows.Forms.TabPage() - Me.btnSaveCheckIndex = New System.Windows.Forms.Button() Me.btnzuruecksetzen_checksql = New System.Windows.Forms.Button() Me.txtGrundgeruest_check = New System.Windows.Forms.Button() Me.Panel2 = New System.Windows.Forms.Panel() @@ -170,8 +168,9 @@ Partial Class frmNIVerknuepfungen Me.rbvkt_overwrite = New System.Windows.Forms.RadioButton() Me.SplitContainer1 = New System.Windows.Forms.SplitContainer() Me.pnlFooter = New System.Windows.Forms.Panel() - Me.btnCancel = New System.Windows.Forms.Button() + Me.btnCancelAndClose = New System.Windows.Forms.Button() Me.btnSaveAll = New System.Windows.Forms.Button() + Me.btnSaveAllAndClose = New System.Windows.Forms.Button() Me.StatusStrip1.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.Panel1.SuspendLayout() @@ -723,7 +722,6 @@ Partial Class frmNIVerknuepfungen Me.grbFilterDB.Controls.Add(Me.cmbNI_Objekte) Me.grbFilterDB.Controls.Add(Me.btnEindIndex) Me.grbFilterDB.Controls.Add(Me.Panel1) - Me.grbFilterDB.Controls.Add(Me.btnsave_select) Me.grbFilterDB.Controls.Add(Me.btnStandardSQL) Me.grbFilterDB.Controls.Add(Me.btnSpalteEinfügen) Me.grbFilterDB.Controls.Add(Me.cmbDatenbankSpalten) @@ -786,22 +784,6 @@ Partial Class frmNIVerknuepfungen Me.cmbNI_Objekte.Size = New System.Drawing.Size(191, 21) Me.cmbNI_Objekte.TabIndex = 50 ' - 'btnsave_select - ' - Me.btnsave_select.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnsave_select.Enabled = False - Me.btnsave_select.Font = New System.Drawing.Font("Segoe UI", 8.25!) - Me.btnsave_select.Image = Global.ToolCollection.My.Resources.Resources.save - Me.btnsave_select.ImageAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnsave_select.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnsave_select.Location = New System.Drawing.Point(1114, 32) - Me.btnsave_select.Name = "btnsave_select" - Me.btnsave_select.Size = New System.Drawing.Size(110, 24) - Me.btnsave_select.TabIndex = 47 - Me.btnsave_select.Text = "Speichern" - Me.btnsave_select.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnsave_select.UseVisualStyleBackColor = True - ' 'btnSpalteEinfügen ' Me.btnSpalteEinfügen.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) @@ -932,7 +914,6 @@ Partial Class frmNIVerknuepfungen ' 'TabPage6 ' - Me.TabPage6.Controls.Add(Me.btnSaveCheckIndex) Me.TabPage6.Controls.Add(Me.btnzuruecksetzen_checksql) Me.TabPage6.Controls.Add(Me.txtGrundgeruest_check) Me.TabPage6.Controls.Add(Me.Panel2) @@ -950,21 +931,6 @@ Partial Class frmNIVerknuepfungen Me.TabPage6.Text = "Überprüfung deskriptiver Index" Me.TabPage6.UseVisualStyleBackColor = True ' - 'btnSaveCheckIndex - ' - Me.btnSaveCheckIndex.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnSaveCheckIndex.BackColor = System.Drawing.SystemColors.Control - Me.btnSaveCheckIndex.Enabled = False - Me.btnSaveCheckIndex.Image = Global.ToolCollection.My.Resources.Resources.save - Me.btnSaveCheckIndex.ImageAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnSaveCheckIndex.Location = New System.Drawing.Point(1120, 21) - Me.btnSaveCheckIndex.Name = "btnSaveCheckIndex" - Me.btnSaveCheckIndex.Size = New System.Drawing.Size(110, 24) - Me.btnSaveCheckIndex.TabIndex = 52 - Me.btnSaveCheckIndex.Text = "Speichern" - Me.btnSaveCheckIndex.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnSaveCheckIndex.UseVisualStyleBackColor = True - ' 'btnzuruecksetzen_checksql ' Me.btnzuruecksetzen_checksql.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) @@ -1944,7 +1910,8 @@ Partial Class frmNIVerknuepfungen 'pnlFooter ' Me.pnlFooter.BackColor = System.Drawing.Color.Transparent - Me.pnlFooter.Controls.Add(Me.btnCancel) + Me.pnlFooter.Controls.Add(Me.btnSaveAllAndClose) + Me.pnlFooter.Controls.Add(Me.btnCancelAndClose) Me.pnlFooter.Controls.Add(Me.btnSaveAll) Me.pnlFooter.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlFooter.Location = New System.Drawing.Point(0, 250) @@ -1952,30 +1919,41 @@ Partial Class frmNIVerknuepfungen Me.pnlFooter.Size = New System.Drawing.Size(1265, 44) Me.pnlFooter.TabIndex = 53 ' - 'btnCancel + 'btnCancelAndClose ' - Me.btnCancel.Anchor = System.Windows.Forms.AnchorStyles.Top - Me.btnCancel.BackColor = System.Drawing.SystemColors.Control - Me.btnCancel.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnCancel.Location = New System.Drawing.Point(997, 5) - Me.btnCancel.Name = "btnCancel" - Me.btnCancel.Size = New System.Drawing.Size(120, 30) - Me.btnCancel.TabIndex = 1 - Me.btnCancel.Text = "Abbrechen" - Me.btnCancel.UseVisualStyleBackColor = False + Me.btnCancelAndClose.Anchor = System.Windows.Forms.AnchorStyles.Top + Me.btnCancelAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight + Me.btnCancelAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btnCancelAndClose.Location = New System.Drawing.Point(1009, 6) + Me.btnCancelAndClose.Name = "btnCancelAndClose" + Me.btnCancelAndClose.Size = New System.Drawing.Size(120, 30) + Me.btnCancelAndClose.TabIndex = 1 + Me.btnCancelAndClose.Text = "Abbrechen" + Me.btnCancelAndClose.UseVisualStyleBackColor = False ' 'btnSaveAll ' Me.btnSaveAll.Anchor = System.Windows.Forms.AnchorStyles.Top - Me.btnSaveAll.BackColor = System.Drawing.SystemColors.Control + Me.btnSaveAll.BackColor = System.Drawing.SystemColors.ControlLightLight Me.btnSaveAll.Enabled = False Me.btnSaveAll.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnSaveAll.Location = New System.Drawing.Point(1123, 5) + Me.btnSaveAll.Location = New System.Drawing.Point(1135, 6) Me.btnSaveAll.Name = "btnSaveAll" Me.btnSaveAll.Size = New System.Drawing.Size(120, 30) Me.btnSaveAll.TabIndex = 0 - Me.btnSaveAll.Text = "Speichern" - Me.btnSaveAll.UseVisualStyleBackColor = True + Me.btnSaveAll.Text = "Übernehmen" + Me.btnSaveAll.UseVisualStyleBackColor = False + ' + 'btnSaveAllAndClose + ' + Me.btnSaveAllAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight + Me.btnSaveAllAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btnSaveAllAndClose.Location = New System.Drawing.Point(883, 6) + Me.btnSaveAllAndClose.Name = "btnSaveAllAndClose" + Me.btnSaveAllAndClose.Size = New System.Drawing.Size(120, 30) + Me.btnSaveAllAndClose.TabIndex = 2 + Me.btnSaveAllAndClose.Text = "Ok" + Me.btnSaveAllAndClose.UseVisualStyleBackColor = False ' 'frmNIVerknuepfungen ' @@ -2051,7 +2029,6 @@ Partial Class frmNIVerknuepfungen Friend WithEvents btnTestSQL As System.Windows.Forms.Button Friend WithEvents btnlvw_down As System.Windows.Forms.Button Friend WithEvents btnlvw_up As System.Windows.Forms.Button - Friend WithEvents btnsave_select As System.Windows.Forms.Button Friend WithEvents btnWindreamIndexEinfügenSQL As System.Windows.Forms.Button Friend WithEvents btnaddUniqueIndex As System.Windows.Forms.Button Friend WithEvents lbxQuelle1 As System.Windows.Forms.ListBox @@ -2173,8 +2150,8 @@ Partial Class frmNIVerknuepfungen Friend WithEvents rbFunctionsTb As RadioButton Friend WithEvents rbFunctionsSc As RadioButton Friend WithEvents Label2 As Label - Friend WithEvents btnSaveCheckIndex As Button Friend WithEvents pnlFooter As Panel Friend WithEvents btnSaveAll As Button - Friend WithEvents btnCancel As Button + Friend WithEvents btnCancelAndClose As Button + Friend WithEvents btnSaveAllAndClose As Button End Class diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index bdea377..19d5832 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -1681,21 +1681,21 @@ Public Class frmNIVerknuepfungen Private Sub lvwVerknuepfungen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvwVerknuepfungen.SelectedIndexChanged - If Not Me._selectedProfil.IsSaved Then + If Not Me._selectedProfil._links.IsSaved Then Dim msgResult As MsgBoxResult = MsgBox("Möchten Sie die Änderungen speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen?") If msgResult = MsgBoxResult.Yes Then - If Not Me._selectedProfil.IsSaved Then - SaveProfile() - End If + 'If Not Me._selectedProfil.IsSaved Then + ' SaveProfile() + 'End If If Not Me._selectedProfil._links.IsSaved Then SaveLinks() End If - + Else + Me._selectedProfil._links.setLinksSaved() End If - End If Select Case Me._selectedProfil.Ni_Art @@ -2045,11 +2045,10 @@ Public Class frmNIVerknuepfungen 'Me._selectedProfil.Save(True, "link") If Me._selectedProfil._links.selectedLink.SaveLink(Me._selectedProfil.Profilname, Me._selectedProfil.Ni_Art) = True Then Me._selectedProfil._links.setLinksSaved() - Me.btnsave_select.Enabled = False Me.btnSaveAll.Enabled = False 'MsgBox("Verknüpfung erfolgreich gespeichert!", MsgBoxStyle.Information) End If - With btnsave_select + With btnSaveAll .Enabled = False .ForeColor = Drawing.Color.Black End With @@ -2059,11 +2058,6 @@ Public Class frmNIVerknuepfungen End Try End Sub - Private Sub btnsave_select_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave_select.Click - SaveLinks() - SaveProfile() - SaveScript() - End Sub Private Sub txtSelectAnweisung_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSelectAnweisung.TextChanged Try ' wenn im ListView eine Zeile selektiert wurde @@ -2693,7 +2687,6 @@ Public Class frmNIVerknuepfungen ' die Änderungen speichern If Me._selectedProfil.Save(True, "profile") = True Then Me._selectedProfil.setSaved() - Me.btnSaveCheckIndex.Enabled = False Me.btnSaveAll.Enabled = False Else MsgBox("Das Profil konnte nicht erfolgreich gespeichert werden.", MsgBoxStyle.Exclamation, "Fehler beim Speichern eines Profils") @@ -2704,12 +2697,6 @@ Public Class frmNIVerknuepfungen End If End Sub - Private Sub btnSaveCheckIndex_Click(sender As Object, e As EventArgs) Handles btnSaveCheckIndex.Click - SaveLinks() - SaveProfile() - SaveScript() - End Sub - Private Sub txtCheckIndexSQL_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCheckIndexSQL.TextChanged If Me._selectedProfil IsNot Nothing Then From 6eef02e0ec1d03ef6bbfa272e63c48ae0d1fc66d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 2 Oct 2025 13:30:14 +0200 Subject: [PATCH 17/90] =?UTF-8?q?Ok-Button,=20Abbrechen-Button,=20=C3=9Cbe?= =?UTF-8?q?rnehmen-Button,=20frmNIVerknuepfungen,=20frmNIVerknuepfungen.De?= =?UTF-8?q?signer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frmNIVerknuepfungen.Designer.vb | 28 +++++------ ToolCollection/frmNIVerknuepfungen.vb | 46 +++++++++++++------ 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index 96b1132..d2ce9bc 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -168,7 +168,7 @@ Partial Class frmNIVerknuepfungen Me.rbvkt_overwrite = New System.Windows.Forms.RadioButton() Me.SplitContainer1 = New System.Windows.Forms.SplitContainer() Me.pnlFooter = New System.Windows.Forms.Panel() - Me.btnCancelAndClose = New System.Windows.Forms.Button() + Me.btnCancelAllAndClose = New System.Windows.Forms.Button() Me.btnSaveAll = New System.Windows.Forms.Button() Me.btnSaveAllAndClose = New System.Windows.Forms.Button() Me.StatusStrip1.SuspendLayout() @@ -1911,7 +1911,7 @@ Partial Class frmNIVerknuepfungen ' Me.pnlFooter.BackColor = System.Drawing.Color.Transparent Me.pnlFooter.Controls.Add(Me.btnSaveAllAndClose) - Me.pnlFooter.Controls.Add(Me.btnCancelAndClose) + Me.pnlFooter.Controls.Add(Me.btnCancelAllAndClose) Me.pnlFooter.Controls.Add(Me.btnSaveAll) Me.pnlFooter.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlFooter.Location = New System.Drawing.Point(0, 250) @@ -1919,17 +1919,18 @@ Partial Class frmNIVerknuepfungen Me.pnlFooter.Size = New System.Drawing.Size(1265, 44) Me.pnlFooter.TabIndex = 53 ' - 'btnCancelAndClose + 'btnCancelAllAndClose ' - Me.btnCancelAndClose.Anchor = System.Windows.Forms.AnchorStyles.Top - Me.btnCancelAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight - Me.btnCancelAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnCancelAndClose.Location = New System.Drawing.Point(1009, 6) - Me.btnCancelAndClose.Name = "btnCancelAndClose" - Me.btnCancelAndClose.Size = New System.Drawing.Size(120, 30) - Me.btnCancelAndClose.TabIndex = 1 - Me.btnCancelAndClose.Text = "Abbrechen" - Me.btnCancelAndClose.UseVisualStyleBackColor = False + Me.btnCancelAllAndClose.Anchor = System.Windows.Forms.AnchorStyles.Top + Me.btnCancelAllAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight + Me.btnCancelAllAndClose.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.btnCancelAllAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btnCancelAllAndClose.Location = New System.Drawing.Point(1009, 6) + Me.btnCancelAllAndClose.Name = "btnCancelAllAndClose" + Me.btnCancelAllAndClose.Size = New System.Drawing.Size(120, 30) + Me.btnCancelAllAndClose.TabIndex = 1 + Me.btnCancelAllAndClose.Text = "Abbrechen" + Me.btnCancelAllAndClose.UseVisualStyleBackColor = False ' 'btnSaveAll ' @@ -1947,6 +1948,7 @@ Partial Class frmNIVerknuepfungen 'btnSaveAllAndClose ' Me.btnSaveAllAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight + Me.btnSaveAllAndClose.DialogResult = System.Windows.Forms.DialogResult.OK Me.btnSaveAllAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSaveAllAndClose.Location = New System.Drawing.Point(883, 6) Me.btnSaveAllAndClose.Name = "btnSaveAllAndClose" @@ -2152,6 +2154,6 @@ Partial Class frmNIVerknuepfungen Friend WithEvents Label2 As Label Friend WithEvents pnlFooter As Panel Friend WithEvents btnSaveAll As Button - Friend WithEvents btnCancelAndClose As Button + Friend WithEvents btnCancelAllAndClose As Button Friend WithEvents btnSaveAllAndClose As Button End Class diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 19d5832..dc3652b 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -2312,23 +2312,31 @@ Public Class frmNIVerknuepfungen End If End If - ' If Not Me._selectedProfil.IsSaved Or Not Me._selectedProfil._links.IsSaved Then - If Not Me._selectedProfil.IsSaved Then - - Dim msgResult As MsgBoxResult = MsgBox("Möchten Sie die Änderungen speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen?") - If msgResult = MsgBoxResult.Yes Then - + Select Case Me.DialogResult + Case DialogResult.OK + If Not Me._selectedProfil.IsSaved Then SaveProfile() + If Not Me._selectedProfil._links.IsLinksSaved Then SaveLinks() + Case DialogResult.Cancel + 'nichts + Case Else + ' If Not Me._selectedProfil.IsSaved Or Not Me._selectedProfil._links.IsSaved Then If Not Me._selectedProfil.IsSaved Then - SaveProfile() + + Dim msgResult As MsgBoxResult = MsgBox("Möchten Sie die Änderungen speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen?") + If msgResult = MsgBoxResult.Yes Then + + If Not Me._selectedProfil.IsSaved Then + SaveProfile() + End If + + If Not Me._selectedProfil._links.IsSaved Then + SaveLinks() + End If + + End If + End If - - If Not Me._selectedProfil._links.IsSaved Then - SaveLinks() - End If - - End If - - End If + End Select End If End Sub @@ -3696,4 +3704,12 @@ Public Class frmNIVerknuepfungen SaveProfile() SaveScript() End Sub + + Private Sub btnSaveAllAndClose_Click(sender As Object, e As EventArgs) Handles btnSaveAllAndClose.Click + Me.Close() + End Sub + + Private Sub btnCancelAllAndClose_Click(sender As Object, e As EventArgs) Handles btnCancelAllAndClose.Click + Me.Close() + End Sub End Class \ No newline at end of file From 6270be7cdfede2baf6bc57a6ba9b7468265a0a2b Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 2 Oct 2025 16:43:25 +0200 Subject: [PATCH 18/90] Speichern von SQL Skripten - frmNIVerknuepfungen, frmNIVerknuepfungen.Designer --- .../frmNIVerknuepfungen.Designer.vb | 51 ++++++++-------- ToolCollection/frmNIVerknuepfungen.vb | 59 +++++-------------- 2 files changed, 40 insertions(+), 70 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index d2ce9bc..1bf7f27 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -168,9 +168,9 @@ Partial Class frmNIVerknuepfungen Me.rbvkt_overwrite = New System.Windows.Forms.RadioButton() Me.SplitContainer1 = New System.Windows.Forms.SplitContainer() Me.pnlFooter = New System.Windows.Forms.Panel() + Me.btnSaveAllAndClose = New System.Windows.Forms.Button() Me.btnCancelAllAndClose = New System.Windows.Forms.Button() Me.btnSaveAll = New System.Windows.Forms.Button() - Me.btnSaveAllAndClose = New System.Windows.Forms.Button() Me.StatusStrip1.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.Panel1.SuspendLayout() @@ -208,7 +208,8 @@ Partial Class frmNIVerknuepfungen Me.txtfinalSkriptUpdate.Multiline = True Me.txtfinalSkriptUpdate.Name = "txtfinalSkriptUpdate" Me.txtfinalSkriptUpdate.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.txtfinalSkriptUpdate.Size = New System.Drawing.Size(963, 166) + Me.txtfinalSkriptUpdate.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.txtfinalSkriptUpdate.Size = New System.Drawing.Size(868, 166) Me.txtfinalSkriptUpdate.TabIndex = 29 ' 'cmbDatenbankSpalten @@ -415,7 +416,7 @@ Partial Class frmNIVerknuepfungen Me.GroupBox1.Controls.Add(Me.Button3) Me.GroupBox1.Controls.Add(Me.Button1) Me.GroupBox1.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.GroupBox1.Location = New System.Drawing.Point(975, 47) + Me.GroupBox1.Location = New System.Drawing.Point(890, 47) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(147, 83) Me.GroupBox1.TabIndex = 50 @@ -480,14 +481,12 @@ Partial Class frmNIVerknuepfungen Me.btnWindreamIndexEinfügenSQL.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btnWindreamIndexEinfügenSQL.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnWindreamIndexEinfügenSQL.Image = Global.ToolCollection.My.Resources.Resources.add - Me.btnWindreamIndexEinfügenSQL.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btnWindreamIndexEinfügenSQL.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnWindreamIndexEinfügenSQL.Location = New System.Drawing.Point(1161, 149) + Me.btnWindreamIndexEinfügenSQL.Location = New System.Drawing.Point(1194, 149) Me.btnWindreamIndexEinfügenSQL.Name = "btnWindreamIndexEinfügenSQL" Me.btnWindreamIndexEinfügenSQL.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.btnWindreamIndexEinfügenSQL.Size = New System.Drawing.Size(69, 21) + Me.btnWindreamIndexEinfügenSQL.Size = New System.Drawing.Size(33, 22) Me.btnWindreamIndexEinfügenSQL.TabIndex = 47 - Me.btnWindreamIndexEinfügenSQL.Text = "Add" Me.btnWindreamIndexEinfügenSQL.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.btnWindreamIndexEinfügenSQL.UseVisualStyleBackColor = True ' @@ -565,12 +564,12 @@ Partial Class frmNIVerknuepfungen Me.Label9.AutoSize = True Me.Label9.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label9.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label9.Location = New System.Drawing.Point(977, 133) + Me.Label9.Location = New System.Drawing.Point(887, 154) Me.Label9.Name = "Label9" Me.Label9.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.Label9.Size = New System.Drawing.Size(92, 13) + Me.Label9.Size = New System.Drawing.Size(94, 13) Me.Label9.TabIndex = 46 - Me.Label9.Text = "windream Index:" + Me.Label9.Text = "Windream Index:" Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'gbUpdate @@ -617,7 +616,7 @@ Partial Class frmNIVerknuepfungen Me.lblsaveSQLAnweisung.AutoSize = True Me.lblsaveSQLAnweisung.BackColor = System.Drawing.Color.Yellow Me.lblsaveSQLAnweisung.Font = New System.Drawing.Font("Segoe UI Semibold", 8.25!, CType((System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Italic), System.Drawing.FontStyle), System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblsaveSQLAnweisung.Location = New System.Drawing.Point(980, 173) + Me.lblsaveSQLAnweisung.Location = New System.Drawing.Point(887, 185) Me.lblsaveSQLAnweisung.Name = "lblsaveSQLAnweisung" Me.lblsaveSQLAnweisung.Size = New System.Drawing.Size(38, 13) Me.lblsaveSQLAnweisung.TabIndex = 51 @@ -630,10 +629,10 @@ Partial Class frmNIVerknuepfungen Me.cmbWindreamIndexeSQL.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cmbWindreamIndexeSQL.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.cmbWindreamIndexeSQL.FormattingEnabled = True - Me.cmbWindreamIndexeSQL.Location = New System.Drawing.Point(980, 149) + Me.cmbWindreamIndexeSQL.Location = New System.Drawing.Point(997, 149) Me.cmbWindreamIndexeSQL.Name = "cmbWindreamIndexeSQL" Me.cmbWindreamIndexeSQL.RightToLeft = System.Windows.Forms.RightToLeft.No - Me.cmbWindreamIndexeSQL.Size = New System.Drawing.Size(164, 21) + Me.cmbWindreamIndexeSQL.Size = New System.Drawing.Size(191, 21) Me.cmbWindreamIndexeSQL.TabIndex = 45 ' 'lblDescr_Verknüpfungen @@ -1919,9 +1918,20 @@ Partial Class frmNIVerknuepfungen Me.pnlFooter.Size = New System.Drawing.Size(1265, 44) Me.pnlFooter.TabIndex = 53 ' + 'btnSaveAllAndClose + ' + Me.btnSaveAllAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight + Me.btnSaveAllAndClose.DialogResult = System.Windows.Forms.DialogResult.OK + Me.btnSaveAllAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.btnSaveAllAndClose.Location = New System.Drawing.Point(883, 6) + Me.btnSaveAllAndClose.Name = "btnSaveAllAndClose" + Me.btnSaveAllAndClose.Size = New System.Drawing.Size(120, 30) + Me.btnSaveAllAndClose.TabIndex = 2 + Me.btnSaveAllAndClose.Text = "Ok" + Me.btnSaveAllAndClose.UseVisualStyleBackColor = False + ' 'btnCancelAllAndClose ' - Me.btnCancelAllAndClose.Anchor = System.Windows.Forms.AnchorStyles.Top Me.btnCancelAllAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight Me.btnCancelAllAndClose.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.btnCancelAllAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) @@ -1934,7 +1944,6 @@ Partial Class frmNIVerknuepfungen ' 'btnSaveAll ' - Me.btnSaveAll.Anchor = System.Windows.Forms.AnchorStyles.Top Me.btnSaveAll.BackColor = System.Drawing.SystemColors.ControlLightLight Me.btnSaveAll.Enabled = False Me.btnSaveAll.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) @@ -1945,18 +1954,6 @@ Partial Class frmNIVerknuepfungen Me.btnSaveAll.Text = "Übernehmen" Me.btnSaveAll.UseVisualStyleBackColor = False ' - 'btnSaveAllAndClose - ' - Me.btnSaveAllAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight - Me.btnSaveAllAndClose.DialogResult = System.Windows.Forms.DialogResult.OK - Me.btnSaveAllAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnSaveAllAndClose.Location = New System.Drawing.Point(883, 6) - Me.btnSaveAllAndClose.Name = "btnSaveAllAndClose" - Me.btnSaveAllAndClose.Size = New System.Drawing.Size(120, 30) - Me.btnSaveAllAndClose.TabIndex = 2 - Me.btnSaveAllAndClose.Text = "Ok" - Me.btnSaveAllAndClose.UseVisualStyleBackColor = False - ' 'frmNIVerknuepfungen ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index dc3652b..6a47225 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -2186,27 +2186,27 @@ Public Class frmNIVerknuepfungen ' End Try 'End Sub - Private Sub txtUpdateAnweisung_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtfinalSkriptUpdate.LostFocus - 'If Me.txtfinalSkriptUpdate.Text <> "" Then - ' Try - ' ' die Änderungen speichern - ' If Me._selectedProfil.Save(True,"profile") = True Then ' wenn das Speichern erfolgreich war - ' Me._selectedProfil.setChanged() - ' Else - ' MsgBox("Das Profil konnte nicht erfolgreich gespeichert werden.", MsgBoxStyle.Exclamation, "Fehler beim Speichern eines Profils") - ' End If - ' Catch ex As Exception - ' MsgBox("Fehler beim Speichern des SQL-Befehles." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Speichern eines SQL-Befehls.") - ' End Try - 'End If - End Sub + 'Private Sub txtUpdateAnweisung_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtfinalSkriptUpdate.LostFocus + ' Me._selectedProfil.SQL_Anweisung = txtfinalSkriptUpdate.Text + 'If Me.txtfinalSkriptUpdate.Text <> "" Then + ' Try + ' ' die Änderungen speichern + ' If Me._selectedProfil.Save(True,"profile") = True Then ' wenn das Speichern erfolgreich war + ' Me._selectedProfil.setChanged() + ' Else + ' MsgBox("Das Profil konnte nicht erfolgreich gespeichert werden.", MsgBoxStyle.Exclamation, "Fehler beim Speichern eines Profils") + ' End If + ' Catch ex As Exception + ' MsgBox("Fehler beim Speichern des SQL-Befehles." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Speichern eines SQL-Befehls.") + ' End Try + 'End If + 'End Sub Private Sub txtUpdateAnweisung_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtfinalSkriptUpdate.TextChanged - If Not Me.txtfinalSkriptUpdate.Text = Me._selectedProfil.OriginalSQL_Anweisung Then + If Not Me.txtfinalSkriptUpdate.Text = String.Empty And Not Me.txtfinalSkriptUpdate.Text = Me._selectedProfil.OriginalSQL_Anweisung Then Me._selectedProfil.SQL_Anweisung = Me.txtfinalSkriptUpdate.Text Me._selectedProfil.setChanged() - Me._selectedProfil._links.setLinksChanged() btnSaveAll.Enabled = True End If @@ -3635,32 +3635,6 @@ Public Class frmNIVerknuepfungen End If End Sub - Private Sub SaveScript() - - If Me._selectedProfil IsNot Nothing Then - - If Not Me.txtfinalSkriptUpdate.Text = Me._selectedProfil.OriginalSQL_Anweisung Then - Me._selectedProfil.SQL_Anweisung = Me.txtfinalSkriptUpdate.Text - Me._selectedProfil.setChanged() - Me._selectedProfil._links.setLinksChanged() - btnSaveAll.Enabled = True - Else - Exit Sub - End If - Else - Exit Sub - End If - If Me._selectedProfil.Save(True, "profile") = True Then - ' wenn das Speichern erfolgreich war - Me.lblsaveSQLAnweisung.Text = "Data saved - " & Now.ToString - Me._selectedProfil.setSaved() - Me.btnSaveAll.Visible = False - Else - Me.lblsaveSQLAnweisung.Text = "" - End If - - End Sub - Private Sub rbFunctionsSc_CheckedChanged(sender As Object, e As EventArgs) Handles rbFunctionsSc.CheckedChanged If Not _flagIgnoreCheckedChanged Then If Me._selectedProfil Is Nothing = False Then @@ -3702,7 +3676,6 @@ Public Class frmNIVerknuepfungen Private Sub btnSaveAll_Click(sender As Object, e As EventArgs) Handles btnSaveAll.Click SaveLinks() SaveProfile() - SaveScript() End Sub Private Sub btnSaveAllAndClose_Click(sender As Object, e As EventArgs) Handles btnSaveAllAndClose.Click From f7a87531625303b9e3c237565984ecbe1f952ce7 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 6 Oct 2025 13:19:14 +0200 Subject: [PATCH 19/90] =?UTF-8?q?Speicherabfragen=20bei=20Verkn=C3=BCpfung?= =?UTF-8?q?en=20optimiert=20-=20frmNIVerknuepfungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmNIVerknuepfungen.vb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 6a47225..ad03c52 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -1692,9 +1692,11 @@ Public Class frmNIVerknuepfungen If Not Me._selectedProfil._links.IsSaved Then SaveLinks() + SaveProfile() End If Else Me._selectedProfil._links.setLinksSaved() + Me._selectedProfil.setSaved() End If End If From 467f6e26a368118be4412a012fa80b6b4fb0c2a4 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 6 Oct 2025 13:20:48 +0200 Subject: [PATCH 20/90] Merken von CheckState bei chbxStatusfertig - frmNIVerknupfungen, Settings --- .../My Project/Settings.Designer.vb | 12 ++++++++++++ ToolCollection/My Project/Settings.settings | 3 +++ ToolCollection/My Project/licenses.licx | 1 + ToolCollection/app.config | 3 +++ ToolCollection/frmNIVerknuepfungen.vb | 19 +++++++++++-------- 5 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 ToolCollection/My Project/licenses.licx diff --git a/ToolCollection/My Project/Settings.Designer.vb b/ToolCollection/My Project/Settings.Designer.vb index 78c0e71..e1a7777 100644 --- a/ToolCollection/My Project/Settings.Designer.vb +++ b/ToolCollection/My Project/Settings.Designer.vb @@ -733,6 +733,18 @@ Namespace My Me("vDefaultDeleteLogsTime") = value End Set End Property + + _ + Public Property vNIStatusFinished() As Boolean + Get + Return CType(Me("vNIStatusFinished"),Boolean) + End Get + Set + Me("vNIStatusFinished") = value + End Set + End Property End Class End Namespace diff --git a/ToolCollection/My Project/Settings.settings b/ToolCollection/My Project/Settings.settings index b402bd0..e0a5519 100644 --- a/ToolCollection/My Project/Settings.settings +++ b/ToolCollection/My Project/Settings.settings @@ -181,5 +181,8 @@ 01/01/0001 03:00:00 + + False + \ No newline at end of file diff --git a/ToolCollection/My Project/licenses.licx b/ToolCollection/My Project/licenses.licx new file mode 100644 index 0000000..53ac073 --- /dev/null +++ b/ToolCollection/My Project/licenses.licx @@ -0,0 +1 @@ +DevExpress.XtraEditors.GridLookUpEdit, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/ToolCollection/app.config b/ToolCollection/app.config index f350c26..8ac8d9d 100644 --- a/ToolCollection/app.config +++ b/ToolCollection/app.config @@ -159,6 +159,9 @@ 01/01/0001 03:00:00 + + False + diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index ad03c52..1876203 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -362,13 +362,13 @@ Public Class frmNIVerknuepfungen Me.txtSelectAnweisung.Text = "" 'Finaler Index ja nein? If Me._selectedProfil.finalerIndex <> "" Then - Me.chbxStatusfertig.CheckState = CheckState.Checked + Me.chbxStatusfertig.Checked = My.Settings.vNIStatusFinished Me.cmbIndex_Statusfertig.Items.Clear() Me.cmbIndex_Statusfertig.ForeColor = Color.Black Me.cmbIndex_Statusfertig.Items.Add(Me._selectedProfil.finalerIndex) ' den index eintragen Me.cmbIndex_Statusfertig.SelectedIndex = 0 ' und direkt auswählen Else - Me.chbxStatusfertig.CheckState = CheckState.Unchecked + Me.chbxStatusfertig.Checked = My.Settings.vNIStatusFinished End If '#### VOLLTEXTINDEXER ##### ElseIf Me._selectedProfil.Ni_Art = "fulltext" Then @@ -2383,6 +2383,8 @@ Public Class frmNIVerknuepfungen Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chbxStatusfertig.CheckedChanged If Me.chbxStatusfertig.Checked Then Me.cmbIndex_Statusfertig.Enabled = True + My.Settings.vNIStatusFinished = chbxStatusfertig.Checked + My.Settings.Save() Try Me.cmbIndex_Statusfertig.Items.Clear() Dim indexe = _windream.GetIndicesByObjecttype(Me._selectedProfil.Dokumenttyp.aName, True, "NI") @@ -2395,12 +2397,13 @@ Public Class frmNIVerknuepfungen cmbIndex_Statusfertig.SelectedIndex = cmbIndex_Statusfertig.FindStringExact(Me._selectedProfil.finalerIndex) End If - Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der windream-Indexe in die Auswahlliste 'cmbIndex_Statusfertig'") End Try Else Me.cmbIndex_Statusfertig.Enabled = False + My.Settings.vNIStatusFinished = chbxStatusfertig.Checked + My.Settings.Save() If Me._selectedProfil IsNot Nothing Then Me._selectedProfil.finalerIndex = "" Me._selectedProfil.setChanged() @@ -2713,10 +2716,10 @@ Public Class frmNIVerknuepfungen Me._selectedProfil.checkIndexsql = txtCheckIndexSQL.Text - If Not Me._selectedProfil.checkIndexsql = Me._selectedProfil.OriginalcheckIndexsql Then - btnSaveAll.Enabled = True - Me._selectedProfil.setChanged() - End If + If Not Me._selectedProfil.checkIndexsql = Me._selectedProfil.OriginalcheckIndexsql Then + btnSaveAll.Enabled = True + Me._selectedProfil.setChanged() + End If End If @@ -3592,7 +3595,7 @@ Public Class frmNIVerknuepfungen End If Case 2 If Me._selectedProfil IsNot Nothing Then - chbxStatusfertig.Checked = True + chbxStatusfertig.Checked = My.Settings.vNIStatusFinished End If End Select From 032b28eb98f1380b2e61d7e3b286fdce9b10e6b6 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 6 Oct 2025 13:23:37 +0200 Subject: [PATCH 21/90] Assambly auf 2.9.9.0 --- ToolCollection/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ToolCollection/My Project/AssemblyInfo.vb b/ToolCollection/My Project/AssemblyInfo.vb index 762ec62..30c89f8 100644 --- a/ToolCollection/My Project/AssemblyInfo.vb +++ b/ToolCollection/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From 1bfbfe0c54b79e196c70b72c7a2bd310f5eca762 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Tue, 7 Oct 2025 09:34:31 +0200 Subject: [PATCH 22/90] Speichern beim Erstellen von Links optimiert. - frmNIVerknuepfungen --- ToolCollection/frmNIVerknuepfungen.vb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 1876203..48953f2 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -1424,8 +1424,8 @@ Public Class frmNIVerknuepfungen Me.txtManIndexwert.Text = "" End If ' definieren das am aktuellen Profil Änderungen vorgenommen wurden - Me._selectedProfil.setChanged() - Me._selectedProfil._links.setLinksChanged() + 'Me._selectedProfil.setChanged() + 'Me._selectedProfil._links.setLinksChanged() End If Catch ex As Exception @@ -1468,8 +1468,8 @@ Public Class frmNIVerknuepfungen ' Me.lbxIndexDatei.Items.Remove(Me.lbxIndexDatei.SelectedItem) ' definieren das am aktuellen Profil Änderungen vorgenommen wurden - Me._selectedProfil.setChanged() - Me._selectedProfil._links.setLinksChanged() + 'Me._selectedProfil.setChanged() + 'Me._selectedProfil._links.setLinksChanged() 'Else ' MsgBox("Bitte wählen Sie einen Orangefarbenen Unterknoten aus, da dieser den Pfad innerhalb der xml-Datei zum indexierenden Wert beschreibt!", MsgBoxStyle.Exclamation, "Falsche Wahl:") End If @@ -1530,8 +1530,8 @@ Public Class frmNIVerknuepfungen End If ' definieren das am aktuellen Profil Änderungen vorgenommen wurden - Me._selectedProfil.setChanged() - Me._selectedProfil._links.setLinksChanged() + 'Me._selectedProfil.setChanged() + 'Me._selectedProfil._links.setLinksChanged() 'Else ' MsgBox("Bitte wählen Sie einen Orangefarbenen Unterknoten aus, da dieser den Pfad innerhalb der xml-Datei zum indexierenden Wert beschreibt!", MsgBoxStyle.Exclamation, "Falsche Wahl:") End If @@ -1577,8 +1577,8 @@ Public Class frmNIVerknuepfungen Me.txtManIndexwert.Text = "" End If ' definieren das am aktuellen Profil Änderungen vorgenommen wurden - Me._selectedProfil.setChanged() - Me._selectedProfil._links.setLinksChanged() + 'Me._selectedProfil.setChanged() + 'Me._selectedProfil._links.setLinksChanged() End If Catch ex As Exception From 359700e6837fbc8fcc763948d112eb5592a51c98 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 9 Oct 2025 15:09:10 +0200 Subject: [PATCH 23/90] Speichern und Laden: deskriptiver Index, Checkbox Zusatzoptoinen - frmNIVerknuepfungen --- ToolCollection/frmNIVerknuepfungen.vb | 131 ++++++++++++++++++-------- 1 file changed, 94 insertions(+), 37 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 48953f2..154aa5a 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -22,7 +22,8 @@ Public Class frmNIVerknuepfungen Private _flagIgnoreVisibilityChanged As Boolean = False Private _flagIgnoreCheckedChanged As Boolean = False Private _formloaded As Boolean = False - Private selectedIndex_Type As String + Private _selectedIndex_Type As String + Private _isLoading As Boolean = False Public Shared vSQL As String Public Shared vstartwert As String @@ -168,6 +169,7 @@ Public Class frmNIVerknuepfungen ''' Name des zu ladenden Profils ''' Private Sub LoadSelectedProfile(ByVal profilname As String) + Me._isLoading = True Try ' setzt erst einmal alles zurück Me.tabctrlbottom.Visible = True @@ -221,7 +223,7 @@ Public Class frmNIVerknuepfungen End If 'Überprüfungsselect - Me.txtCheckIndexSQL.Text = Me._selectedProfil.checkIndexsql + Me.txtCheckIndexSQL.Text = "" 'Move and Rename aktiv? If Me._selectedProfil.SQL_Anweisung IsNot Nothing Then If Me._selectedProfil.SQL_Anweisung <> "" Then @@ -475,6 +477,7 @@ Public Class frmNIVerknuepfungen Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden des Profils") End Try + Me._isLoading = False End Sub @@ -2005,9 +2008,9 @@ Public Class frmNIVerknuepfungen If Me.lvwVerknuepfungen.SelectedItems.Count > 0 Then If Me._selectedProfil._links.selectedLink IsNot Nothing Then 'Radiobuttons Vektor InsertState Überprüfen - selectedIndex_Type = _windreamNI.GetIndex_Type(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text) + _selectedIndex_Type = _windreamNI.GetIndex_Type(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text) visinvisible_Vektor_ins_State() - If selectedIndex_Type.StartsWith("Vektor") Then + If _selectedIndex_Type.StartsWith("Vektor") Then Me.Changeinaction = True Select Case Me._selectedProfil._links.selectedLink.vktins_state Case 1 @@ -2316,6 +2319,7 @@ Public Class frmNIVerknuepfungen Select Case Me.DialogResult Case DialogResult.OK + SaveCheckStatusFinished() If Not Me._selectedProfil.IsSaved Then SaveProfile() If Not Me._selectedProfil._links.IsLinksSaved Then SaveLinks() Case DialogResult.Cancel @@ -2327,6 +2331,8 @@ Public Class frmNIVerknuepfungen Dim msgResult As MsgBoxResult = MsgBox("Möchten Sie die Änderungen speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen?") If msgResult = MsgBoxResult.Yes Then + SaveCheckStatusFinished() + If Not Me._selectedProfil.IsSaved Then SaveProfile() End If @@ -2366,7 +2372,6 @@ Public Class frmNIVerknuepfungen Me.SplitContainer1.Visible = False Me.pnlfulltext.Visible = False End If - End Sub Private Sub btnEindIndex_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEindIndex.Click Dim text As String = Me.txteindeutigerIndex.Text @@ -2380,34 +2385,51 @@ Public Class frmNIVerknuepfungen End Sub - Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chbxStatusfertig.CheckedChanged - If Me.chbxStatusfertig.Checked Then - Me.cmbIndex_Statusfertig.Enabled = True - My.Settings.vNIStatusFinished = chbxStatusfertig.Checked - My.Settings.Save() - Try - Me.cmbIndex_Statusfertig.Items.Clear() - Dim indexe = _windream.GetIndicesByObjecttype(Me._selectedProfil.Dokumenttyp.aName, True, "NI") - If indexe IsNot Nothing Then - For Each index As String In indexe - Me.cmbIndex_Statusfertig.Items.Add(index) - Next - End If - If Not IsNothing(Me._selectedProfil.finalerIndex) Then - cmbIndex_Statusfertig.SelectedIndex = cmbIndex_Statusfertig.FindStringExact(Me._selectedProfil.finalerIndex) - End If + Private Sub SaveCheckStatusFinished() + My.Settings.vNIStatusFinished = chbxStatusfertig.Checked + My.Settings.Save() + End Sub - Catch ex As Exception - MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der windream-Indexe in die Auswahlliste 'cmbIndex_Statusfertig'") - End Try - Else - Me.cmbIndex_Statusfertig.Enabled = False - My.Settings.vNIStatusFinished = chbxStatusfertig.Checked - My.Settings.Save() - If Me._selectedProfil IsNot Nothing Then - Me._selectedProfil.finalerIndex = "" - Me._selectedProfil.setChanged() + Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chbxStatusfertig.CheckedChanged + If _isLoading = False Then + + If chbxStatusfertig.Checked Then + Me.cmbIndex_Statusfertig.Enabled = True + 'My.Settings.vNIStatusFinished = chbxStatusfertig.Checked + 'My.Settings.Save() + 'Me._selectedProfil.setChanged() + 'Me.btnSaveAll.Enabled = True + Try + Me.cmbIndex_Statusfertig.Items.Clear() + Dim indexe = _windream.GetIndicesByObjecttype(Me._selectedProfil.Dokumenttyp.aName, True, "NI") + If indexe IsNot Nothing Then + For Each index As String In indexe + Me.cmbIndex_Statusfertig.Items.Add(index) + Next + End If + If Not IsNothing(Me._selectedProfil.finalerIndex) Then + cmbIndex_Statusfertig.SelectedIndex = cmbIndex_Statusfertig.FindStringExact(Me._selectedProfil.finalerIndex) + End If + + Me._selectedProfil.setChanged() + Me.btnSaveAll.Enabled = True + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der windream-Indexe in die Auswahlliste 'cmbIndex_Statusfertig'") + End Try + Else + Me.cmbIndex_Statusfertig.Enabled = False + 'My.Settings.vNIStatusFinished = chbxStatusfertig.Checked + 'My.Settings.Save() + 'Me._selectedProfil.setChanged() + 'Me.btnSaveAll.Enabled = True + If Me._selectedProfil IsNot Nothing Then + Me._selectedProfil.finalerIndex = "" + Me._selectedProfil.setChanged() + Me.btnSaveAll.Enabled = True + End If End If + Else + Exit Sub End If End Sub @@ -2695,8 +2717,8 @@ Public Class frmNIVerknuepfungen 'End Sub Private Sub SaveProfile() - If Me.txtCheckIndexSQL.Text <> "" Then - Try + 'If Me.txtCheckIndexSQL.Text <> "" Then + Try ' die Änderungen speichern If Me._selectedProfil.Save(True, "profile") = True Then Me._selectedProfil.setSaved() @@ -2707,7 +2729,7 @@ Public Class frmNIVerknuepfungen Catch ex As Exception MsgBox("Fehler beim Speichern des SQL-Befehles." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Speichern eines SQL-Befehls.") End Try - End If + 'End If End Sub Private Sub txtCheckIndexSQL_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCheckIndexSQL.TextChanged @@ -2723,6 +2745,40 @@ Public Class frmNIVerknuepfungen End If + + 'Try + ' ' wenn im ListView eine Zeile selektiert wurde + ' If Me.lvwVerknuepfungen.SelectedItems.Count > 0 Then + ' ' Überprüfen ob eingegebener Wert gepeichert werden muß? + ' Dim SQL_ORIGIN As String = Me._selectedProfil._links.getLinkByValues(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text, + ' Me.lvwVerknuepfungen.SelectedItems(0).SubItems(2).Text).getSelectAnweisung().ToString + ' If SQL_ORIGIN <> Me.txtSelectAnweisung.Text Then + ' With btnSaveAll + ' .Enabled = True + ' .ForeColor = Drawing.Color.Black + ' End With + ' End If + ' ' die Informationen der selektierten Verknüpfung auslesen + ' Me._selectedProfil._links.getLinkByValues(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text, + ' Me.lvwVerknuepfungen.SelectedItems(0).SubItems(2).Text).setSelectAnweisung(Me.txtSelectAnweisung.Text) + ' Me.btnSaveAll.Enabled = True + ' Me._selectedProfil.setChanged() + ' Me._selectedProfil._links.setLinksChanged() + ' 'Jetzt den Startwert bestimmen + ' 'MsgBox("[%" & Me.lvwVerbunden.SelectedItems(0).SubItems(0).Text & "]") + ' If Me.txteindeutigerIndex.Text <> "" Then + ' If Me.txtSelectAnweisung.Text.Contains(Me.txteindeutigerIndex.Text) Then + ' Me.lblSQLTest.Text = "Testwert für eind. Index: " & "[%" & Me.txteindeutigerIndex.Text & "]" + ' End If + ' End If + + ' End If + + 'Catch ex As Exception + ' MsgBox("Die Verknüpfung konnte nicht angelegt werden." & vbNewLine & vbNewLine & ex.Message, MsgBoxStyle.Exclamation, "Fehler beim Anlegen einer Verknüpfung") + 'End Try + + End Sub Private Sub txteindeutigerIndex_TextChanged(sender As System.Object, e As System.EventArgs) Handles txteindeutigerIndex.TextChanged @@ -3503,13 +3559,13 @@ Public Class frmNIVerknuepfungen Me.chkboxWhitespace.Checked = False Me.txtregex.Text = "" End Select - selectedIndex_Type = _windreamNI.GetIndex_Type(lbxWMIndex.SelectedItem) - If selectedIndex_Type Is Nothing = False Then + _selectedIndex_Type = _windreamNI.GetIndex_Type(lbxWMIndex.SelectedItem) + If _selectedIndex_Type Is Nothing = False Then visinvisible_Vektor_ins_State() End If End Sub Sub visinvisible_Vektor_ins_State() - If selectedIndex_Type.StartsWith("Vektor") Then + If _selectedIndex_Type.StartsWith("Vektor") Then Me.rbvkt_add.Visible = True Me.rbvkt_overwrite.Visible = True Me.chkvkt_Dublette.Visible = True @@ -3679,6 +3735,7 @@ Public Class frmNIVerknuepfungen End Sub Private Sub btnSaveAll_Click(sender As Object, e As EventArgs) Handles btnSaveAll.Click + SaveCheckStatusFinished() SaveLinks() SaveProfile() End Sub From 13751aac22e196f57cdc9be56e7767f583c17589 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 13 Oct 2025 16:03:29 +0200 Subject: [PATCH 24/90] Zusatzoptionen Laden der Indexe - frmNIVerknuepfungen --- ToolCollection/frmNIVerknuepfungen.vb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 154aa5a..8d85581 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -2439,6 +2439,7 @@ Public Class frmNIVerknuepfungen Me._selectedProfil.finalerIndex = cmbIndex_Statusfertig.SelectedItem If Not Me._selectedProfil.finalerIndex = Me._selectedProfil.OriginalfinalerIndex Then Me._selectedProfil.setChanged() + btnSaveAll.Enabled = True End If End If End If @@ -3652,7 +3653,24 @@ Public Class frmNIVerknuepfungen Case 2 If Me._selectedProfil IsNot Nothing Then chbxStatusfertig.Checked = My.Settings.vNIStatusFinished + cmbIndex_Statusfertig.Enabled = True + Try + Me.cmbIndex_Statusfertig.Items.Clear() + Dim indexe = _windream.GetIndicesByObjecttype(Me._selectedProfil.Dokumenttyp.aName, True, "NI") + If indexe IsNot Nothing Then + For Each index As String In indexe + Me.cmbIndex_Statusfertig.Items.Add(index) + Next + End If + If Not IsNothing(Me._selectedProfil.finalerIndex) Then + cmbIndex_Statusfertig.SelectedIndex = cmbIndex_Statusfertig.FindStringExact(Me._selectedProfil.finalerIndex) + End If + 'Me._selectedProfil.setChanged() + 'Me.btnSaveAll.Enabled = True + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der windream-Indexe in die Auswahlliste 'cmbIndex_Statusfertig'") + End Try End If End Select End Sub From 6422510d019144cb670d4392801cfbed7981e1f7 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 15 Oct 2025 08:43:30 +0200 Subject: [PATCH 25/90] Speichern und Laden von deskriptiven Index aktualisiert. - frmNIVerknuepfungen --- ToolCollection/frmNIVerknuepfungen.vb | 36 +-------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 8d85581..f302aa6 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -223,7 +223,7 @@ Public Class frmNIVerknuepfungen End If 'Überprüfungsselect - Me.txtCheckIndexSQL.Text = "" + Me.txtCheckIndexSQL.Text = Me._selectedProfil.checkIndexsql 'Move and Rename aktiv? If Me._selectedProfil.SQL_Anweisung IsNot Nothing Then If Me._selectedProfil.SQL_Anweisung <> "" Then @@ -2746,40 +2746,6 @@ Public Class frmNIVerknuepfungen End If - - 'Try - ' ' wenn im ListView eine Zeile selektiert wurde - ' If Me.lvwVerknuepfungen.SelectedItems.Count > 0 Then - ' ' Überprüfen ob eingegebener Wert gepeichert werden muß? - ' Dim SQL_ORIGIN As String = Me._selectedProfil._links.getLinkByValues(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text, - ' Me.lvwVerknuepfungen.SelectedItems(0).SubItems(2).Text).getSelectAnweisung().ToString - ' If SQL_ORIGIN <> Me.txtSelectAnweisung.Text Then - ' With btnSaveAll - ' .Enabled = True - ' .ForeColor = Drawing.Color.Black - ' End With - ' End If - ' ' die Informationen der selektierten Verknüpfung auslesen - ' Me._selectedProfil._links.getLinkByValues(Me.lvwVerknuepfungen.SelectedItems(0).SubItems(0).Text, Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text, - ' Me.lvwVerknuepfungen.SelectedItems(0).SubItems(2).Text).setSelectAnweisung(Me.txtSelectAnweisung.Text) - ' Me.btnSaveAll.Enabled = True - ' Me._selectedProfil.setChanged() - ' Me._selectedProfil._links.setLinksChanged() - ' 'Jetzt den Startwert bestimmen - ' 'MsgBox("[%" & Me.lvwVerbunden.SelectedItems(0).SubItems(0).Text & "]") - ' If Me.txteindeutigerIndex.Text <> "" Then - ' If Me.txtSelectAnweisung.Text.Contains(Me.txteindeutigerIndex.Text) Then - ' Me.lblSQLTest.Text = "Testwert für eind. Index: " & "[%" & Me.txteindeutigerIndex.Text & "]" - ' End If - ' End If - - ' End If - - 'Catch ex As Exception - ' MsgBox("Die Verknüpfung konnte nicht angelegt werden." & vbNewLine & vbNewLine & ex.Message, MsgBoxStyle.Exclamation, "Fehler beim Anlegen einer Verknüpfung") - 'End Try - - End Sub Private Sub txteindeutigerIndex_TextChanged(sender As System.Object, e As System.EventArgs) Handles txteindeutigerIndex.TextChanged From 7e03b01d8f2985aceea84f29b38659e87b507a6b Mon Sep 17 00:00:00 2001 From: OlgunR Date: Tue, 21 Oct 2025 10:51:49 +0200 Subject: [PATCH 26/90] =?UTF-8?q?Grid=20zur=20Profil=C3=BCbersicht=20bei?= =?UTF-8?q?=20NI=20-=20ClassNIProfile,=20frmNIHauptseite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/ClassNIProfile.vb | 2 +- ToolCollection/My Project/licenses.licx | 3 +- ToolCollection/ToolCollection.vbproj | 4 ++ ToolCollection/frmNIHauptseite.Designer.vb | 41 +++++++++++++++++++- ToolCollection/frmNIHauptseite.resx | 3 ++ ToolCollection/frmNIHauptseite.vb | 27 +++++++++++++ ToolCollection/frmNIProfileigenschaften.resx | 2 +- 7 files changed, 77 insertions(+), 5 deletions(-) diff --git a/ToolCollection/ClassNIProfile.vb b/ToolCollection/ClassNIProfile.vb index 3e1097d..b385864 100644 --- a/ToolCollection/ClassNIProfile.vb +++ b/ToolCollection/ClassNIProfile.vb @@ -127,7 +127,7 @@ Public Class ClassNIProfile xmlProfil.Attributes("NB_AD").Value, xmlProfil.Attributes("getordneridx").Value, xmlProfil.Attributes("ordnerType").Value, - xmlProfil.Attributes("ordnerType_eb").Value, + xmlProfil.Attributes("ordnerType_eb").Value, xmlProfil.Attributes("crfolderindex").Value, xmlProfil.Attributes("crfolder_folder").Value, xmlProfil.Attributes("crfolder_move").Value) diff --git a/ToolCollection/My Project/licenses.licx b/ToolCollection/My Project/licenses.licx index 53ac073..f2b3f89 100644 --- a/ToolCollection/My Project/licenses.licx +++ b/ToolCollection/My Project/licenses.licx @@ -1 +1,2 @@ -DevExpress.XtraEditors.GridLookUpEdit, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/ToolCollection/ToolCollection.vbproj b/ToolCollection/ToolCollection.vbproj index 0e203b8..60e3753 100644 --- a/ToolCollection/ToolCollection.vbproj +++ b/ToolCollection/ToolCollection.vbproj @@ -92,6 +92,9 @@ + + + ..\..\..\2_DLL Projekte\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll @@ -526,6 +529,7 @@ frmUebersicht.vb + VbMyResourcesResXFileCodeGenerator Resources.Designer.vb diff --git a/ToolCollection/frmNIHauptseite.Designer.vb b/ToolCollection/frmNIHauptseite.Designer.vb index de947a0..74575f5 100644 --- a/ToolCollection/frmNIHauptseite.Designer.vb +++ b/ToolCollection/frmNIHauptseite.Designer.vb @@ -49,6 +49,9 @@ Partial Class frmNIHauptseite Me.Label4 = New System.Windows.Forms.Label() Me.numIntervall = New System.Windows.Forms.NumericUpDown() Me.TabPage2 = New System.Windows.Forms.TabPage() + Me.gridProfileOverview = New DevExpress.XtraGrid.GridControl() + Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView() + Me.RepositoryItemCheckEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit() Me.timRun = New System.Windows.Forms.Timer(Me.components) Me.DS_More = New ToolCollection.DS_More() Me.VWMO_RE_DOKUMENTARTZUORDNUNGBindingSource = New System.Windows.Forms.BindingSource(Me.components) @@ -67,6 +70,10 @@ Partial Class frmNIHauptseite CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnlInfos.SuspendLayout() CType(Me.numIntervall, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TabPage2.SuspendLayout() + CType(Me.gridProfileOverview, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.RepositoryItemCheckEdit1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DS_More, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.VWMO_RE_DOKUMENTARTZUORDNUNGBindingSource, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TBMO_RE_HISTORYBindingSource, System.ComponentModel.ISupportInitialize).BeginInit() @@ -240,7 +247,7 @@ Partial Class frmNIHauptseite Me.Label8.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label8.Location = New System.Drawing.Point(14, 30) Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(83, 13) + Me.Label8.Size = New System.Drawing.Size(84, 13) Me.Label8.TabIndex = 30 Me.Label8.Text = "In Bearbeitung" ' @@ -334,14 +341,37 @@ Partial Class frmNIHauptseite ' 'TabPage2 ' + Me.TabPage2.Controls.Add(Me.gridProfileOverview) Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) Me.TabPage2.Size = New System.Drawing.Size(766, 521) Me.TabPage2.TabIndex = 1 - Me.TabPage2.Text = "Konfigurationen" + Me.TabPage2.Text = "Profilübersicht" Me.TabPage2.UseVisualStyleBackColor = True ' + 'gridProfileOverview + ' + Me.gridProfileOverview.Dock = System.Windows.Forms.DockStyle.Fill + Me.gridProfileOverview.Location = New System.Drawing.Point(3, 3) + Me.gridProfileOverview.MainView = Me.GridView1 + Me.gridProfileOverview.Name = "gridProfileOverview" + Me.gridProfileOverview.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemCheckEdit1}) + Me.gridProfileOverview.Size = New System.Drawing.Size(760, 515) + Me.gridProfileOverview.TabIndex = 0 + Me.gridProfileOverview.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1}) + ' + 'GridView1 + ' + Me.GridView1.GridControl = Me.gridProfileOverview + Me.GridView1.Name = "GridView1" + Me.GridView1.OptionsView.ShowGroupPanel = False + ' + 'RepositoryItemCheckEdit1 + ' + Me.RepositoryItemCheckEdit1.AutoHeight = False + Me.RepositoryItemCheckEdit1.Name = "RepositoryItemCheckEdit1" + ' 'timRun ' Me.timRun.Interval = 60 @@ -426,6 +456,10 @@ Partial Class frmNIHauptseite Me.pnlInfos.ResumeLayout(False) Me.pnlInfos.PerformLayout() CType(Me.numIntervall, System.ComponentModel.ISupportInitialize).EndInit() + Me.TabPage2.ResumeLayout(False) + CType(Me.gridProfileOverview, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.RepositoryItemCheckEdit1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.DS_More, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.VWMO_RE_DOKUMENTARTZUORDNUNGBindingSource, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TBMO_RE_HISTORYBindingSource, System.ComponentModel.ISupportInitialize).EndInit() @@ -472,4 +506,7 @@ Partial Class frmNIHauptseite Friend WithEvents TBTC_MOVE_RENAMEBindingSource As BindingSource Friend WithEvents TBTC_MOVE_RENAMETableAdapter As MyDatasetTableAdapters.TBTC_MOVE_RENAMETableAdapter Friend WithEvents TableAdapterManager1 As MyDatasetTableAdapters.TableAdapterManager + Friend WithEvents gridProfileOverview As DevExpress.XtraGrid.GridControl + Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents RepositoryItemCheckEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit End Class diff --git a/ToolCollection/frmNIHauptseite.resx b/ToolCollection/frmNIHauptseite.resx index 1705b2d..623d18e 100644 --- a/ToolCollection/frmNIHauptseite.resx +++ b/ToolCollection/frmNIHauptseite.resx @@ -120,6 +120,9 @@ 248, 56 + + 248, 56 + Es wird empfohlen, das Intervall nicht auf weniger als 30 Minuten zu setzen, da der nächste Nachindexierungsdurchlauf nur gestartet werden kann, wenn der vorherige beendet wurde. Wenn zu erwarten ist, dass viele Dokumente nachindexiert werden sollen, sollte der Intervall für diesen Durchlauf entsprechend hoch gesetzt werden ( > 2 Stunden). diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index dda797d..51e9352 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -122,7 +122,34 @@ Public Class frmNIHauptseite End If End Sub + + Private Sub LoadProfilesIntoGrid() + + ClassNIProfile.Init() + + Dim dtProfiles As New DataTable + dtProfiles.Columns.Add("Aktiv", GetType(String)) + dtProfiles.Columns.Add("Name", GetType(String)) + dtProfiles.Columns.Add("Objekttyp", GetType(String)) + + If ClassNIProfile.Profile IsNot Nothing Then + For Each profile As ClassNIProfil In ClassNIProfile.Profile + Dim row As DataRow = dtProfiles.NewRow() + row("Aktiv") = If(Convert.ToBoolean(profile.Aktiv), "Aktiv", "Inaktiv") + row("Name") = profile.Profilname + row("Objekttyp") = profile.DokumenttypString + dtProfiles.Rows.Add(row) + Next + End If + + Me.gridProfileOverview.DataSource = dtProfiles + + End Sub + Private Sub frmNIHauptseite_Load(sender As Object, e As System.EventArgs) Handles Me.Load + + LoadProfilesIntoGrid() + 'Try ' 'LoadAllModules() ' TBTC_MOVE_RENAMETableAdapter.Connection.ConnectionString = My.Settings.DDECMConString diff --git a/ToolCollection/frmNIProfileigenschaften.resx b/ToolCollection/frmNIProfileigenschaften.resx index d1e981a..f785c8c 100644 --- a/ToolCollection/frmNIProfileigenschaften.resx +++ b/ToolCollection/frmNIProfileigenschaften.resx @@ -161,7 +161,7 @@ einen Startindex erhält, der nicht in der Datenbank existiert. Diese Kennzeichn AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAK - CQAAAk1TRnQBSQFMAgEBAgEAAaABAAGgAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAAagBAAGoAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From 1cd5533deed1151cd9d89b6a6b68236baf3c7dec Mon Sep 17 00:00:00 2001 From: OlgunR Date: Tue, 21 Oct 2025 11:46:33 +0200 Subject: [PATCH 27/90] Instanzname vergeben und anzeigen - frmGrundeinstellungen, frmStart --- .../My Project/Settings.Designer.vb | 12 ++ ToolCollection/My Project/Settings.settings | 3 + ToolCollection/app.config | 3 + .../frmGrundeinstellungen.Designer.vb | 184 +++++++++++------- ToolCollection/frmGrundeinstellungen.vb | 12 +- ToolCollection/frmStart.vb | 7 +- 6 files changed, 146 insertions(+), 75 deletions(-) diff --git a/ToolCollection/My Project/Settings.Designer.vb b/ToolCollection/My Project/Settings.Designer.vb index e1a7777..21e5005 100644 --- a/ToolCollection/My Project/Settings.Designer.vb +++ b/ToolCollection/My Project/Settings.Designer.vb @@ -745,6 +745,18 @@ Namespace My Me("vNIStatusFinished") = value End Set End Property + + _ + Public Property vInstanceName() As String + Get + Return CType(Me("vInstanceName"),String) + End Get + Set + Me("vInstanceName") = value + End Set + End Property End Class End Namespace diff --git a/ToolCollection/My Project/Settings.settings b/ToolCollection/My Project/Settings.settings index e0a5519..9399d37 100644 --- a/ToolCollection/My Project/Settings.settings +++ b/ToolCollection/My Project/Settings.settings @@ -184,5 +184,8 @@ False + + + \ No newline at end of file diff --git a/ToolCollection/app.config b/ToolCollection/app.config index 8ac8d9d..31cb7d1 100644 --- a/ToolCollection/app.config +++ b/ToolCollection/app.config @@ -162,6 +162,9 @@ False + + + diff --git a/ToolCollection/frmGrundeinstellungen.Designer.vb b/ToolCollection/frmGrundeinstellungen.Designer.vb index f2928fd..a99c9e9 100644 --- a/ToolCollection/frmGrundeinstellungen.Designer.vb +++ b/ToolCollection/frmGrundeinstellungen.Designer.vb @@ -32,29 +32,33 @@ Partial Class frmGrundeinstellungen Me.lblTimeDeleteLogs = New System.Windows.Forms.Label() Me.txtTimeDeleteLogs = New System.Windows.Forms.TextBox() Me.chkAutoDeleteLogs = New System.Windows.Forms.CheckBox() - Me.TextBox4 = New System.Windows.Forms.TextBox() Me.Label6 = New System.Windows.Forms.Label() - Me.TextBox1 = New System.Windows.Forms.TextBox() - Me.TextBox2 = New System.Windows.Forms.TextBox() Me.GroupBox2 = New System.Windows.Forms.GroupBox() Me.Label4 = New System.Windows.Forms.Label() Me.cmbCores = New System.Windows.Forms.ComboBox() Me.GroupBox3 = New System.Windows.Forms.GroupBox() - Me.txterrorIndex = New System.Windows.Forms.TextBox() Me.Label5 = New System.Windows.Forms.Label() Me.GroupBox4 = New System.Windows.Forms.GroupBox() - Me.TextBox3 = New System.Windows.Forms.TextBox() Me.GroupBox5 = New System.Windows.Forms.GroupBox() - Me.cmbSleeptill = New System.Windows.Forms.ComboBox() Me.Label9 = New System.Windows.Forms.Label() - Me.cmbSleepFrom = New System.Windows.Forms.ComboBox() Me.Label8 = New System.Windows.Forms.Label() Me.Label7 = New System.Windows.Forms.Label() + Me.GroupBox6 = New System.Windows.Forms.GroupBox() + Me.txtInstanceName = New System.Windows.Forms.TextBox() + Me.Label10 = New System.Windows.Forms.Label() + Me.cmbSleeptill = New System.Windows.Forms.ComboBox() + Me.cmbSleepFrom = New System.Windows.Forms.ComboBox() + Me.TextBox3 = New System.Windows.Forms.TextBox() + Me.txterrorIndex = New System.Windows.Forms.TextBox() + Me.TextBox4 = New System.Windows.Forms.TextBox() + Me.TextBox1 = New System.Windows.Forms.TextBox() + Me.TextBox2 = New System.Windows.Forms.TextBox() Me.GroupBox1.SuspendLayout() Me.GroupBox2.SuspendLayout() Me.GroupBox3.SuspendLayout() Me.GroupBox4.SuspendLayout() Me.GroupBox5.SuspendLayout() + Me.GroupBox6.SuspendLayout() Me.SuspendLayout() ' 'Label1 @@ -150,42 +154,15 @@ Partial Class frmGrundeinstellungen Me.chkAutoDeleteLogs.Text = "Automatisches Löschen" Me.chkAutoDeleteLogs.UseVisualStyleBackColor = True ' - 'TextBox4 - ' - Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ToolCollection.My.MySettings.Default, "logolder_then", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) - Me.TextBox4.Location = New System.Drawing.Point(232, 79) - Me.TextBox4.Name = "TextBox4" - Me.TextBox4.Size = New System.Drawing.Size(84, 22) - Me.TextBox4.TabIndex = 7 - Me.TextBox4.Text = Global.ToolCollection.My.MySettings.Default.logolder_then - ' 'Label6 ' Me.Label6.AutoSize = True Me.Label6.Location = New System.Drawing.Point(229, 63) Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(199, 13) + Me.Label6.Size = New System.Drawing.Size(198, 13) Me.Label6.TabIndex = 6 Me.Label6.Text = "LogDateien löschen - ""Älter als""-Tage:" ' - 'TextBox1 - ' - Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ToolCollection.My.MySettings.Default, "vLogNI", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) - Me.TextBox1.Location = New System.Drawing.Point(9, 34) - Me.TextBox1.Name = "TextBox1" - Me.TextBox1.Size = New System.Drawing.Size(188, 22) - Me.TextBox1.TabIndex = 1 - Me.TextBox1.Text = Global.ToolCollection.My.MySettings.Default.vLogNI - ' - 'TextBox2 - ' - Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ToolCollection.My.MySettings.Default, "vLogDI", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) - Me.TextBox2.Location = New System.Drawing.Point(9, 79) - Me.TextBox2.Name = "TextBox2" - Me.TextBox2.Size = New System.Drawing.Size(188, 22) - Me.TextBox2.TabIndex = 3 - Me.TextBox2.Text = Global.ToolCollection.My.MySettings.Default.vLogDI - ' 'GroupBox2 ' Me.GroupBox2.Controls.Add(Me.Label4) @@ -228,15 +205,6 @@ Partial Class frmGrundeinstellungen Me.GroupBox3.TabStop = False Me.GroupBox3.Text = "Fehlerhandling:" ' - 'txterrorIndex - ' - Me.txterrorIndex.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ToolCollection.My.MySettings.Default, "ERROR_INDEX", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) - Me.txterrorIndex.Location = New System.Drawing.Point(15, 34) - Me.txterrorIndex.Name = "txterrorIndex" - Me.txterrorIndex.Size = New System.Drawing.Size(182, 22) - Me.txterrorIndex.TabIndex = 2 - Me.txterrorIndex.Text = Global.ToolCollection.My.MySettings.Default.ERROR_INDEX - ' 'Label5 ' Me.Label5.AutoSize = True @@ -257,14 +225,6 @@ Partial Class frmGrundeinstellungen Me.GroupBox4.TabStop = False Me.GroupBox4.Text = "Verweise" ' - 'TextBox3 - ' - Me.TextBox3.Location = New System.Drawing.Point(9, 21) - Me.TextBox3.Name = "TextBox3" - Me.TextBox3.Size = New System.Drawing.Size(188, 22) - Me.TextBox3.TabIndex = 0 - Me.TextBox3.Text = Global.ToolCollection.My.MySettings.Default.DLL_WMOTOOL - ' 'GroupBox5 ' Me.GroupBox5.Controls.Add(Me.cmbSleeptill) @@ -280,16 +240,6 @@ Partial Class frmGrundeinstellungen Me.GroupBox5.TabStop = False Me.GroupBox5.Text = "ToolCollection Sleep-Modus:" ' - 'cmbSleeptill - ' - Me.cmbSleeptill.FormattingEnabled = True - Me.cmbSleeptill.Items.AddRange(New Object() {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"}) - Me.cmbSleeptill.Location = New System.Drawing.Point(90, 69) - Me.cmbSleeptill.Name = "cmbSleeptill" - Me.cmbSleeptill.Size = New System.Drawing.Size(63, 21) - Me.cmbSleeptill.TabIndex = 4 - Me.cmbSleeptill.Text = Global.ToolCollection.My.MySettings.Default.Sleep_End - ' 'Label9 ' Me.Label9.AutoSize = True @@ -299,16 +249,6 @@ Partial Class frmGrundeinstellungen Me.Label9.TabIndex = 3 Me.Label9.Text = "Stunde bis" ' - 'cmbSleepFrom - ' - Me.cmbSleepFrom.FormattingEnabled = True - Me.cmbSleepFrom.Items.AddRange(New Object() {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"}) - Me.cmbSleepFrom.Location = New System.Drawing.Point(9, 69) - Me.cmbSleepFrom.Name = "cmbSleepFrom" - Me.cmbSleepFrom.Size = New System.Drawing.Size(63, 21) - Me.cmbSleepFrom.TabIndex = 2 - Me.cmbSleepFrom.Text = Global.ToolCollection.My.MySettings.Default.Sleep_Begin - ' 'Label8 ' Me.Label8.AutoSize = True @@ -328,12 +268,105 @@ Partial Class frmGrundeinstellungen Me.Label7.TabIndex = 0 Me.Label7.Text = "Bestimmen Sie hier die Zeitspanne in welcher weder ein Import " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "noch eine Nachind" & "exierung erfolgen soll:" + ' + 'GroupBox6 + ' + Me.GroupBox6.Controls.Add(Me.Label10) + Me.GroupBox6.Controls.Add(Me.txtInstanceName) + Me.GroupBox6.Dock = System.Windows.Forms.DockStyle.Top + Me.GroupBox6.Location = New System.Drawing.Point(0, 494) + Me.GroupBox6.Name = "GroupBox6" + Me.GroupBox6.Size = New System.Drawing.Size(470, 74) + Me.GroupBox6.TabIndex = 11 + Me.GroupBox6.TabStop = False + Me.GroupBox6.Text = "Instanz-Einstellungen" + ' + 'txtInstanceName + ' + Me.txtInstanceName.Location = New System.Drawing.Point(15, 36) + Me.txtInstanceName.Name = "txtInstanceName" + Me.txtInstanceName.Size = New System.Drawing.Size(182, 22) + Me.txtInstanceName.TabIndex = 0 + ' + 'Label10 + ' + Me.Label10.AutoSize = True + Me.Label10.Location = New System.Drawing.Point(12, 20) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(97, 13) + Me.Label10.TabIndex = 1 + Me.Label10.Text = "Name für Instanz:" + ' + 'cmbSleeptill + ' + Me.cmbSleeptill.FormattingEnabled = True + Me.cmbSleeptill.Items.AddRange(New Object() {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"}) + Me.cmbSleeptill.Location = New System.Drawing.Point(90, 69) + Me.cmbSleeptill.Name = "cmbSleeptill" + Me.cmbSleeptill.Size = New System.Drawing.Size(63, 21) + Me.cmbSleeptill.TabIndex = 4 + Me.cmbSleeptill.Text = Global.ToolCollection.My.MySettings.Default.Sleep_End + ' + 'cmbSleepFrom + ' + Me.cmbSleepFrom.FormattingEnabled = True + Me.cmbSleepFrom.Items.AddRange(New Object() {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"}) + Me.cmbSleepFrom.Location = New System.Drawing.Point(9, 69) + Me.cmbSleepFrom.Name = "cmbSleepFrom" + Me.cmbSleepFrom.Size = New System.Drawing.Size(63, 21) + Me.cmbSleepFrom.TabIndex = 2 + Me.cmbSleepFrom.Text = Global.ToolCollection.My.MySettings.Default.Sleep_Begin + ' + 'TextBox3 + ' + Me.TextBox3.Location = New System.Drawing.Point(15, 21) + Me.TextBox3.Name = "TextBox3" + Me.TextBox3.Size = New System.Drawing.Size(182, 22) + Me.TextBox3.TabIndex = 0 + Me.TextBox3.Text = Global.ToolCollection.My.MySettings.Default.DLL_WMOTOOL + ' + 'txterrorIndex + ' + Me.txterrorIndex.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ToolCollection.My.MySettings.Default, "ERROR_INDEX", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) + Me.txterrorIndex.Location = New System.Drawing.Point(15, 34) + Me.txterrorIndex.Name = "txterrorIndex" + Me.txterrorIndex.Size = New System.Drawing.Size(182, 22) + Me.txterrorIndex.TabIndex = 2 + Me.txterrorIndex.Text = Global.ToolCollection.My.MySettings.Default.ERROR_INDEX + ' + 'TextBox4 + ' + Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ToolCollection.My.MySettings.Default, "logolder_then", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) + Me.TextBox4.Location = New System.Drawing.Point(232, 79) + Me.TextBox4.Name = "TextBox4" + Me.TextBox4.Size = New System.Drawing.Size(84, 22) + Me.TextBox4.TabIndex = 7 + Me.TextBox4.Text = Global.ToolCollection.My.MySettings.Default.logolder_then + ' + 'TextBox1 + ' + Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ToolCollection.My.MySettings.Default, "vLogNI", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) + Me.TextBox1.Location = New System.Drawing.Point(9, 34) + Me.TextBox1.Name = "TextBox1" + Me.TextBox1.Size = New System.Drawing.Size(188, 22) + Me.TextBox1.TabIndex = 1 + Me.TextBox1.Text = Global.ToolCollection.My.MySettings.Default.vLogNI + ' + 'TextBox2 + ' + Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ToolCollection.My.MySettings.Default, "vLogDI", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) + Me.TextBox2.Location = New System.Drawing.Point(9, 79) + Me.TextBox2.Name = "TextBox2" + Me.TextBox2.Size = New System.Drawing.Size(188, 22) + Me.TextBox2.TabIndex = 3 + Me.TextBox2.Text = Global.ToolCollection.My.MySettings.Default.vLogDI ' 'frmGrundeinstellungen ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(470, 590) + Me.ClientSize = New System.Drawing.Size(470, 607) + Me.Controls.Add(Me.GroupBox6) Me.Controls.Add(Me.GroupBox5) Me.Controls.Add(Me.GroupBox4) Me.Controls.Add(Me.GroupBox3) @@ -353,6 +386,8 @@ Partial Class frmGrundeinstellungen Me.GroupBox4.PerformLayout() Me.GroupBox5.ResumeLayout(False) Me.GroupBox5.PerformLayout() + Me.GroupBox6.ResumeLayout(False) + Me.GroupBox6.PerformLayout() Me.ResumeLayout(False) End Sub @@ -383,4 +418,7 @@ Partial Class frmGrundeinstellungen Friend WithEvents lblTimeDeleteLogs As Label Friend WithEvents txtTimeDeleteLogs As TextBox Friend WithEvents lblLogDeleteTime As Label + Friend WithEvents GroupBox6 As GroupBox + Friend WithEvents Label10 As Label + Friend WithEvents txtInstanceName As TextBox End Class diff --git a/ToolCollection/frmGrundeinstellungen.vb b/ToolCollection/frmGrundeinstellungen.vb index 8079ba3..043431f 100644 --- a/ToolCollection/frmGrundeinstellungen.vb +++ b/ToolCollection/frmGrundeinstellungen.vb @@ -1,4 +1,6 @@ -Public Class frmGrundeinstellungen +Imports ToolCollection.My + +Public Class frmGrundeinstellungen Private Shared _Instance As frmGrundeinstellungen = Nothing Private _isLoading As Boolean = False @@ -98,6 +100,8 @@ Private Sub FrmGrundeinstellungen_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load _isLoading = True + txtInstanceName.Text = My.Settings.vInstanceName + Try If My.Settings.vAutoDeleteLogs Then chkAutoDeleteLogs.Checked = My.Settings.vAutoDeleteLogs @@ -138,4 +142,10 @@ frmStart.Instance().SetupTimerDeleteLogfiles() End If End Sub + + Private Sub txtInstanceName_TextChanged(sender As Object, e As EventArgs) Handles txtInstanceName.TextChanged + My.Settings.vInstanceName = txtInstanceName.Text + My.Settings.Save() + txtInstanceName.Text = My.Settings.vInstanceName + End Sub End Class \ No newline at end of file diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index cd378fc..8c0533c 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -129,6 +129,10 @@ Public Class frmStart End If End Sub + Private Sub CaptionForm() + Me.Text = Application.CompanyName & " - " & Application.ProductName & " - " & My.Settings.vInstanceName + End Sub + Private Sub FMStart_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load _Instance = Me @@ -157,7 +161,7 @@ Public Class frmStart 'Aktueller Benutzer Me.tslblVersion.Text = Environment.UserName.ToString - Me.Text = Application.CompanyName & "-" & Application.ProductName + CaptionForm() Me.tslblVersion.Text = "Version: " & My.Application.Info.Version.ToString 'Aktuelle Machine Me.Status_Machine.Text = My.Computer.Name @@ -490,6 +494,7 @@ Public Class frmStart Dim frm As New frmGrundeinstellungen frm = frmGrundeinstellungen.Instance frm.ShowDialog() + CaptionForm() Cursor = Cursors.Default End Sub From 94785369df2ce5a46db1251f35ce4486d0cc4c1f Mon Sep 17 00:00:00 2001 From: OlgunR Date: Tue, 21 Oct 2025 12:36:30 +0200 Subject: [PATCH 28/90] Laden des Instanznamens verbessert - frmStart --- ToolCollection/frmStart.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index 8c0533c..a50e1ca 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -130,7 +130,11 @@ Public Class frmStart End Sub Private Sub CaptionForm() - Me.Text = Application.CompanyName & " - " & Application.ProductName & " - " & My.Settings.vInstanceName + If String.IsNullOrWhiteSpace(My.Settings.vInstanceName) Then + Me.Text = Application.CompanyName & " - " & Application.ProductName + Else + Me.Text = Application.CompanyName & " - " & Application.ProductName & " - " & My.Settings.vInstanceName + End If End Sub Private Sub FMStart_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load From 4c27896b6909afc9315bb292526bfdb65796c228 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Tue, 21 Oct 2025 12:59:53 +0200 Subject: [PATCH 29/90] =?UTF-8?q?Grid=20f=C3=BCr=20NIProfile=20verbessert?= =?UTF-8?q?=20-=20frmNIHauptseite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/My Project/licenses.licx | 3 ++- ToolCollection/frmNIHauptseite.Designer.vb | 31 +++++++++++++++++++++- ToolCollection/frmNIHauptseite.resx | 3 --- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/ToolCollection/My Project/licenses.licx b/ToolCollection/My Project/licenses.licx index f2b3f89..f68392f 100644 --- a/ToolCollection/My Project/licenses.licx +++ b/ToolCollection/My Project/licenses.licx @@ -1,2 +1,3 @@ -DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/ToolCollection/frmNIHauptseite.Designer.vb b/ToolCollection/frmNIHauptseite.Designer.vb index 74575f5..2c9c43c 100644 --- a/ToolCollection/frmNIHauptseite.Designer.vb +++ b/ToolCollection/frmNIHauptseite.Designer.vb @@ -52,6 +52,8 @@ Partial Class frmNIHauptseite Me.gridProfileOverview = New DevExpress.XtraGrid.GridControl() Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView() Me.RepositoryItemCheckEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit() + Me.RepositoryItemGridLookUpEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit() + Me.RepositoryItemGridLookUpEdit1View = New DevExpress.XtraGrid.Views.Grid.GridView() Me.timRun = New System.Windows.Forms.Timer(Me.components) Me.DS_More = New ToolCollection.DS_More() Me.VWMO_RE_DOKUMENTARTZUORDNUNGBindingSource = New System.Windows.Forms.BindingSource(Me.components) @@ -74,6 +76,8 @@ Partial Class frmNIHauptseite CType(Me.gridProfileOverview, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemCheckEdit1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.RepositoryItemGridLookUpEdit1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.RepositoryItemGridLookUpEdit1View, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.DS_More, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.VWMO_RE_DOKUMENTARTZUORDNUNGBindingSource, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TBMO_RE_HISTORYBindingSource, System.ComponentModel.ISupportInitialize).BeginInit() @@ -356,7 +360,7 @@ Partial Class frmNIHauptseite Me.gridProfileOverview.Location = New System.Drawing.Point(3, 3) Me.gridProfileOverview.MainView = Me.GridView1 Me.gridProfileOverview.Name = "gridProfileOverview" - Me.gridProfileOverview.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemCheckEdit1}) + Me.gridProfileOverview.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemCheckEdit1, Me.RepositoryItemGridLookUpEdit1}) Me.gridProfileOverview.Size = New System.Drawing.Size(760, 515) Me.gridProfileOverview.TabIndex = 0 Me.gridProfileOverview.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1}) @@ -365,6 +369,13 @@ Partial Class frmNIHauptseite ' Me.GridView1.GridControl = Me.gridProfileOverview Me.GridView1.Name = "GridView1" + Me.GridView1.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.[False] + Me.GridView1.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.[False] + Me.GridView1.OptionsBehavior.Editable = False + Me.GridView1.OptionsClipboard.CopyColumnHeaders = DevExpress.Utils.DefaultBoolean.[False] + Me.GridView1.OptionsSelection.EnableAppearanceFocusedCell = False + Me.GridView1.OptionsView.EnableAppearanceEvenRow = True + Me.GridView1.OptionsView.ShowAutoFilterRow = True Me.GridView1.OptionsView.ShowGroupPanel = False ' 'RepositoryItemCheckEdit1 @@ -372,6 +383,20 @@ Partial Class frmNIHauptseite Me.RepositoryItemCheckEdit1.AutoHeight = False Me.RepositoryItemCheckEdit1.Name = "RepositoryItemCheckEdit1" ' + 'RepositoryItemGridLookUpEdit1 + ' + Me.RepositoryItemGridLookUpEdit1.AutoHeight = False + Me.RepositoryItemGridLookUpEdit1.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) + Me.RepositoryItemGridLookUpEdit1.Name = "RepositoryItemGridLookUpEdit1" + Me.RepositoryItemGridLookUpEdit1.PopupView = Me.RepositoryItemGridLookUpEdit1View + ' + 'RepositoryItemGridLookUpEdit1View + ' + Me.RepositoryItemGridLookUpEdit1View.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus + Me.RepositoryItemGridLookUpEdit1View.Name = "RepositoryItemGridLookUpEdit1View" + Me.RepositoryItemGridLookUpEdit1View.OptionsSelection.EnableAppearanceFocusedCell = False + Me.RepositoryItemGridLookUpEdit1View.OptionsView.ShowGroupPanel = False + ' 'timRun ' Me.timRun.Interval = 60 @@ -460,6 +485,8 @@ Partial Class frmNIHauptseite CType(Me.gridProfileOverview, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemCheckEdit1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.RepositoryItemGridLookUpEdit1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.RepositoryItemGridLookUpEdit1View, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.DS_More, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.VWMO_RE_DOKUMENTARTZUORDNUNGBindingSource, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TBMO_RE_HISTORYBindingSource, System.ComponentModel.ISupportInitialize).EndInit() @@ -509,4 +536,6 @@ Partial Class frmNIHauptseite Friend WithEvents gridProfileOverview As DevExpress.XtraGrid.GridControl Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView Friend WithEvents RepositoryItemCheckEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit + Friend WithEvents RepositoryItemGridLookUpEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit + Friend WithEvents RepositoryItemGridLookUpEdit1View As DevExpress.XtraGrid.Views.Grid.GridView End Class diff --git a/ToolCollection/frmNIHauptseite.resx b/ToolCollection/frmNIHauptseite.resx index 623d18e..1705b2d 100644 --- a/ToolCollection/frmNIHauptseite.resx +++ b/ToolCollection/frmNIHauptseite.resx @@ -120,9 +120,6 @@ 248, 56 - - 248, 56 - Es wird empfohlen, das Intervall nicht auf weniger als 30 Minuten zu setzen, da der nächste Nachindexierungsdurchlauf nur gestartet werden kann, wenn der vorherige beendet wurde. Wenn zu erwarten ist, dass viele Dokumente nachindexiert werden sollen, sollte der Intervall für diesen Durchlauf entsprechend hoch gesetzt werden ( > 2 Stunden). From 73de4042ab60867abdf24527b23bb34af87eeb9c Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 22 Oct 2025 17:00:36 +0200 Subject: [PATCH 30/90] =?UTF-8?q?Profile=20aus=20Profil=C3=BCbersicht=20ed?= =?UTF-8?q?itieren=20und=20speichern=20-=20frmNIHauptseite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../My Project/Settings.Designer.vb | 12 ++++ ToolCollection/My Project/Settings.settings | 3 + ToolCollection/app.config | 3 + ToolCollection/frmNIHauptseite.Designer.vb | 25 ++++++++ ToolCollection/frmNIHauptseite.vb | 57 ++++++++++++++++++- ToolCollection/frmNIProfileigenschaften.resx | 2 +- 6 files changed, 99 insertions(+), 3 deletions(-) diff --git a/ToolCollection/My Project/Settings.Designer.vb b/ToolCollection/My Project/Settings.Designer.vb index 21e5005..145764b 100644 --- a/ToolCollection/My Project/Settings.Designer.vb +++ b/ToolCollection/My Project/Settings.Designer.vb @@ -757,6 +757,18 @@ Namespace My Me("vInstanceName") = value End Set End Property + + _ + Public Property vNIRunning() As Boolean + Get + Return CType(Me("vNIRunning"),Boolean) + End Get + Set + Me("vNIRunning") = value + End Set + End Property End Class End Namespace diff --git a/ToolCollection/My Project/Settings.settings b/ToolCollection/My Project/Settings.settings index 9399d37..87f1bd8 100644 --- a/ToolCollection/My Project/Settings.settings +++ b/ToolCollection/My Project/Settings.settings @@ -187,5 +187,8 @@ + + False + \ No newline at end of file diff --git a/ToolCollection/app.config b/ToolCollection/app.config index 31cb7d1..81903c3 100644 --- a/ToolCollection/app.config +++ b/ToolCollection/app.config @@ -165,6 +165,9 @@ + + False + diff --git a/ToolCollection/frmNIHauptseite.Designer.vb b/ToolCollection/frmNIHauptseite.Designer.vb index 2c9c43c..0565f5b 100644 --- a/ToolCollection/frmNIHauptseite.Designer.vb +++ b/ToolCollection/frmNIHauptseite.Designer.vb @@ -49,6 +49,8 @@ Partial Class frmNIHauptseite Me.Label4 = New System.Windows.Forms.Label() Me.numIntervall = New System.Windows.Forms.NumericUpDown() Me.TabPage2 = New System.Windows.Forms.TabPage() + Me.btnEdit = New System.Windows.Forms.Button() + Me.btnStartProfile = New System.Windows.Forms.Button() Me.gridProfileOverview = New DevExpress.XtraGrid.GridControl() Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView() Me.RepositoryItemCheckEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit() @@ -345,6 +347,8 @@ Partial Class frmNIHauptseite ' 'TabPage2 ' + Me.TabPage2.Controls.Add(Me.btnEdit) + Me.TabPage2.Controls.Add(Me.btnStartProfile) Me.TabPage2.Controls.Add(Me.gridProfileOverview) Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" @@ -354,6 +358,24 @@ Partial Class frmNIHauptseite Me.TabPage2.Text = "Profilübersicht" Me.TabPage2.UseVisualStyleBackColor = True ' + 'btnEdit + ' + Me.btnEdit.Location = New System.Drawing.Point(530, 487) + Me.btnEdit.Name = "btnEdit" + Me.btnEdit.Size = New System.Drawing.Size(110, 23) + Me.btnEdit.TabIndex = 2 + Me.btnEdit.Text = "Profil Bearbeiten" + Me.btnEdit.UseVisualStyleBackColor = True + ' + 'btnStartProfile + ' + Me.btnStartProfile.Location = New System.Drawing.Point(646, 487) + Me.btnStartProfile.Name = "btnStartProfile" + Me.btnStartProfile.Size = New System.Drawing.Size(110, 23) + Me.btnStartProfile.TabIndex = 1 + Me.btnStartProfile.Text = "Profil Starten" + Me.btnStartProfile.UseVisualStyleBackColor = True + ' 'gridProfileOverview ' Me.gridProfileOverview.Dock = System.Windows.Forms.DockStyle.Fill @@ -376,6 +398,7 @@ Partial Class frmNIHauptseite Me.GridView1.OptionsSelection.EnableAppearanceFocusedCell = False Me.GridView1.OptionsView.EnableAppearanceEvenRow = True Me.GridView1.OptionsView.ShowAutoFilterRow = True + Me.GridView1.OptionsView.ShowFooter = True Me.GridView1.OptionsView.ShowGroupPanel = False ' 'RepositoryItemCheckEdit1 @@ -538,4 +561,6 @@ Partial Class frmNIHauptseite Friend WithEvents RepositoryItemCheckEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit Friend WithEvents RepositoryItemGridLookUpEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit Friend WithEvents RepositoryItemGridLookUpEdit1View As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents btnEdit As Button + Friend WithEvents btnStartProfile As Button End Class diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 51e9352..29cfbd9 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -96,7 +96,9 @@ Public Class frmNIHauptseite End Sub Private Sub frmNIHauptseite_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing + My.Settings.vNIRunning = False My.Settings.Save() + Me.btnStartProfile.Enabled = True NI_OPENED = False 'If e.CloseReason = CloseReason.UserClosing Then ' _Logger.Info("Nachindexierung Hauptformular wird durch User geschlossen.") @@ -115,6 +117,9 @@ Public Class frmNIHauptseite If AUTOSTART_FIH Then Start_NachindexierungThreads() + My.Settings.vNIRunning = True + My.Settings.Save() + Me.btnStartProfile.Enabled = False _Logger.Info("AUTOSTART_FIH = True - Nachindexierung wird gestartet.") AUTOSTART_FIH = False Else @@ -2838,21 +2843,54 @@ Public Class frmNIHauptseite End Try End Sub + + 'NI Starten aus NIHauptseite Private Sub btnStartStop_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartStop.Click If TimerRefresh.Enabled = False Then TimerRefresh.Start() Else TimerRefresh.Stop() End If - If Me.btnStartStop.Text = "Nachindexierung stoppen" Then + If My.Settings.vNIRunning Then If timRun.Enabled = True Then timRun.Stop() End If Abbruch_NI("Manueller Abbruch 1 durch User " & Environment.UserName, False, False) + My.Settings.vNIRunning = False + My.Settings.Save() Me.btnStartStop.Text = "Nachindexierung starten" + Me.btnStartProfile.Enabled = True Else - Me.btnStartStop.Text = "Nachindexierung stoppen" Start_NachindexierungThreads() + My.Settings.vNIRunning = True + My.Settings.Save() + Me.btnStartStop.Text = "Nachindexierung stoppen" + Me.btnStartProfile.Enabled = False + End If + manuallyRun = False + End Sub + + 'NI Starten aus Profilübersicht + Private Sub btnStartProfile_Click(sender As Object, e As EventArgs) Handles btnStartProfile.Click + If TimerRefresh.Enabled = False Then + TimerRefresh.Start() + Else + TimerRefresh.Stop() + End If + If My.Settings.vNIRunning Then + 'If timRun.Enabled = True Then + ' timRun.Stop() + 'End If + 'Abbruch_NI("Manueller Abbruch 1 durch User " & Environment.UserName, False, False) + 'Me.btnStartStop.Text = "Nachindexierung starten" + Me.btnStartProfile.Enabled = True + MsgBox("Nachindexierung läuft bereits.") + Else + Start_NachindexierungThreads() + My.Settings.vNIRunning = True + My.Settings.Save() + Me.btnStartStop.Text = "Nachindexierung stoppen" + Me.btnStartProfile.Enabled = False End If manuallyRun = False End Sub @@ -3024,6 +3062,21 @@ Public Class frmNIHauptseite End Try End Function + Private Sub btnEdit_Click(sender As Object, e As EventArgs) Handles btnEdit.Click + + Dim view As DevExpress.XtraGrid.Views.Grid.GridView = TryCast(gridProfileOverview.MainView, DevExpress.XtraGrid.Views.Grid.GridView) + If view Is Nothing OrElse view.FocusedRowHandle < 0 Then + MsgBox("Bitte wählen Sie ein Profil aus.", "Hinweis", MsgBoxStyle.Information) + End If + + Dim profilname As String = Convert.ToString(view.GetRowCellValue(view.FocusedRowHandle, "Name")) + If Not String.IsNullOrWhiteSpace(profilname) Then + frmNIProfileigenschaften.Lade_Profil(profilname) + frmNIProfileigenschaften.Show() + frmNIProfileigenschaften.BringToFront() + End If + + End Sub Private Function CrFolderForIndex(fullfilename As String, pFileName As String) diff --git a/ToolCollection/frmNIProfileigenschaften.resx b/ToolCollection/frmNIProfileigenschaften.resx index f785c8c..a443c18 100644 --- a/ToolCollection/frmNIProfileigenschaften.resx +++ b/ToolCollection/frmNIProfileigenschaften.resx @@ -161,7 +161,7 @@ einen Startindex erhält, der nicht in der Datenbank existiert. Diese Kennzeichn AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAK - CQAAAk1TRnQBSQFMAgEBAgEAAagBAAGoAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAAbABAAGwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From c3d018e40e2eaefe5d7de1a4b092f3237adcc5cf Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 22 Oct 2025 17:04:16 +0200 Subject: [PATCH 31/90] Copyright aktualisiert --- ToolCollection/My Project/AssemblyInfo.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ToolCollection/My Project/AssemblyInfo.vb b/ToolCollection/My Project/AssemblyInfo.vb index 30c89f8..d94cb51 100644 --- a/ToolCollection/My Project/AssemblyInfo.vb +++ b/ToolCollection/My Project/AssemblyInfo.vb @@ -12,7 +12,7 @@ Imports System.Runtime.InteropServices - + From c92858af089088b6c153f792242f374c44cd5bd2 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 22 Oct 2025 17:14:05 +0200 Subject: [PATCH 32/90] =?UTF-8?q?Profil=C3=BCbersicht=20Buttons=20versch?= =?UTF-8?q?=C3=B6nert=20-=20frmNIHauptseite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmNIHauptseite.Designer.vb | 12 +++++++++--- ToolCollection/frmNIHauptseite.resx | 3 +++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ToolCollection/frmNIHauptseite.Designer.vb b/ToolCollection/frmNIHauptseite.Designer.vb index 0565f5b..020f3b8 100644 --- a/ToolCollection/frmNIHauptseite.Designer.vb +++ b/ToolCollection/frmNIHauptseite.Designer.vb @@ -360,20 +360,26 @@ Partial Class frmNIHauptseite ' 'btnEdit ' + Me.btnEdit.Image = Global.ToolCollection.My.Resources.Resources.cog_edit + Me.btnEdit.ImageAlign = System.Drawing.ContentAlignment.MiddleRight Me.btnEdit.Location = New System.Drawing.Point(530, 487) Me.btnEdit.Name = "btnEdit" - Me.btnEdit.Size = New System.Drawing.Size(110, 23) + Me.btnEdit.Size = New System.Drawing.Size(120, 23) Me.btnEdit.TabIndex = 2 Me.btnEdit.Text = "Profil Bearbeiten" + Me.btnEdit.TextAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btnEdit.UseVisualStyleBackColor = True ' 'btnStartProfile ' - Me.btnStartProfile.Location = New System.Drawing.Point(646, 487) + Me.btnStartProfile.Image = Global.ToolCollection.My.Resources.Resources.arrow_right + Me.btnStartProfile.ImageAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnStartProfile.Location = New System.Drawing.Point(656, 487) Me.btnStartProfile.Name = "btnStartProfile" - Me.btnStartProfile.Size = New System.Drawing.Size(110, 23) + Me.btnStartProfile.Size = New System.Drawing.Size(100, 23) Me.btnStartProfile.TabIndex = 1 Me.btnStartProfile.Text = "Profil Starten" + Me.btnStartProfile.TextAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btnStartProfile.UseVisualStyleBackColor = True ' 'gridProfileOverview diff --git a/ToolCollection/frmNIHauptseite.resx b/ToolCollection/frmNIHauptseite.resx index 1705b2d..623d18e 100644 --- a/ToolCollection/frmNIHauptseite.resx +++ b/ToolCollection/frmNIHauptseite.resx @@ -120,6 +120,9 @@ 248, 56 + + 248, 56 + Es wird empfohlen, das Intervall nicht auf weniger als 30 Minuten zu setzen, da der nächste Nachindexierungsdurchlauf nur gestartet werden kann, wenn der vorherige beendet wurde. Wenn zu erwarten ist, dass viele Dokumente nachindexiert werden sollen, sollte der Intervall für diesen Durchlauf entsprechend hoch gesetzt werden ( > 2 Stunden). From d3dfabfbe22851dc87272d3cf564e0db61e5b03c Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 29 Oct 2025 10:13:11 +0100 Subject: [PATCH 33/90] Starten eines einzelnen NI Profils - frmNIHauptseite --- ToolCollection/frmNIHauptseite.vb | 37 ++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 29cfbd9..2cb5f94 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -44,6 +44,7 @@ Public Class frmNIHauptseite Private licenseManager As ClassLicenseManager = Nothing Public Shared _windream As ClassWindream_allgemein Private Const ConstWMEntityDocument = 1 ''WINDREAMLib.WMEntity.WMEntityDocument + Private _singleProfileRun As String = "" Public Shared Function Instance() As frmNIHauptseite If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then _Instance = New frmNIHauptseite @@ -349,6 +350,15 @@ Public Class frmNIHauptseite Dim _Fehler As Boolean = False For Each profil As ClassNIProfil In ClassNIProfile.Profile _Fehler = False + If Not String.IsNullOrWhiteSpace(_singleProfileRun) Then + If _singleProfileRun <> profil.Profilname Then + Continue For + Else + Me.aktivesProfil = profil + _Logger.Info($"Manual Run for profile [{_singleProfileRun}] will be started.") + End If + End If + ' aktuelles Profil der Klasse mitteilen Me.aktivesProfil = profil _clsWorkfile = New clsNI_WorkFile(_MyLogger) @@ -625,6 +635,7 @@ Public Class frmNIHauptseite ' nächstes Profil an ProgressBar1 bwProfil.ReportProgress(-2) Next + _singleProfileRun = "" Catch ex As Exception _Logger.Error(ex) @@ -2872,6 +2883,7 @@ Public Class frmNIHauptseite 'NI Starten aus Profilübersicht Private Sub btnStartProfile_Click(sender As Object, e As EventArgs) Handles btnStartProfile.Click + If TimerRefresh.Enabled = False Then TimerRefresh.Start() Else @@ -2884,13 +2896,26 @@ Public Class frmNIHauptseite 'Abbruch_NI("Manueller Abbruch 1 durch User " & Environment.UserName, False, False) 'Me.btnStartStop.Text = "Nachindexierung starten" Me.btnStartProfile.Enabled = True - MsgBox("Nachindexierung läuft bereits.") + MsgBox("Nachindexierung läuft bereits.", MsgBoxStyle.Information) Else - Start_NachindexierungThreads() - My.Settings.vNIRunning = True - My.Settings.Save() - Me.btnStartStop.Text = "Nachindexierung stoppen" - Me.btnStartProfile.Enabled = False + + Dim view As DevExpress.XtraGrid.Views.Grid.GridView = TryCast(gridProfileOverview.MainView, DevExpress.XtraGrid.Views.Grid.GridView) + If view Is Nothing OrElse view.FocusedRowHandle < 0 Then + MsgBox("Bitte wählen Sie ein Profil aus.", "Hinweis", MsgBoxStyle.Information) + Exit Sub + End If + + Dim profilname As String = Convert.ToString(view.GetRowCellValue(view.FocusedRowHandle, "Name")) + If Not String.IsNullOrWhiteSpace(profilname) Then + _singleProfileRun = profilname + Start_NachindexierungThreads() + My.Settings.vNIRunning = True + My.Settings.Save() + btnStartStop.Text = "Nachindexierung stoppen" + btnStartProfile.Enabled = False + MsgBox($"Nachindexierung mit dem Profil: {profilname} gestartet.", MsgBoxStyle.Information) + End If + End If manuallyRun = False End Sub From 66cc2e27ec6a6bd4b1eb7be9a7a6809202ddbdd9 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 29 Oct 2025 14:12:53 +0100 Subject: [PATCH 34/90] Progressbar zum Durchlauf der Profile auch bei einzelnem Profil korrekt - frmNIHautpseite --- ToolCollection/frmNIHauptseite.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 2cb5f94..cd73a46 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -765,7 +765,11 @@ Public Class frmNIHauptseite End If Me.ProgressBar1.Minimum = 0 - Me.ProgressBar1.Maximum = ClassNIProfile.Count + If String.IsNullOrWhiteSpace(_singleProfileRun) Then + Me.ProgressBar1.Maximum = ClassNIProfile.Count + Else + Me.ProgressBar1.Maximum = 1 + End If Me.ProgressBar1.Value = 0 Me.Refresh() From f9aacb19ccd3a2ddf41ba30ac3238b53d9e59b2c Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 3 Nov 2025 15:33:54 +0100 Subject: [PATCH 35/90] =?UTF-8?q?Minimumgr=C3=B6=C3=9Fe=20Profileigenschaf?= =?UTF-8?q?ten=20-=20frmNIProfileigenschaften?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frmNIProfileigenschaften.Designer.vb | 24 +++++++++---------- ToolCollection/frmNIProfileigenschaften.resx | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ToolCollection/frmNIProfileigenschaften.Designer.vb b/ToolCollection/frmNIProfileigenschaften.Designer.vb index 9d96749..fbf791b 100644 --- a/ToolCollection/frmNIProfileigenschaften.Designer.vb +++ b/ToolCollection/frmNIProfileigenschaften.Designer.vb @@ -178,7 +178,7 @@ Partial Class frmNIProfileigenschaften Me.StatusStrip1.Name = "StatusStrip1" Me.StatusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode Me.StatusStrip1.ShowItemToolTips = True - Me.StatusStrip1.Size = New System.Drawing.Size(991, 22) + Me.StatusStrip1.Size = New System.Drawing.Size(984, 22) Me.StatusStrip1.SizingGrip = False Me.StatusStrip1.TabIndex = 23 Me.StatusStrip1.Text = "StatusStrip1" @@ -562,7 +562,7 @@ Partial Class frmNIProfileigenschaften Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btnVerknüpfungen.Location = New System.Drawing.Point(746, 26) Me.btnVerknüpfungen.Name = "btnVerknüpfungen" - Me.btnVerknüpfungen.Size = New System.Drawing.Size(171, 23) + Me.btnVerknüpfungen.Size = New System.Drawing.Size(80, 23) Me.btnVerknüpfungen.TabIndex = 49 Me.btnVerknüpfungen.Text = "Verknüpfungen verwalten ..." Me.btnVerknüpfungen.UseVisualStyleBackColor = True @@ -771,7 +771,7 @@ Partial Class frmNIProfileigenschaften Me.TabControl1.Location = New System.Drawing.Point(3, 222) Me.TabControl1.Name = "TabControl1" Me.TabControl1.SelectedIndex = 0 - Me.TabControl1.Size = New System.Drawing.Size(985, 481) + Me.TabControl1.Size = New System.Drawing.Size(894, 481) Me.TabControl1.TabIndex = 78 ' 'TabPage1 @@ -784,7 +784,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(977, 455) + Me.TabPage1.Size = New System.Drawing.Size(886, 455) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "Typ und Quelle" Me.TabPage1.UseVisualStyleBackColor = True @@ -805,7 +805,7 @@ Partial Class frmNIProfileigenschaften Me.grbxLDAP.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.grbxLDAP.Location = New System.Drawing.Point(407, 210) Me.grbxLDAP.Name = "grbxLDAP" - Me.grbxLDAP.Size = New System.Drawing.Size(508, 215) + Me.grbxLDAP.Size = New System.Drawing.Size(417, 215) Me.grbxLDAP.TabIndex = 79 Me.grbxLDAP.TabStop = False Me.grbxLDAP.Text = "Indexierung gegen Active Directory:" @@ -907,7 +907,7 @@ Partial Class frmNIProfileigenschaften Me.grbxVolltext.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.grbxVolltext.Location = New System.Drawing.Point(568, 18) Me.grbxVolltext.Name = "grbxVolltext" - Me.grbxVolltext.Size = New System.Drawing.Size(392, 201) + Me.grbxVolltext.Size = New System.Drawing.Size(301, 201) Me.grbxVolltext.TabIndex = 78 Me.grbxVolltext.TabStop = False Me.grbxVolltext.Text = "Indexierung gegen den Volltext" @@ -960,7 +960,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage2.Size = New System.Drawing.Size(970, 556) + Me.TabPage2.Size = New System.Drawing.Size(977, 455) Me.TabPage2.TabIndex = 1 Me.TabPage2.Text = "Kennzeichnung und Active Directory" Me.TabPage2.UseVisualStyleBackColor = True @@ -996,7 +996,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage3.Location = New System.Drawing.Point(4, 22) Me.TabPage3.Name = "TabPage3" Me.TabPage3.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage3.Size = New System.Drawing.Size(882, 416) + Me.TabPage3.Size = New System.Drawing.Size(977, 455) Me.TabPage3.TabIndex = 2 Me.TabPage3.Text = "Nachbearbeitungsfunktionen 1 (Verschieben, umbenennen)" Me.TabPage3.UseVisualStyleBackColor = True @@ -1283,7 +1283,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage4.Location = New System.Drawing.Point(4, 22) Me.TabPage4.Name = "TabPage4" Me.TabPage4.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage4.Size = New System.Drawing.Size(882, 416) + Me.TabPage4.Size = New System.Drawing.Size(977, 455) Me.TabPage4.TabIndex = 3 Me.TabPage4.Text = "Nachbearbeitungsfunktionen 2 (Ordnerindizes etc)" Me.TabPage4.UseVisualStyleBackColor = True @@ -1449,23 +1449,23 @@ Partial Class frmNIProfileigenschaften Me.pnlProfileigenschaften.Controls.Add(Me.txtlastRun) Me.pnlProfileigenschaften.Controls.Add(Me.chkbxAktiv) Me.pnlProfileigenschaften.Controls.Add(Me.Label7) - Me.pnlProfileigenschaften.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlProfileigenschaften.Location = New System.Drawing.Point(0, 22) Me.pnlProfileigenschaften.Name = "pnlProfileigenschaften" - Me.pnlProfileigenschaften.Size = New System.Drawing.Size(991, 706) + Me.pnlProfileigenschaften.Size = New System.Drawing.Size(900, 706) Me.pnlProfileigenschaften.TabIndex = 81 ' 'frmNIProfileigenschaften ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(991, 728) + Me.ClientSize = New System.Drawing.Size(984, 711) Me.Controls.Add(Me.pnlProfileigenschaften) Me.Controls.Add(Me.StatusStrip1) Me.DataBindings.Add(New System.Windows.Forms.Binding("Location", Global.ToolCollection.My.MySettings.Default, "frmNIProfileigenschaften", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.Location = Global.ToolCollection.My.MySettings.Default.frmNIProfileigenschaften + Me.MinimumSize = New System.Drawing.Size(1000, 750) Me.Name = "frmNIProfileigenschaften" Me.Text = "Profileigenschaften Nachindexierung" Me.StatusStrip1.ResumeLayout(False) diff --git a/ToolCollection/frmNIProfileigenschaften.resx b/ToolCollection/frmNIProfileigenschaften.resx index a443c18..d34599c 100644 --- a/ToolCollection/frmNIProfileigenschaften.resx +++ b/ToolCollection/frmNIProfileigenschaften.resx @@ -161,7 +161,7 @@ einen Startindex erhält, der nicht in der Datenbank existiert. Diese Kennzeichn AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAK - CQAAAk1TRnQBSQFMAgEBAgEAAbABAAGwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAAbgBAAG4AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From 49bfc4b40bdc9222b224c9c440b0e09663d76e8d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 6 Nov 2025 11:32:51 +0100 Subject: [PATCH 36/90] Starten und Stoppen der NI mit einzelnen Profilen - frmNIHauptseite --- .../My Project/Settings.Designer.vb | 14 +++++- ToolCollection/My Project/Settings.settings | 5 +- ToolCollection/app.config | 5 +- ToolCollection/frmNIHauptseite.resx | 3 -- ToolCollection/frmNIHauptseite.vb | 50 ++++++++++--------- 5 files changed, 48 insertions(+), 29 deletions(-) diff --git a/ToolCollection/My Project/Settings.Designer.vb b/ToolCollection/My Project/Settings.Designer.vb index 145764b..c4eb03f 100644 --- a/ToolCollection/My Project/Settings.Designer.vb +++ b/ToolCollection/My Project/Settings.Designer.vb @@ -585,7 +585,7 @@ Namespace My _ + Global.System.Configuration.DefaultSettingValueAttribute("01;02;03;08;09;10;11;12;13;14;15;16;17;18;19;20;21;22;23")> _ Public ReadOnly Property NI_WORKING_HOURS() As String Get Return CType(Me("NI_WORKING_HOURS"),String) @@ -769,6 +769,18 @@ Namespace My Me("vNIRunning") = value End Set End Property + + _ + Public Property vNIsingleProfileRunning() As Boolean + Get + Return CType(Me("vNIsingleProfileRunning"),Boolean) + End Get + Set + Me("vNIsingleProfileRunning") = value + End Set + End Property End Class End Namespace diff --git a/ToolCollection/My Project/Settings.settings b/ToolCollection/My Project/Settings.settings index 87f1bd8..d9ba8f3 100644 --- a/ToolCollection/My Project/Settings.settings +++ b/ToolCollection/My Project/Settings.settings @@ -132,7 +132,7 @@ 0 - 01;02;03;09;10;11;12;13;14;15;16;17;18;19;20;21;22;23 + 01;02;03;08;09;10;11;12;13;14;15;16;17;18;19;20;21;22;23 @@ -190,5 +190,8 @@ False + + False + \ No newline at end of file diff --git a/ToolCollection/app.config b/ToolCollection/app.config index 81903c3..aaf7023 100644 --- a/ToolCollection/app.config +++ b/ToolCollection/app.config @@ -168,6 +168,9 @@ False + + False + @@ -194,7 +197,7 @@ 0 - 01;02;03;09;10;11;12;13;14;15;16;17;18;19;20;21;22;23 + 01;02;03;08;09;10;11;12;13;14;15;16;17;18;19;20;21;22;23 diff --git a/ToolCollection/frmNIHauptseite.resx b/ToolCollection/frmNIHauptseite.resx index 623d18e..1705b2d 100644 --- a/ToolCollection/frmNIHauptseite.resx +++ b/ToolCollection/frmNIHauptseite.resx @@ -120,9 +120,6 @@ 248, 56 - - 248, 56 - Es wird empfohlen, das Intervall nicht auf weniger als 30 Minuten zu setzen, da der nächste Nachindexierungsdurchlauf nur gestartet werden kann, wenn der vorherige beendet wurde. Wenn zu erwarten ist, dass viele Dokumente nachindexiert werden sollen, sollte der Intervall für diesen Durchlauf entsprechend hoch gesetzt werden ( > 2 Stunden). diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index cd73a46..0d48e18 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -635,7 +635,7 @@ Public Class frmNIHauptseite ' nächstes Profil an ProgressBar1 bwProfil.ReportProgress(-2) Next - _singleProfileRun = "" + Catch ex As Exception _Logger.Error(ex) @@ -664,11 +664,24 @@ Public Class frmNIHauptseite _Logger.Info("") End If + Dim actdatetime = Now Dim newrun_dt As DateTime = actdatetime.AddMinutes(Me.numIntervall.Value) - Me.lblStatus.Text = $"(Status: WARTEN auf den nächsten Durchlauf: {newrun_dt.ToString})" - tslblStatus.Text = $"Status: WARTEN auf den nächsten Durchlauf: {newrun_dt.ToString}" - Me.tslblStatus.Visible = True + + If My.Settings.vNIRunning Then + Me.lblStatus.Text = $"(Status: WARTEN auf den nächsten Durchlauf: {newrun_dt.ToString})" + tslblStatus.Text = $"Status: WARTEN auf den nächsten Durchlauf: {newrun_dt.ToString}" + Me.tslblStatus.Visible = True + End If + + If Not String.IsNullOrWhiteSpace(_singleProfileRun) Then + _singleProfileRun = "" + My.Settings.vNIsingleProfileRunning = False + My.Settings.vNIRunning = False + Me.lblStatus.Text = $"(Status: Nachindexieren beendet)" + tslblStatus.Text = "Status: Nachindexieren beendet" + btnStartStop.Text = "Nachindexierung starten" + End If End Sub @@ -2768,7 +2781,9 @@ Public Class frmNIHauptseite End If manually_cancel = False Me.timRun.Interval = Me.numIntervall.Value * 60 * 1000 - Me.timRun.Start() + If My.Settings.vNIRunning Then + Me.timRun.Start() + End If 'Variable für den Fall Programmabbruch und Neustart! bwProfil = New BackgroundWorker bwsearch = New BackgroundWorker @@ -2866,19 +2881,19 @@ Public Class frmNIHauptseite Else TimerRefresh.Stop() End If - If My.Settings.vNIRunning Then + If My.Settings.vNIRunning Or My.Settings.vNIsingleProfileRunning Then If timRun.Enabled = True Then timRun.Stop() End If - Abbruch_NI("Manueller Abbruch 1 durch User " & Environment.UserName, False, False) My.Settings.vNIRunning = False My.Settings.Save() + Abbruch_NI("Manueller Abbruch 1 durch User " & Environment.UserName, False, False) Me.btnStartStop.Text = "Nachindexierung starten" Me.btnStartProfile.Enabled = True Else - Start_NachindexierungThreads() My.Settings.vNIRunning = True My.Settings.Save() + Start_NachindexierungThreads() Me.btnStartStop.Text = "Nachindexierung stoppen" Me.btnStartProfile.Enabled = False End If @@ -2888,19 +2903,8 @@ Public Class frmNIHauptseite 'NI Starten aus Profilübersicht Private Sub btnStartProfile_Click(sender As Object, e As EventArgs) Handles btnStartProfile.Click - If TimerRefresh.Enabled = False Then - TimerRefresh.Start() - Else - TimerRefresh.Stop() - End If If My.Settings.vNIRunning Then - 'If timRun.Enabled = True Then - ' timRun.Stop() - 'End If - 'Abbruch_NI("Manueller Abbruch 1 durch User " & Environment.UserName, False, False) - 'Me.btnStartStop.Text = "Nachindexierung starten" - Me.btnStartProfile.Enabled = True - MsgBox("Nachindexierung läuft bereits.", MsgBoxStyle.Information) + Me.btnStartProfile.Enabled = False Else Dim view As DevExpress.XtraGrid.Views.Grid.GridView = TryCast(gridProfileOverview.MainView, DevExpress.XtraGrid.Views.Grid.GridView) @@ -2912,12 +2916,12 @@ Public Class frmNIHauptseite Dim profilname As String = Convert.ToString(view.GetRowCellValue(view.FocusedRowHandle, "Name")) If Not String.IsNullOrWhiteSpace(profilname) Then _singleProfileRun = profilname - Start_NachindexierungThreads() - My.Settings.vNIRunning = True + My.Settings.vNIsingleProfileRunning = True My.Settings.Save() + Start_NachindexierungThreads() btnStartStop.Text = "Nachindexierung stoppen" btnStartProfile.Enabled = False - MsgBox($"Nachindexierung mit dem Profil: {profilname} gestartet.", MsgBoxStyle.Information) + Me.tcmain.SelectedTab = tpMain End If End If From da2321d362a80161d924f467f924cab149789dda Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 6 Nov 2025 12:49:19 +0100 Subject: [PATCH 37/90] Starten und Stoppen der NI mit einzelnen Profilen verbessert - frmNIHauptseite --- ToolCollection/frmNIHauptseite.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 0d48e18..bd9bd7b 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -681,6 +681,7 @@ Public Class frmNIHauptseite Me.lblStatus.Text = $"(Status: Nachindexieren beendet)" tslblStatus.Text = "Status: Nachindexieren beendet" btnStartStop.Text = "Nachindexierung starten" + btnStartProfile.Enabled = True End If End Sub From 826ce813538cc0feb1b58b5ab8fe8aebed38fe5d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 6 Nov 2025 14:33:33 +0100 Subject: [PATCH 38/90] Minimum Minuten bei DI auf 1 - frmDIHauptseite; Autostart Parameter im Descriptionfeld - frmAbout --- ToolCollection/frmDIHauptseite.Designer.vb | 1 + ToolCollection/frmabout.vb | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ToolCollection/frmDIHauptseite.Designer.vb b/ToolCollection/frmDIHauptseite.Designer.vb index 8ac3147..e4b4821 100644 --- a/ToolCollection/frmDIHauptseite.Designer.vb +++ b/ToolCollection/frmDIHauptseite.Designer.vb @@ -259,6 +259,7 @@ Partial Class frmDIHauptseite ' Me.numIntervallDurchlauf.DataBindings.Add(New System.Windows.Forms.Binding("Value", Global.ToolCollection.My.MySettings.Default, "DIDurchlauf_Intervall", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) Me.numIntervallDurchlauf.Location = New System.Drawing.Point(55, 120) + Me.numIntervallDurchlauf.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) Me.numIntervallDurchlauf.Name = "numIntervallDurchlauf" Me.numIntervallDurchlauf.Size = New System.Drawing.Size(46, 22) Me.numIntervallDurchlauf.TabIndex = 43 diff --git a/ToolCollection/frmabout.vb b/ToolCollection/frmabout.vb index eb9f558..e34b8eb 100644 --- a/ToolCollection/frmabout.vb +++ b/ToolCollection/frmabout.vb @@ -16,7 +16,8 @@ Me.LabelVersion.Text = String.Format("Version {0}", My.Application.Info.Version.ToString) Me.LabelCopyright.Text = My.Application.Info.Copyright Me.LabelCompanyName.Text = My.Application.Info.CompanyName - Me.TextBoxDescription.Text = My.Application.Info.Description + 'Me.TextBoxDescription.Text = My.Application.Info.Description + Me.TextBoxDescription.Text = "Autostart Parameter: /startFIM /startFIH" End Sub Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click From 183d3d015aef3b7d3a676bb71faa1521f546b27d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Fri, 7 Nov 2025 08:51:50 +0100 Subject: [PATCH 39/90] =?UTF-8?q?Form=20sch=C3=B6ner=20gemacht=20-=20frmDI?= =?UTF-8?q?Hauptseite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmDIHauptseite.Designer.vb | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ToolCollection/frmDIHauptseite.Designer.vb b/ToolCollection/frmDIHauptseite.Designer.vb index e4b4821..89e552c 100644 --- a/ToolCollection/frmDIHauptseite.Designer.vb +++ b/ToolCollection/frmDIHauptseite.Designer.vb @@ -101,7 +101,7 @@ Partial Class frmDIHauptseite Me.tcMain.Location = New System.Drawing.Point(0, 0) Me.tcMain.Name = "tcMain" Me.tcMain.SelectedIndex = 0 - Me.tcMain.Size = New System.Drawing.Size(722, 513) + Me.tcMain.Size = New System.Drawing.Size(784, 519) Me.tcMain.TabIndex = 51 ' 'tpMain @@ -124,7 +124,7 @@ Partial Class frmDIHauptseite Me.tpMain.Location = New System.Drawing.Point(4, 22) Me.tpMain.Name = "tpMain" Me.tpMain.Padding = New System.Windows.Forms.Padding(3) - Me.tpMain.Size = New System.Drawing.Size(714, 487) + Me.tpMain.Size = New System.Drawing.Size(776, 493) Me.tpMain.TabIndex = 0 Me.tpMain.Text = "Hauptseite" Me.tpMain.UseVisualStyleBackColor = True @@ -154,7 +154,7 @@ Partial Class frmDIHauptseite Me.btnAbbrechen.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btnAbbrechen.Image = Global.ToolCollection.My.Resources.Resources.cross Me.btnAbbrechen.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnAbbrechen.Location = New System.Drawing.Point(553, 448) + Me.btnAbbrechen.Location = New System.Drawing.Point(615, 454) Me.btnAbbrechen.Name = "btnAbbrechen" Me.btnAbbrechen.Size = New System.Drawing.Size(154, 30) Me.btnAbbrechen.TabIndex = 32 @@ -170,7 +170,7 @@ Partial Class frmDIHauptseite Me.cmbProfilauswahl.FormattingEnabled = True Me.cmbProfilauswahl.Location = New System.Drawing.Point(11, 62) Me.cmbProfilauswahl.Name = "cmbProfilauswahl" - Me.cmbProfilauswahl.Size = New System.Drawing.Size(296, 21) + Me.cmbProfilauswahl.Size = New System.Drawing.Size(339, 21) Me.cmbProfilauswahl.Sorted = True Me.cmbProfilauswahl.TabIndex = 24 ' @@ -292,7 +292,7 @@ Partial Class frmDIHauptseite ' Me.btnZielordner.Enabled = False Me.btnZielordner.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnZielordner.Location = New System.Drawing.Point(278, 149) + Me.btnZielordner.Location = New System.Drawing.Point(321, 149) Me.btnZielordner.Name = "btnZielordner" Me.btnZielordner.Size = New System.Drawing.Size(29, 23) Me.btnZielordner.TabIndex = 40 @@ -305,16 +305,16 @@ Partial Class frmDIHauptseite Me.txtZielordner.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtZielordner.Location = New System.Drawing.Point(11, 151) Me.txtZielordner.Name = "txtZielordner" - Me.txtZielordner.Size = New System.Drawing.Size(261, 21) + Me.txtZielordner.Size = New System.Drawing.Size(304, 21) Me.txtZielordner.TabIndex = 39 ' 'progressImport ' Me.progressImport.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.progressImport.Location = New System.Drawing.Point(11, 415) + Me.progressImport.Location = New System.Drawing.Point(11, 421) Me.progressImport.Name = "progressImport" - Me.progressImport.Size = New System.Drawing.Size(696, 27) + Me.progressImport.Size = New System.Drawing.Size(758, 27) Me.progressImport.TabIndex = 29 Me.progressImport.Visible = False ' @@ -335,7 +335,7 @@ Partial Class frmDIHauptseite Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.lblLog.AutoSize = True Me.lblLog.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblLog.Location = New System.Drawing.Point(339, 46) + Me.lblLog.Location = New System.Drawing.Point(371, 46) Me.lblLog.Name = "lblLog" Me.lblLog.Size = New System.Drawing.Size(103, 13) Me.lblLog.TabIndex = 31 @@ -345,7 +345,7 @@ Partial Class frmDIHauptseite ' Me.btnQuellordner.Enabled = False Me.btnQuellordner.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.btnQuellordner.Location = New System.Drawing.Point(278, 109) + Me.btnQuellordner.Location = New System.Drawing.Point(321, 109) Me.btnQuellordner.Name = "btnQuellordner" Me.btnQuellordner.Size = New System.Drawing.Size(29, 23) Me.btnQuellordner.TabIndex = 37 @@ -356,7 +356,7 @@ Partial Class frmDIHauptseite ' Me.lblProgress.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.lblProgress.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.TBTC_DI_REGEX_MATCHBindingSource, "GUID", True)) - Me.lblProgress.Location = New System.Drawing.Point(11, 448) + Me.lblProgress.Location = New System.Drawing.Point(11, 454) Me.lblProgress.Name = "lblProgress" Me.lblProgress.Size = New System.Drawing.Size(536, 33) Me.lblProgress.TabIndex = 33 @@ -379,7 +379,7 @@ Partial Class frmDIHauptseite Me.txtQuellordner.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtQuellordner.Location = New System.Drawing.Point(11, 109) Me.txtQuellordner.Name = "txtQuellordner" - Me.txtQuellordner.Size = New System.Drawing.Size(261, 21) + Me.txtQuellordner.Size = New System.Drawing.Size(304, 21) Me.txtQuellordner.TabIndex = 36 ' 'tvLog @@ -390,10 +390,10 @@ Partial Class frmDIHauptseite Me.tvLog.ContextMenuStrip = Me.contextLog Me.tvLog.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.tvLog.HideSelection = False - Me.tvLog.Location = New System.Drawing.Point(342, 62) + Me.tvLog.Location = New System.Drawing.Point(374, 62) Me.tvLog.Name = "tvLog" Me.tvLog.ShowNodeToolTips = True - Me.tvLog.Size = New System.Drawing.Size(365, 347) + Me.tvLog.Size = New System.Drawing.Size(395, 347) Me.tvLog.TabIndex = 34 ' 'Label5 @@ -437,7 +437,7 @@ Partial Class frmDIHauptseite ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(722, 513) + Me.ClientSize = New System.Drawing.Size(784, 519) Me.Controls.Add(Me.tcMain) Me.DataBindings.Add(New System.Windows.Forms.Binding("Location", Global.ToolCollection.My.MySettings.Default, "frmDIHauptseite_Loc", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) From 63dc69eccee1350996d9bb54029f0919f075d7d5 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Fri, 7 Nov 2025 08:52:18 +0100 Subject: [PATCH 40/90] =?UTF-8?q?Spaltenbreite=20Profil=C3=BCbersicht=20an?= =?UTF-8?q?gepasst=20-=20frmNIHauptseite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmNIHauptseite.Designer.vb | 1 + ToolCollection/frmNIHauptseite.vb | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/ToolCollection/frmNIHauptseite.Designer.vb b/ToolCollection/frmNIHauptseite.Designer.vb index 020f3b8..67dca45 100644 --- a/ToolCollection/frmNIHauptseite.Designer.vb +++ b/ToolCollection/frmNIHauptseite.Designer.vb @@ -402,6 +402,7 @@ Partial Class frmNIHauptseite Me.GridView1.OptionsBehavior.Editable = False Me.GridView1.OptionsClipboard.CopyColumnHeaders = DevExpress.Utils.DefaultBoolean.[False] Me.GridView1.OptionsSelection.EnableAppearanceFocusedCell = False + Me.GridView1.OptionsView.ColumnAutoWidth = False Me.GridView1.OptionsView.EnableAppearanceEvenRow = True Me.GridView1.OptionsView.ShowAutoFilterRow = True Me.GridView1.OptionsView.ShowFooter = True diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index bd9bd7b..1359f0a 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -2,6 +2,9 @@ Imports System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder Imports System.IO Imports System.Text.RegularExpressions +Imports DevExpress.Utils.Extensions +Imports DevExpress.XtraEditors.Controls +Imports DevExpress.XtraGrid.Views.Grid Imports DigitalData.Modules.Logging Imports WINDREAMLib @@ -150,6 +153,10 @@ Public Class frmNIHauptseite Me.gridProfileOverview.DataSource = dtProfiles + Me.GridView1.Columns("Aktiv").Width = 70 + Me.GridView1.Columns("Name").Width = 400 + Me.GridView1.Columns("Objekttyp").Width = 265 + End Sub Private Sub frmNIHauptseite_Load(sender As Object, e As System.EventArgs) Handles Me.Load From ae3a2a9b14387fe7a2907d4e48c1d6a9261f55c1 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Fri, 7 Nov 2025 14:12:37 +0100 Subject: [PATCH 41/90] Anzeigen des Connection Strings in der Statusleiste - frmStart --- .../My Project/Settings.Designer.vb | 4 +-- ToolCollection/My Project/Settings.settings | 4 +-- ToolCollection/app.config | 2 +- ToolCollection/frmNIHauptseite.vb | 2 +- ToolCollection/frmStart.Designer.vb | 25 +++++++++---- ToolCollection/frmStart.resx | 36 +++++++++---------- ToolCollection/frmStart.vb | 20 +++++++---- 7 files changed, 55 insertions(+), 38 deletions(-) diff --git a/ToolCollection/My Project/Settings.Designer.vb b/ToolCollection/My Project/Settings.Designer.vb index c4eb03f..9668660 100644 --- a/ToolCollection/My Project/Settings.Designer.vb +++ b/ToolCollection/My Project/Settings.Designer.vb @@ -670,8 +670,8 @@ Namespace My _ + Global.System.Configuration.DefaultSettingValueAttribute("Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security "& _ + "Info=True;User ID=sa;Password=dd;Encrypt=False")> _ Public ReadOnly Property DDECMConString() As String Get Return CType(Me("DDECMConString"),String) diff --git a/ToolCollection/My Project/Settings.settings b/ToolCollection/My Project/Settings.settings index d9ba8f3..ac8abb3 100644 --- a/ToolCollection/My Project/Settings.settings +++ b/ToolCollection/My Project/Settings.settings @@ -161,10 +161,10 @@ <?xml version="1.0" encoding="utf-16"?> <SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <ConnectionString>Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</ConnectionString> + <ConnectionString>Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd;Encrypt=False</ConnectionString> <ProviderName>System.Data.SqlClient</ProviderName> </SerializableConnectionString> - Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd + Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd;Encrypt=False @Domain#@User#@PW diff --git a/ToolCollection/app.config b/ToolCollection/app.config index aaf7023..aa8ef12 100644 --- a/ToolCollection/app.config +++ b/ToolCollection/app.config @@ -11,7 +11,7 @@
- diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 1359f0a..23ea244 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -155,7 +155,7 @@ Public Class frmNIHauptseite Me.GridView1.Columns("Aktiv").Width = 70 Me.GridView1.Columns("Name").Width = 400 - Me.GridView1.Columns("Objekttyp").Width = 265 + Me.GridView1.Columns("Objekttyp").Width = 245 End Sub diff --git a/ToolCollection/frmStart.Designer.vb b/ToolCollection/frmStart.Designer.vb index f762d25..693f258 100644 --- a/ToolCollection/frmStart.Designer.vb +++ b/ToolCollection/frmStart.Designer.vb @@ -63,6 +63,7 @@ Partial Class frmStart Me.TimerNIRestart = New System.Windows.Forms.Timer(Me.components) Me.TimerErrorLog = New System.Windows.Forms.Timer(Me.components) Me.TimerDeleteLogfiles = New System.Windows.Forms.Timer(Me.components) + Me.ToolStripStatusLabel_ConnectionString = New System.Windows.Forms.ToolStripStatusLabel() Me.StatusStrip1.SuspendLayout() Me.menHauptmenü.SuspendLayout() Me.Panel1.SuspendLayout() @@ -75,7 +76,7 @@ Partial Class frmStart ' 'StatusStrip1 ' - Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Status_Machine, Me.ToolStripStatusLabel2, Me.tslblVersion, Me.ToolStripStatusLabel_LogDeleteTime}) + Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Status_Machine, Me.ToolStripStatusLabel2, Me.tslblVersion, Me.ToolStripStatusLabel_LogDeleteTime, Me.ToolStripStatusLabel_ConnectionString}) Me.StatusStrip1.Location = New System.Drawing.Point(0, 613) Me.StatusStrip1.Name = "StatusStrip1" Me.StatusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode @@ -93,7 +94,7 @@ Partial Class frmStart Me.Status_Machine.Image = CType(resources.GetObject("Status_Machine.Image"), System.Drawing.Image) Me.Status_Machine.Margin = New System.Windows.Forms.Padding(10, 3, 0, 2) Me.Status_Machine.Name = "Status_Machine" - Me.Status_Machine.Size = New System.Drawing.Size(139, 20) + Me.Status_Machine.Size = New System.Drawing.Size(140, 20) Me.Status_Machine.Text = "ToolStripStatusLabel1" Me.Status_Machine.ToolTipText = "Client-Name" ' @@ -104,7 +105,7 @@ Partial Class frmStart Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) Me.ToolStripStatusLabel2.Image = CType(resources.GetObject("ToolStripStatusLabel2.Image"), System.Drawing.Image) Me.ToolStripStatusLabel2.Name = "ToolStripStatusLabel2" - Me.ToolStripStatusLabel2.Size = New System.Drawing.Size(139, 20) + Me.ToolStripStatusLabel2.Size = New System.Drawing.Size(140, 20) Me.ToolStripStatusLabel2.Text = "ToolStripStatusLabel1" Me.ToolStripStatusLabel2.ToolTipText = "Aktueller Benutzer" ' @@ -114,7 +115,7 @@ Partial Class frmStart Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Right) _ Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) Me.tslblVersion.Name = "tslblVersion" - Me.tslblVersion.Size = New System.Drawing.Size(123, 20) + Me.tslblVersion.Size = New System.Drawing.Size(124, 20) Me.tslblVersion.Text = "ToolStripStatusLabel1" Me.tslblVersion.ToolTipText = "Aktueller Benutzer" ' @@ -149,20 +150,20 @@ Partial Class frmStart ' Me.ÜbersichtToolStripMenuItem.Image = Global.ToolCollection.My.Resources.Resources.Auslesen1 Me.ÜbersichtToolStripMenuItem.Name = "ÜbersichtToolStripMenuItem" - Me.ÜbersichtToolStripMenuItem.Size = New System.Drawing.Size(149, 22) + Me.ÜbersichtToolStripMenuItem.Size = New System.Drawing.Size(180, 22) Me.ÜbersichtToolStripMenuItem.Text = "Übersicht" ' 'BeendenToolStripMenuItem ' Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem" - Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(149, 22) + Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(180, 22) Me.BeendenToolStripMenuItem.Text = "Beenden" ' 'ZeigeLogFileToolStripMenuItem ' Me.ZeigeLogFileToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ÖffneLogverzeichnisToolStripMenuItem}) Me.ZeigeLogFileToolStripMenuItem.Name = "ZeigeLogFileToolStripMenuItem" - Me.ZeigeLogFileToolStripMenuItem.Size = New System.Drawing.Size(149, 22) + Me.ZeigeLogFileToolStripMenuItem.Size = New System.Drawing.Size(180, 22) Me.ZeigeLogFileToolStripMenuItem.Text = "Zeige Log-File" ' 'ÖffneLogverzeichnisToolStripMenuItem @@ -451,6 +452,15 @@ Partial Class frmStart ' Me.TimerDeleteLogfiles.Interval = 1000 ' + 'ToolStripStatusLabel_ConnectionString + ' + Me.ToolStripStatusLabel_ConnectionString.BorderSides = CType((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Top) _ + Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Right) _ + Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) + Me.ToolStripStatusLabel_ConnectionString.Name = "ToolStripStatusLabel_ConnectionString" + Me.ToolStripStatusLabel_ConnectionString.Size = New System.Drawing.Size(129, 20) + Me.ToolStripStatusLabel_ConnectionString.Text = "Datenbankverbindung" + ' 'frmStart ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -518,4 +528,5 @@ Partial Class frmStart Friend WithEvents TimerErrorLog As Timer Friend WithEvents TimerDeleteLogfiles As Timer Friend WithEvents ToolStripStatusLabel_LogDeleteTime As ToolStripStatusLabel + Friend WithEvents ToolStripStatusLabel_ConnectionString As ToolStripStatusLabel End Class diff --git a/ToolCollection/frmStart.resx b/ToolCollection/frmStart.resx index 1c385eb..3d73fd5 100644 --- a/ToolCollection/frmStart.resx +++ b/ToolCollection/frmStart.resx @@ -124,28 +124,28 @@ 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 + CebOM54n/eSouhlrbUcAAAAASUVORK5CYII= @@ -159,7 +159,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAO - FAAAAk1TRnQBSQFMAgEBCQEAAVgBAwFYAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + FAAAAk1TRnQBSQFMAgEBCQEAAWABAwFgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index a50e1ca..37c7ec0 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -4,6 +4,7 @@ Imports System.Globalization Imports DigitalData.Modules.Logging Imports System.IO Imports DigitalData.Modules.Database +Imports System.Text.RegularExpressions Public Class frmStart Private _MyLogger As LogConfig @@ -113,13 +114,13 @@ Public Class frmStart End Sub Private Sub TimerDeleteLogfiles_Tick(sender As Object, e As EventArgs) Handles TimerDeleteLogfiles.Tick - Try - Delete_Logfiles() - ' Nächstes Intervall wieder 24h - TimerDeleteLogfiles.Interval = 24 * 60 * 60 * 1000 - Catch ex As Exception - _Logger.Error("Fehler beim automatischen Löschen: " & ex.Message) - End Try + Try + Delete_LogFiles() + ' Nächstes Intervall wieder 24h + TimerDeleteLogfiles.Interval = 24 * 60 * 60 * 1000 + Catch ex As Exception + _Logger.Error("Fehler beim automatischen Löschen: " & ex.Message) + End Try End Sub Private Sub FMStart_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing @@ -175,6 +176,11 @@ Public Class frmStart Else Me.ToolStripStatusLabel_LogDeleteTime.Text = "Automatisches Löschen von Logs ist inaktiv." End If + + Dim connectionString As String = My.Settings.DDECMConString + connectionString = Regex.Replace(connectionString, "(?i)(password|pwd)\s*=\s*[^;]*", "$1=******") + Me.ToolStripStatusLabel_ConnectionString.Text = $"Datenbankverbindung: {connectionString}" + ' timUhrzeit.Start() TimerErrorLog.Start() From a0d994bf7fb3b6d561d8573017551b728678a131 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 13 Nov 2025 11:13:35 +0100 Subject: [PATCH 42/90] =?UTF-8?q?Footer=20in=20Pofil=C3=BCbersicht=20optim?= =?UTF-8?q?iert=20-=20frmNIHauptseite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToolCollection/frmNIHauptseite.Designer.vb | 37 ++++++++++++++++------ ToolCollection/frmNIHauptseite.resx | 5 ++- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/ToolCollection/frmNIHauptseite.Designer.vb b/ToolCollection/frmNIHauptseite.Designer.vb index 67dca45..e9d0cc6 100644 --- a/ToolCollection/frmNIHauptseite.Designer.vb +++ b/ToolCollection/frmNIHauptseite.Designer.vb @@ -49,6 +49,7 @@ Partial Class frmNIHauptseite Me.Label4 = New System.Windows.Forms.Label() Me.numIntervall = New System.Windows.Forms.NumericUpDown() Me.TabPage2 = New System.Windows.Forms.TabPage() + Me.pnlFooter = New System.Windows.Forms.Panel() Me.btnEdit = New System.Windows.Forms.Button() Me.btnStartProfile = New System.Windows.Forms.Button() Me.gridProfileOverview = New DevExpress.XtraGrid.GridControl() @@ -75,6 +76,7 @@ Partial Class frmNIHauptseite Me.pnlInfos.SuspendLayout() CType(Me.numIntervall, System.ComponentModel.ISupportInitialize).BeginInit() Me.TabPage2.SuspendLayout() + Me.pnlFooter.SuspendLayout() CType(Me.gridProfileOverview, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemCheckEdit1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -95,7 +97,7 @@ Partial Class frmNIHauptseite Me.tcmain.Location = New System.Drawing.Point(0, 0) Me.tcmain.Name = "tcmain" Me.tcmain.SelectedIndex = 0 - Me.tcmain.Size = New System.Drawing.Size(774, 547) + Me.tcmain.Size = New System.Drawing.Size(777, 547) Me.tcmain.TabIndex = 46 ' 'tpMain @@ -347,22 +349,33 @@ Partial Class frmNIHauptseite ' 'TabPage2 ' - Me.TabPage2.Controls.Add(Me.btnEdit) - Me.TabPage2.Controls.Add(Me.btnStartProfile) + Me.TabPage2.Controls.Add(Me.pnlFooter) Me.TabPage2.Controls.Add(Me.gridProfileOverview) Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage2.Size = New System.Drawing.Size(766, 521) + Me.TabPage2.Size = New System.Drawing.Size(769, 521) Me.TabPage2.TabIndex = 1 Me.TabPage2.Text = "Profilübersicht" Me.TabPage2.UseVisualStyleBackColor = True ' + 'pnlFooter + ' + Me.pnlFooter.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.pnlFooter.Controls.Add(Me.btnEdit) + Me.pnlFooter.Controls.Add(Me.btnStartProfile) + Me.pnlFooter.Location = New System.Drawing.Point(3, 480) + Me.pnlFooter.Name = "pnlFooter" + Me.pnlFooter.Size = New System.Drawing.Size(763, 38) + Me.pnlFooter.TabIndex = 3 + ' 'btnEdit ' + Me.btnEdit.Anchor = System.Windows.Forms.AnchorStyles.Right Me.btnEdit.Image = Global.ToolCollection.My.Resources.Resources.cog_edit Me.btnEdit.ImageAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnEdit.Location = New System.Drawing.Point(530, 487) + Me.btnEdit.Location = New System.Drawing.Point(527, 9) Me.btnEdit.Name = "btnEdit" Me.btnEdit.Size = New System.Drawing.Size(120, 23) Me.btnEdit.TabIndex = 2 @@ -372,9 +385,10 @@ Partial Class frmNIHauptseite ' 'btnStartProfile ' + Me.btnStartProfile.Anchor = System.Windows.Forms.AnchorStyles.Right Me.btnStartProfile.Image = Global.ToolCollection.My.Resources.Resources.arrow_right Me.btnStartProfile.ImageAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnStartProfile.Location = New System.Drawing.Point(656, 487) + Me.btnStartProfile.Location = New System.Drawing.Point(653, 9) Me.btnStartProfile.Name = "btnStartProfile" Me.btnStartProfile.Size = New System.Drawing.Size(100, 23) Me.btnStartProfile.TabIndex = 1 @@ -384,12 +398,14 @@ Partial Class frmNIHauptseite ' 'gridProfileOverview ' - Me.gridProfileOverview.Dock = System.Windows.Forms.DockStyle.Fill + Me.gridProfileOverview.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.gridProfileOverview.Location = New System.Drawing.Point(3, 3) Me.gridProfileOverview.MainView = Me.GridView1 Me.gridProfileOverview.Name = "gridProfileOverview" Me.gridProfileOverview.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemCheckEdit1, Me.RepositoryItemGridLookUpEdit1}) - Me.gridProfileOverview.Size = New System.Drawing.Size(760, 515) + Me.gridProfileOverview.Size = New System.Drawing.Size(763, 471) Me.gridProfileOverview.TabIndex = 0 Me.gridProfileOverview.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1}) ' @@ -405,7 +421,6 @@ Partial Class frmNIHauptseite Me.GridView1.OptionsView.ColumnAutoWidth = False Me.GridView1.OptionsView.EnableAppearanceEvenRow = True Me.GridView1.OptionsView.ShowAutoFilterRow = True - Me.GridView1.OptionsView.ShowFooter = True Me.GridView1.OptionsView.ShowGroupPanel = False ' 'RepositoryItemCheckEdit1 @@ -493,7 +508,7 @@ Partial Class frmNIHauptseite ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(774, 547) + Me.ClientSize = New System.Drawing.Size(777, 547) Me.Controls.Add(Me.tcmain) Me.DataBindings.Add(New System.Windows.Forms.Binding("Location", Global.ToolCollection.My.MySettings.Default, "frmNIHauptseite_Loc", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) Me.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) @@ -512,6 +527,7 @@ Partial Class frmNIHauptseite Me.pnlInfos.PerformLayout() CType(Me.numIntervall, System.ComponentModel.ISupportInitialize).EndInit() Me.TabPage2.ResumeLayout(False) + Me.pnlFooter.ResumeLayout(False) CType(Me.gridProfileOverview, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemCheckEdit1, System.ComponentModel.ISupportInitialize).EndInit() @@ -570,4 +586,5 @@ Partial Class frmNIHauptseite Friend WithEvents RepositoryItemGridLookUpEdit1View As DevExpress.XtraGrid.Views.Grid.GridView Friend WithEvents btnEdit As Button Friend WithEvents btnStartProfile As Button + Friend WithEvents pnlFooter As Panel End Class diff --git a/ToolCollection/frmNIHauptseite.resx b/ToolCollection/frmNIHauptseite.resx index 1705b2d..a6e8999 100644 --- a/ToolCollection/frmNIHauptseite.resx +++ b/ToolCollection/frmNIHauptseite.resx @@ -120,6 +120,9 @@ 248, 56 + + 248, 56 + Es wird empfohlen, das Intervall nicht auf weniger als 30 Minuten zu setzen, da der nächste Nachindexierungsdurchlauf nur gestartet werden kann, wenn der vorherige beendet wurde. Wenn zu erwarten ist, dass viele Dokumente nachindexiert werden sollen, sollte der Intervall für diesen Durchlauf entsprechend hoch gesetzt werden ( > 2 Stunden). @@ -160,7 +163,7 @@ 984, 56 - 297 + 132 From 483042a6fb593f2decb2393dcab63d17f409483d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 13 Nov 2025 11:14:37 +0100 Subject: [PATCH 43/90] Ankern bei Laden von NI_Main verhindern - frmStart --- .../17.14.1091.29919/CodeChunks.db | Bin 0 -> 69632 bytes .../17.14.1091.29919/CodeChunks.db-shm | Bin 0 -> 32768 bytes .../17.14.1091.29919/CodeChunks.db-wal | Bin 0 -> 234872 bytes .../17.14.1091.29919/SemanticSymbols.db | Bin 0 -> 49152 bytes .../17.14.1091.29919/SemanticSymbols.db-shm | Bin 0 -> 32768 bytes .../17.14.1091.29919/SemanticSymbols.db-wal | Bin 0 -> 539752 bytes ToolCollection/frmStart.vb | 3 +++ 7 files changed, 3 insertions(+) create mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db create mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-shm create mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal create mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db create mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-shm create mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-wal diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db new file mode 100644 index 0000000000000000000000000000000000000000..aa5d6e1877ba096aaa27cf3251fef8ec933c4dcf GIT binary patch literal 69632 zcmeI&O>g5w7{GD6+l|w_wCTyGO0KGsM7vrxsw%_*iI6(QZ0dAV7g`Avg~q!Zwsp2` zDwdc&T`lbvi^~p*kjMw&+nP>B$^&Q?M-I3_H24} zF`8*RQcYS~l0MZmNs`LqZ(aOFuaekUj&{VSoY-EpS(Y9>`>VS4k5p5-((0dUzpehf z`a$)g`gi50@}r7X`gP^I;vYq+_>0n2eqYoG

~v00Id7KLy;%nxd+z?0!EReS2025)&8ufYjwY@t~IJ9O}y&HxULzdrSIzl&Fov6dED!1hXdoFJvh~# z=%-ry*yoU#4-`tn@N z@Wau~Z0he1{rba}|FQ0FR26k=OTLx;J2$)<_P9Gaw-cMI=_nFM-ZvKSLWiT-i-n== zt`<~dYf&hPI~leTJ8N#OqNv7>?6xLeM8?Um^Ww&N>Bro?vM+CJ=j?}|%ot}Js)i98 z=AM2c67|mdb**n|^^8`8PEafo-Mlr+in_BSzv=kW8K-9yRnqbqXT%xs4`y|#RLA+x z6W;RN?VDjk-Tpu~_D!#cHo}WGwSnH%2fEqOk2JsRVD#$M#ChH@#!ZiBPw(ks9CX@8 zo%Wud(U6}S@8m>7epz-4qL*Km6!qh6*h`w$W+l#Hcv>>(m5i*#t-aUaH%AwC_F##!+_RnM-hi5autdkhSQZ^mCO0@W zm6F6DTbP)SRtoBq?L}iY2{mjb_e$Se9lHRovAako%!c#MrZYJCFPQgV&H-QQf4ocMafR=lk^%Zj?YA-ifc)b^%lHy47+A7me==wu-Ya~7_6+Tfn_yP^vOVa0-X1h|A3tu!6LqKG>v`V_ z%)WRYMi0Y!Z*)ET>PpPj*5txIo}Jz8vte=r+eUPirpW4tO9i#Fu_&uiIKx)7bx(Yc zDth0gs@_}8d*g)w0tg_000IagfB*srAb;L)BF%cqw00IagfB*srAbt>u literal 0 HcmV?d00001 diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-shm b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..b284a28c8876d20a0b41a8d8f90d4bbdae5f4f4c GIT binary patch literal 32768 zcmeI*SuO-o6vpw-Oq-h4t+aWb=UIX^c(Dcx5PPr$E8tOV!Lv0;Jg|j+;~bhug`~B3 zaPR*lU#ja?-Ksvn1)NGA7Uk7psgbg~b}U*3&QFd?`c%GxQDF)AlqaeZfqI*m)os(X z1~sBd&1*^P@)=#!{}u2#XjCNvK3$GN009ILKmY**;tWXq7GzNC^})p|#W+rwGI$kZ4L9akNU82&4r1G_B3l8m9=vA&}LO7UF1? zE)hrxbZJ;`-#ANM;1q%21&W%{R`6ZYAOc?r^lMhzUtM4gf#3xigYS?A5%^A^>AMT8 VBM`iRe+QdFAWi}Q0z6fTzzblyGP3{x literal 0 HcmV?d00001 diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal new file mode 100644 index 0000000000000000000000000000000000000000..676371be89ee347e42ac79a3ed678c901b7e72cb GIT binary patch literal 234872 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

Ab}rjVYPU{(aPK+HsGg@_;#4Wic`SqJ-P3h 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 literal 0 HcmV?d00001 diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db new file mode 100644 index 0000000000000000000000000000000000000000..330f6d0d57e6ebf2865f55f4876407ffcbef73e6 GIT binary patch literal 49152 zcmeI)U2ob}7zc11l0e8?r(K||igwgVGpHo#G)0wKbsGUE^-4_(rY~A0~o&q^Bm*IRqOXF z7Ng|E^|}TlA15v)78Vkp5t2wGR`~B4|BV*0z8HPr@6yQnwAGcw?#b`#n|~!XmX;D5 zzis}!@x#W4t6yjS$$XdoHT@*@Q|goDAD4dNJF!3j0ucB=1p1$Eq%L3GN`LhQ^Q?B8 zdb-!Hzw92nw(9uQW5Ifa=|H4+@Oo;gsCRBb&& z_!90^HN6_{F1g)Pn=;FFa-Mr;nFZ2tp7jjdI8=NpRNyrdHqg2m@?&E(KiPZvfK`PF}b5WE|BMW@=(=pR~tI1RUfM5{?ckHd+V0e-<~`M({1_ItBYd`x3A6^Mc7Qv zSthR?T@htBHXi>KIjB?*^8I%+sqFr~)K@2u!!lo72$65g%;=vtk#jz6i@Idg>lVmq z+i?q{V;J3?kLi55lFDAcJ{`wk#)VOteB;WDVTm@=O^$81^)z64EvHl2ot^Zz$%!oS z&ckjWs5QM&tPp*2ZOEiiSG6N@!u{B~{E_1b%)|J@Gj z+8@vtJUNbGi>ejh=A>2z#feuE$8%^(bjmhkAxh{NAz8&*iiUzlm&h_{x76^{^j4 zuslnpvY&48Qn4J9zEB@EgWNP@u))@Jm?%{%E02ggwY4m+T;bf7N$x_H^8LkSK5cln zN3m|pZmZYjlByZ>n3~q(dBb>TBYO%&R(OgWR%eFCcqN1%E7WPTj-3DI{iRfPYfJim z^hy?VygX?t@L0mSQ%!l&g@F_sdR5i`+#PSkrU8+_p;;T}tmWp-pHhwU_8VlS&BO1!IRw2^VX5ve7 z#+gKuS*JO0&6hJyBbv-Q&1jyd4moHv>r_Dj+~JjZp5wUWUCKJHS-0Ab!FnDYPeYii z!)i@Yk2LWGmOC$jJgF&%N=?y9{H`L}oKwxbm^0z`K2Kh$SXTJ-bQbwM*_Qg*Xr4qz zG!HGC-ZNMy+OQNBY(rD;Hxy0~P0^^q@Q7f-M4QF@jLs$J?9&-nun^Ba_kD|3C zzs*jITkUo6a!I^kfdB*`009U<00Izz00bZa0SG`~UIj8DF#P>Lujxfx5P$##AOHaf zKmY;|fB*y_0D*x3p8ul|AOHafKmY;|fB*y_009U<00Q$bfam}7pJPM_0SG_<0uX=z z1Rwwb2tWV=5Ww?))Bpq^009U<00Izz00bZa0SG`~{sr*-fBtif2q6Fg2tWV=5P$## zAOHafKmY>x`yVv`0SG_<0uX=z1Rwwb2tWV=5SV`f@$df^HvdR${>@*oKmY;|fB*y_ z009U<00Izz00bZ~4+5D?GVxv*NK#5B*6{p)9@2^!AOHafKmY;|fB*y_009U<00M6o z!2kdEW*_W@00bZa0SG_<0uX=z1Rwwb2+V_kc>XVK{+ZxESReoa2tWV=5P$##AOHaf WKmY;|m?MGJq literal 0 HcmV?d00001 diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-shm b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..9128f172b1262b05c4639cd9e78cf90ed6ed71ed GIT binary patch literal 32768 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 Date: Thu, 13 Nov 2025 14:02:23 +0100 Subject: [PATCH 44/90] =?UTF-8?q?Button=20NI-Verkn=C3=BCpfungen=20verwalte?= =?UTF-8?q?n=20optimiert=20-=20frmNIProfileigenschaften?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../17.14.1091.29919/CodeChunks.db-wal | Bin 234872 -> 321392 bytes .../17.14.1091.29919/SemanticSymbols.db-wal | Bin 539752 -> 638632 bytes .../frmNIProfileigenschaften.Designer.vb | 103 +++++++++--------- ToolCollection/frmNIProfileigenschaften.resx | 2 +- 4 files changed, 54 insertions(+), 51 deletions(-) diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal index 676371be89ee347e42ac79a3ed678c901b7e72cb..46feb8e4fbb5027990f5276aa83830a29de49ffd 100644 GIT binary patch delta 1450 zcmeyditocY;f5B*7N#xC6;ovy7#PHXn8B(f?EdqzANHpfbvkDYKl0~gm19tyth>-$ zf@LF%JM&}aMrH-3gG{lEpBUR1#TYg)Y?yd4X7i1Oc`R%|-T95NlLeOsPhN0dZ1dJ- zWn8L~$Yy4VwUr!`>XGN-{m3B2YQexim*0Z#GGF}Utb;mCtp7J&{Kc|)!m*tkEI>_p zlOLXo+`RApR>sNE7kMR)C6zX=SDM34iq=Dn93mb0^Ik7M6}7#hm3a$46%~=Pxv#{o|G{!Pb zHe4PA3L_?loj5!!HT|pArERv{Ybh{C6vdM#8=6F{X9;efo>0oH2J;;|(8mP~h)Bcq z9cm2bDN8vSIuzh6u8zofdX?-qu6D3 z6#wzRV)H19Vo#+=Nw<2nza&HpE+0x5UwiZTm~;INip&B=ahb)j1E#ZDEum4o8+#Nl x-kSQxaI(idY*7r%#@3`{<4>1)eQH!fb`lvkyK%+wls!*NR5n`)kZsN;MgT#V8Z7_- delta 15 WcmexxPWZF7M2#)7Pc1lEgTs(3JeSk!a&S$!tSLzchu!WURLwi|C~uM z;$_~!AjKTOFg;3!!-R=z^5%&KLd??({TrcmWPkw(UJ? z9LHHzMUaiESQfouZEb}e7w<;~DOL*x{<-`Xe3$v+CubehVPgFcH1QY9<_X7kazrCCnGz0PuSbJoG_EUbAfjj>FV4VMQ^UT|KFiD4(cV34{e zE1^DjgE|YPhRK3FD+-HfEv-ns$+GKjfj!G~0~*mxH-Mg<#l&3NXgOW)7%Rkw9E^8D z=IlP~n+uMAP#BbB4Fj+R@G$=(Vh}esv1JZwN`hLz0u17c>H5c5L%?B3tPQ9MEcNk; z7)vJ;YuxFhn}rn^1Np=TwS>q8#Z!MImYPw;MARf0ZFy;F)2X>vp-FHT_9S?_B6gQ= zo5VgWNpKbu-azAoC(X$dR)*nBnVba?i{>A`qe*09+J!e|u6(>`)7j7A7brChHDy}- z&%8e6a$6Iwlxc;UGUxKHej@=+nV=wmq)fCRKuwqlfgZf-ytN9%CQKqMKuwny{_O9M z%MaX6N-Dw|&=MhLXADitI$=g3Ow=&A$PECxea3(Q delta 25 gcmZ4SSM9|Qg@zW!7N!>F7M2#)7Pc1lEgTs(0FWyQWB>pF diff --git a/ToolCollection/frmNIProfileigenschaften.Designer.vb b/ToolCollection/frmNIProfileigenschaften.Designer.vb index fbf791b..f558af3 100644 --- a/ToolCollection/frmNIProfileigenschaften.Designer.vb +++ b/ToolCollection/frmNIProfileigenschaften.Designer.vb @@ -24,15 +24,15 @@ Partial Class frmNIProfileigenschaften Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmNIProfileigenschaften)) - Dim TreeNode10 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 1") - Dim TreeNode11 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 2") - Dim TreeNode12 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 3") - Dim TreeNode13 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Parent", New System.Windows.Forms.TreeNode() {TreeNode10, TreeNode11, TreeNode12}) - Dim TreeNode14 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-1", New System.Windows.Forms.TreeNode() {TreeNode13}) - Dim TreeNode15 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-2", New System.Windows.Forms.TreeNode() {TreeNode14}) - Dim TreeNode16 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-3", New System.Windows.Forms.TreeNode() {TreeNode15}) - Dim TreeNode17 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-4", New System.Windows.Forms.TreeNode() {TreeNode16}) - Dim TreeNode18 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Windream-/W-Laufwerk", New System.Windows.Forms.TreeNode() {TreeNode17}) + Dim TreeNode1 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 1") + Dim TreeNode2 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 2") + Dim TreeNode3 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Datei 3") + Dim TreeNode4 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Parent", New System.Windows.Forms.TreeNode() {TreeNode1, TreeNode2, TreeNode3}) + Dim TreeNode5 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-1", New System.Windows.Forms.TreeNode() {TreeNode4}) + Dim TreeNode6 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-2", New System.Windows.Forms.TreeNode() {TreeNode5}) + Dim TreeNode7 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-3", New System.Windows.Forms.TreeNode() {TreeNode6}) + Dim TreeNode8 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("-4", New System.Windows.Forms.TreeNode() {TreeNode7}) + Dim TreeNode9 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Windream-/W-Laufwerk", New System.Windows.Forms.TreeNode() {TreeNode8}) Me.StatusStrip1 = New System.Windows.Forms.StatusStrip() Me.btnSpeichern = New System.Windows.Forms.ToolStripDropDownButton() Me.btnLöschen = New System.Windows.Forms.ToolStripDropDownButton() @@ -557,14 +557,15 @@ Partial Class frmNIProfileigenschaften ' 'btnVerknüpfungen ' - Me.btnVerknüpfungen.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ - Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.btnVerknüpfungen.Location = New System.Drawing.Point(746, 26) + Me.btnVerknüpfungen.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.btnVerknüpfungen.Image = Global.ToolCollection.My.Resources.Resources.link + Me.btnVerknüpfungen.ImageAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnVerknüpfungen.Location = New System.Drawing.Point(791, 30) Me.btnVerknüpfungen.Name = "btnVerknüpfungen" - Me.btnVerknüpfungen.Size = New System.Drawing.Size(80, 23) + Me.btnVerknüpfungen.Size = New System.Drawing.Size(169, 28) Me.btnVerknüpfungen.TabIndex = 49 - Me.btnVerknüpfungen.Text = "Verknüpfungen verwalten ..." + Me.btnVerknüpfungen.Text = "Verknüpfungen verwalten" + Me.btnVerknüpfungen.TextAlign = System.Drawing.ContentAlignment.MiddleLeft Me.btnVerknüpfungen.UseVisualStyleBackColor = True Me.btnVerknüpfungen.Visible = False ' @@ -733,10 +734,11 @@ Partial Class frmNIProfileigenschaften ' 'lblSave ' + Me.lblSave.Anchor = System.Windows.Forms.AnchorStyles.Right Me.lblSave.AutoSize = True Me.lblSave.BackColor = System.Drawing.Color.Yellow Me.lblSave.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.lblSave.Location = New System.Drawing.Point(656, 71) + Me.lblSave.Location = New System.Drawing.Point(699, 76) Me.lblSave.Name = "lblSave" Me.lblSave.Size = New System.Drawing.Size(261, 17) Me.lblSave.TabIndex = 76 @@ -771,7 +773,7 @@ Partial Class frmNIProfileigenschaften Me.TabControl1.Location = New System.Drawing.Point(3, 222) Me.TabControl1.Name = "TabControl1" Me.TabControl1.SelectedIndex = 0 - Me.TabControl1.Size = New System.Drawing.Size(894, 481) + Me.TabControl1.Size = New System.Drawing.Size(978, 491) Me.TabControl1.TabIndex = 78 ' 'TabPage1 @@ -784,7 +786,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(886, 455) + Me.TabPage1.Size = New System.Drawing.Size(970, 465) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "Typ und Quelle" Me.TabPage1.UseVisualStyleBackColor = True @@ -805,7 +807,7 @@ Partial Class frmNIProfileigenschaften Me.grbxLDAP.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.grbxLDAP.Location = New System.Drawing.Point(407, 210) Me.grbxLDAP.Name = "grbxLDAP" - Me.grbxLDAP.Size = New System.Drawing.Size(417, 215) + Me.grbxLDAP.Size = New System.Drawing.Size(501, 225) Me.grbxLDAP.TabIndex = 79 Me.grbxLDAP.TabStop = False Me.grbxLDAP.Text = "Indexierung gegen Active Directory:" @@ -907,7 +909,7 @@ Partial Class frmNIProfileigenschaften Me.grbxVolltext.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.grbxVolltext.Location = New System.Drawing.Point(568, 18) Me.grbxVolltext.Name = "grbxVolltext" - Me.grbxVolltext.Size = New System.Drawing.Size(301, 201) + Me.grbxVolltext.Size = New System.Drawing.Size(385, 211) Me.grbxVolltext.TabIndex = 78 Me.grbxVolltext.TabStop = False Me.grbxVolltext.Text = "Indexierung gegen den Volltext" @@ -960,7 +962,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage2.Size = New System.Drawing.Size(977, 455) + Me.TabPage2.Size = New System.Drawing.Size(958, 455) Me.TabPage2.TabIndex = 1 Me.TabPage2.Text = "Kennzeichnung und Active Directory" Me.TabPage2.UseVisualStyleBackColor = True @@ -996,7 +998,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage3.Location = New System.Drawing.Point(4, 22) Me.TabPage3.Name = "TabPage3" Me.TabPage3.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage3.Size = New System.Drawing.Size(977, 455) + Me.TabPage3.Size = New System.Drawing.Size(958, 455) Me.TabPage3.TabIndex = 2 Me.TabPage3.Text = "Nachbearbeitungsfunktionen 1 (Verschieben, umbenennen)" Me.TabPage3.UseVisualStyleBackColor = True @@ -1283,7 +1285,7 @@ Partial Class frmNIProfileigenschaften Me.TabPage4.Location = New System.Drawing.Point(4, 22) Me.TabPage4.Name = "TabPage4" Me.TabPage4.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage4.Size = New System.Drawing.Size(977, 455) + Me.TabPage4.Size = New System.Drawing.Size(958, 455) Me.TabPage4.TabIndex = 3 Me.TabPage4.Text = "Nachbearbeitungsfunktionen 2 (Ordnerindizes etc)" Me.TabPage4.UseVisualStyleBackColor = True @@ -1323,31 +1325,31 @@ Partial Class frmNIProfileigenschaften Me.TreeViewOrdnerVererbung.ImageList = Me.ImageList1 Me.TreeViewOrdnerVererbung.Location = New System.Drawing.Point(464, 72) Me.TreeViewOrdnerVererbung.Name = "TreeViewOrdnerVererbung" - TreeNode10.ImageKey = "page.png" - TreeNode10.Name = "Knoten3" - TreeNode10.SelectedImageIndex = 1 - TreeNode10.Text = "Datei 1" - TreeNode11.ImageKey = "page.png" - TreeNode11.Name = "Knoten4" - TreeNode11.SelectedImageIndex = 1 - TreeNode11.Text = "Datei 2" - TreeNode12.ImageKey = "page.png" - TreeNode12.Name = "Knoten5" - TreeNode12.SelectedImageIndex = 1 - TreeNode12.Text = "Datei 3" - TreeNode13.Name = "Knoten4" - TreeNode13.Text = "Parent" - TreeNode14.Name = "Knoten3" - TreeNode14.Text = "-1" - TreeNode15.Name = "Knoten2" - TreeNode15.Text = "-2" - TreeNode16.Name = "Knoten5" - TreeNode16.Text = "-3" - TreeNode17.Name = "Knoten1" - TreeNode17.Text = "-4" - TreeNode18.Name = "Knoten0" - TreeNode18.Text = "Windream-/W-Laufwerk" - Me.TreeViewOrdnerVererbung.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode18}) + TreeNode1.ImageKey = "page.png" + TreeNode1.Name = "Knoten3" + TreeNode1.SelectedImageIndex = 1 + TreeNode1.Text = "Datei 1" + TreeNode2.ImageKey = "page.png" + TreeNode2.Name = "Knoten4" + TreeNode2.SelectedImageIndex = 1 + TreeNode2.Text = "Datei 2" + TreeNode3.ImageKey = "page.png" + TreeNode3.Name = "Knoten5" + TreeNode3.SelectedImageIndex = 1 + TreeNode3.Text = "Datei 3" + TreeNode4.Name = "Knoten4" + TreeNode4.Text = "Parent" + TreeNode5.Name = "Knoten3" + TreeNode5.Text = "-1" + TreeNode6.Name = "Knoten2" + TreeNode6.Text = "-2" + TreeNode7.Name = "Knoten5" + TreeNode7.Text = "-3" + TreeNode8.Name = "Knoten1" + TreeNode8.Text = "-4" + TreeNode9.Name = "Knoten0" + TreeNode9.Text = "Windream-/W-Laufwerk" + Me.TreeViewOrdnerVererbung.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode9}) Me.TreeViewOrdnerVererbung.SelectedImageIndex = 0 Me.TreeViewOrdnerVererbung.Size = New System.Drawing.Size(220, 157) Me.TreeViewOrdnerVererbung.TabIndex = 59 @@ -1449,16 +1451,17 @@ Partial Class frmNIProfileigenschaften Me.pnlProfileigenschaften.Controls.Add(Me.txtlastRun) Me.pnlProfileigenschaften.Controls.Add(Me.chkbxAktiv) Me.pnlProfileigenschaften.Controls.Add(Me.Label7) + Me.pnlProfileigenschaften.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlProfileigenschaften.Location = New System.Drawing.Point(0, 22) Me.pnlProfileigenschaften.Name = "pnlProfileigenschaften" - Me.pnlProfileigenschaften.Size = New System.Drawing.Size(900, 706) + Me.pnlProfileigenschaften.Size = New System.Drawing.Size(984, 716) Me.pnlProfileigenschaften.TabIndex = 81 ' 'frmNIProfileigenschaften ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(984, 711) + Me.ClientSize = New System.Drawing.Size(984, 738) Me.Controls.Add(Me.pnlProfileigenschaften) Me.Controls.Add(Me.StatusStrip1) Me.DataBindings.Add(New System.Windows.Forms.Binding("Location", Global.ToolCollection.My.MySettings.Default, "frmNIProfileigenschaften", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)) diff --git a/ToolCollection/frmNIProfileigenschaften.resx b/ToolCollection/frmNIProfileigenschaften.resx index d34599c..5563b1b 100644 --- a/ToolCollection/frmNIProfileigenschaften.resx +++ b/ToolCollection/frmNIProfileigenschaften.resx @@ -161,7 +161,7 @@ einen Startindex erhält, der nicht in der Datenbank existiert. Diese Kennzeichn AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAK - CQAAAk1TRnQBSQFMAgEBAgEAAbgBAAG4AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAAcgBAAHIAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From a038af41931d2524e4a180c3a2bab660853846c1 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 27 Nov 2025 09:24:08 +0100 Subject: [PATCH 45/90] chore: Update .gitignore to exclude Visual Studio `.vs` directory The `.gitignore` file was updated to include the `/.vs` directory. This ensures that temporary and user-specific files generated by Visual Studio are ignored by Git and not tracked in the repository, reducing unnecessary clutter in version control. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 233dbea..49532b9 100644 --- a/.gitignore +++ b/.gitignore @@ -164,3 +164,4 @@ $RECYCLE.BIN/ /NIService/.vs/NIService.csproj.dtbcache.json /.vs/ToolCollection/v17/DocumentLayout.json /.vs/ToolCollection/v17/DocumentLayout.backup.json +/.vs From 3bb034439a19589cc9e0ee18ab061e26430a70e9 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 27 Nov 2025 16:59:27 +0100 Subject: [PATCH 46/90] Fehlerbehandlung bei fehlerhaften Pfaden in DI Profilen: threadDateiimport_DoWork, Profil_Durchlauf, threadDateiimport_RunWorkerCompleted optimiert - frmDIHautpseite --- ToolCollection/frmDIHauptseite.vb | 107 +++++++++++++++++++----------- 1 file changed, 69 insertions(+), 38 deletions(-) diff --git a/ToolCollection/frmDIHauptseite.vb b/ToolCollection/frmDIHauptseite.vb index 4d086c9..20e2859 100644 --- a/ToolCollection/frmDIHauptseite.vb +++ b/ToolCollection/frmDIHauptseite.vb @@ -60,6 +60,7 @@ Public Class frmDIHauptseite Private CriticalErrorInBackgroundWorker As Boolean = False Private manProfile As String + Private FehlerProfileListe As New List(Of String) Private Alles_OK As Boolean = True @@ -268,7 +269,7 @@ Public Class frmDIHauptseite #End Region #Region "*** DoWork: während der BackgroundWorker aktiv ist ***" - Private Sub threadDateiimport_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) 'Handles threadDateiimport.DoWork + Private Sub threadDateiimport_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Dim _TimeStart As Date Dim _TimeEnd As Date Try @@ -283,9 +284,11 @@ Public Class frmDIHauptseite _TimeStart = Now ClassLoggerDI.Add(" Intervall: " & Me.numIntervallDurchlauf.Value, False) ClassLoggerDI.Add("======================================================================", False) + + ' Liste für fehlerhafte Profile zurücksetzen + FehlerProfileListe.Clear() + If _windream.Init Then - - If Manuell = True Then ClassLoggerDI.Add(">> Manueller Durchlauf", False) ClassLoggerDI.Add("Profilname: " & manProfile, False) @@ -298,42 +301,51 @@ Public Class frmDIHauptseite '1. ###### Zählen der Files Gesamtfiles = 0 Dim files_Durchlauf As ReadOnlyCollection(Of String) - For Each item As ClassDIProfil In ClassDIProfile.Profile + For Each item As ClassDIProfil In ClassDIProfile.Profile Me.selectedProfile = ClassDIProfile.getProfilByName(item.OriginalProfilname) 'Nur die files der Aktiven Profile zählen If CBool(selectedProfile.Aktiv) = True Then - If Me.selectedProfile.Subdirectories = True Then - files_Durchlauf = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchAllSubDirectories, "*.*") - Else - files_Durchlauf = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchTopLevelOnly, "*.*") - End If - 'files_Durchlauf = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchTopLevelOnly, "*.*") - Gesamtfiles += files_Durchlauf.Count + Try + If Me.selectedProfile.Subdirectories = True Then + files_Durchlauf = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchAllSubDirectories, "*.*") + Else + files_Durchlauf = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchTopLevelOnly, "*.*") + End If + Gesamtfiles += files_Durchlauf.Count + Catch ex As Exception + ' Profil zur Fehlerliste hinzufügen + FehlerProfileListe.Add(item.OriginalProfilname) + ClassLoggerDI.Add($"## FEHLER beim Zugriff auf Quellordner für Profil '{item.OriginalProfilname}': {ex.Message}", True) + End Try End If - - 'MsgBox(files_Durchlauf.Count, MsgBoxStyle.Information, item.OriginalProfilname) Next + ClassLoggerDI.Add("Gesamtanzahl der zu importierenden Dateien: " & Gesamtfiles, False) + If Gesamtfiles > 0 Then '2. Jetzt das Durchlaufen jedes Profiles For Each item As ClassDIProfil In ClassDIProfile.Profile Me.selectedProfile = ClassDIProfile.getProfilByName(item.OriginalProfilname) ClassLoggerDI.Add("Profilname: " & selectedProfile.Profilname, False) + ' Überprüfen ob Profil aktiv oder inaktiv If CBool(selectedProfile.Aktiv) = False Then ClassLoggerDI.Add(">> Profil: " & selectedProfile.Profilname & " ist inaktiv geschaltet", False) ClassLoggerDI.Add("", False) + ElseIf FehlerProfileListe.Contains(item.OriginalProfilname) Then + ' Profil überspringen, wenn es bereits als fehlerhaft markiert wurde + ClassLoggerDI.Add(">> Profil: " & selectedProfile.Profilname & " wird übersprungen (fehlerhafter Pfad)", False) + ClassLoggerDI.Add("", False) Else ' den Durchlaufszeitpunkt speichern selectedProfile.LastRun = Now selectedProfile.Save(False) - 'Und nun das PRofil durchlaufen + 'Und nun das Profil durchlaufen ClassLoggerDI.Add("- Start des Profildurchlaufes ", False) Profil_Durchlauf() End If - Next End If End If @@ -342,10 +354,9 @@ Public Class frmDIHauptseite End If '### Catch ex As Exception - ' 'MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei threadDateiimport_DoWork:") ClassLoggerDI.Add(" ## Fehler bei thread_DI_DoWork: " & ex.Message, False) - ' Resume Next End Try + _TimeEnd = Now Dim seconds As Integer = (_TimeEnd - _TimeStart).TotalSeconds @@ -358,8 +369,6 @@ Public Class frmDIHauptseite Else ClassLoggerDI.Add(" Dauer: " & (seconds / 60).ToString & " Minuten", False) End If - - End Sub Public Function func_check_file_use(ByVal filename) As Boolean filename = filename.Replace(My.Settings.vWLaufwerk, "\\windream\objects") @@ -426,11 +435,22 @@ Public Class frmDIHauptseite Dim oFileAusschlussList As New ArrayList 'Variable für das "Letzte Subdirectory" Dim oLastFolderinFiles As String = "" - If Me.selectedProfile.Subdirectories = True Then - Me.ImportFileList = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchAllSubDirectories, "*.*") - Else - Me.ImportFileList = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchTopLevelOnly, "*.*") - End If + + Try + If Me.selectedProfile.Subdirectories = True Then + Me.ImportFileList = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchAllSubDirectories, "*.*") + Else + Me.ImportFileList = My.Computer.FileSystem.GetFiles(Me.selectedProfile.OriginalQuellordner, FileIO.SearchOption.SearchTopLevelOnly, "*.*") + End If + Catch ex As Exception + ' Profil zur Fehlerliste hinzufügen, falls noch nicht vorhanden + If Not FehlerProfileListe.Contains(Me.selectedProfile.OriginalProfilname) Then + FehlerProfileListe.Add(Me.selectedProfile.OriginalProfilname) + End If + ClassLoggerDI.Add($"## FEHLER beim Zugriff auf Quellordner für Profil '{Me.selectedProfile.OriginalProfilname}': {ex.Message}", True) + Exit Sub + End Try + Dim oError As Boolean = False Dim DT_TBTC_DI_REGEX_MATCH As DataTable Try @@ -873,8 +893,6 @@ Public Class frmDIHauptseite #Region "*** BackgroundWorker wurde beendet ***" Private Sub threadDateiimport_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) 'Handles threadDateiimport.RunWorkerCompleted - ' This event fires when the DoWork event completes - Try Dim result As String = "" @@ -884,19 +902,32 @@ Public Class frmDIHauptseite MsgBox("Beim Dateiimport ist ein Fehler aufgetreten. Der Vorgang wurde abgebrochen." & vbNewLine & vbNewLine & "Dateiimport: Fehlernachricht:" & vbNewLine & e.Error.Message, MsgBoxStyle.Exclamation, "Vorgang auf Grund eines Fehlers abgebrochen") Else Me.progressImport.Value = 100 - 'MsgBox("Der Dateiimport für das Profil '" & Me.cmbProfilauswahl.SelectedItem & "' wurde erfolgreich durchgeführt.", MsgBoxStyle.Information, "Dateiimport: Vorgang erfolgreich beendet") - End If - ''MsgBox(filenameQuelle.Substring(0, filenameQuelle.LastIndexOf("\"))) - 'If Me.selectedProfile.VerzeichnisLöschen Then - ' Try - ' If Me.txtQuellordner.Text <> "" Then - ' My.Computer.FileSystem.DeleteDirectory(Me.txtQuellordner.Text, FileIO.DeleteDirectoryOption.ThrowIfDirectoryNonEmpty) - ' End If - ' Catch ex As Exception - ' MsgBox("Der Vorgang wurde abgeschlossen. Das Quellverzeichnis konnte jedoch nicht gelöscht werden, da sich in dem Ordner noch Dateien/Verzeichnisse befinden.", MsgBoxStyle.Information, "Vorgang beendet:") - ' End Try - 'End If + ' Fehlermeldung für fehlerhafte Profile anzeigen + If FehlerProfileListe.Count > 0 Then + Dim fehlerMessage As New System.Text.StringBuilder() + fehlerMessage.AppendLine("ACHTUNG: Fehler in folgenden Profilen:") + fehlerMessage.AppendLine() + + For Each profilname As String In FehlerProfileListe + fehlerMessage.AppendLine(" • " & profilname) + Next + + fehlerMessage.AppendLine() + fehlerMessage.AppendLine("Bitte kontrollieren Sie die hinterlegten Quell- und Zielpfade,") + fehlerMessage.AppendLine("sowie die Zugriffsberechtigungen!") + + MsgBox(fehlerMessage.ToString(), MsgBoxStyle.Exclamation, "Fehlerhafte Profile erkannt") + + ' Fehler auch im Log vermerken + ClassLoggerDI.Add("======================================================================", False) + ClassLoggerDI.Add(" FEHLERHAFTE PROFILE: " & FehlerProfileListe.Count, True) + For Each profilname As String In FehlerProfileListe + ClassLoggerDI.Add(" - " & profilname, True) + Next + ClassLoggerDI.Add("======================================================================", False) + End If + End If ' den ersten Knoten öffnen und direkt wieder schließen, damit der letzte Knoten korrekt angezeigt wird ' -> sonst wird das letzte Element nicht richtig (nur zur Hälfte) angezeigt From 0c71f75a0cda291d698132b1e73346c45f5d99f6 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 1 Dec 2025 10:30:53 +0100 Subject: [PATCH 47/90] Flag zur MsgBox bei fehlerhaften DIProfilen - frmDIHauptseite --- ToolCollection/frmDIHauptseite.vb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ToolCollection/frmDIHauptseite.vb b/ToolCollection/frmDIHauptseite.vb index 20e2859..ab380df 100644 --- a/ToolCollection/frmDIHauptseite.vb +++ b/ToolCollection/frmDIHauptseite.vb @@ -61,6 +61,7 @@ Public Class frmDIHauptseite Private manProfile As String Private FehlerProfileListe As New List(Of String) + Private FehlerMsgBoxVisible As Boolean = False Private Alles_OK As Boolean = True @@ -892,7 +893,7 @@ Public Class frmDIHauptseite #End Region #Region "*** BackgroundWorker wurde beendet ***" - Private Sub threadDateiimport_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) 'Handles threadDateiimport.RunWorkerCompleted + Private Sub threadDateiimport_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Try Dim result As String = "" @@ -904,7 +905,11 @@ Public Class frmDIHauptseite Me.progressImport.Value = 100 ' Fehlermeldung für fehlerhafte Profile anzeigen - If FehlerProfileListe.Count > 0 Then + ' NUR wenn keine MessageBox bereits angezeigt wird + If FehlerProfileListe.Count > 0 AndAlso Not FehlerMsgBoxVisible Then + ' Flag setzen BEVOR die MessageBox angezeigt wird + FehlerMsgBoxVisible = True + Dim fehlerMessage As New System.Text.StringBuilder() fehlerMessage.AppendLine("ACHTUNG: Fehler in folgenden Profilen:") fehlerMessage.AppendLine() @@ -917,8 +922,12 @@ Public Class frmDIHauptseite fehlerMessage.AppendLine("Bitte kontrollieren Sie die hinterlegten Quell- und Zielpfade,") fehlerMessage.AppendLine("sowie die Zugriffsberechtigungen!") + ' MessageBox anzeigen (blockiert bis Benutzer OK klickt) MsgBox(fehlerMessage.ToString(), MsgBoxStyle.Exclamation, "Fehlerhafte Profile erkannt") + ' Flag zurücksetzen NACHDEM die MessageBox geschlossen wurde + FehlerMsgBoxVisible = False + ' Fehler auch im Log vermerken ClassLoggerDI.Add("======================================================================", False) ClassLoggerDI.Add(" FEHLERHAFTE PROFILE: " & FehlerProfileListe.Count, True) From d278659c5fb4ba7c4fd134a36595863e1b67778a Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 4 Dec 2025 09:29:30 +0100 Subject: [PATCH 48/90] Instanzname in Titelleiste der Form und bei Tray-Icon eingeblendet - frmStart.Designer --- ToolCollection/frmStart.Designer.vb | 4 ++-- ToolCollection/frmUebersicht.Designer.vb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ToolCollection/frmStart.Designer.vb b/ToolCollection/frmStart.Designer.vb index 693f258..2df3b6d 100644 --- a/ToolCollection/frmStart.Designer.vb +++ b/ToolCollection/frmStart.Designer.vb @@ -425,7 +425,7 @@ Partial Class frmStart Me.niToolcollection.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info Me.niToolcollection.ContextMenuStrip = Me.ContextMenuStrip1 Me.niToolcollection.Icon = CType(resources.GetObject("niToolcollection.Icon"), System.Drawing.Icon) - Me.niToolcollection.Text = "Tool Collection für windream" + Me.niToolcollection.Text = $"ToolCollection - {My.Settings.vInstanceName}" ' 'ContextMenuStrip1 ' @@ -474,7 +474,7 @@ Partial Class frmStart Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.IsMdiContainer = True Me.Name = "frmStart" - Me.Text = "Tool Collection für windream" + Me.Text = $"ToolCollection - {My.Settings.vInstanceName}" Me.StatusStrip1.ResumeLayout(False) Me.StatusStrip1.PerformLayout() Me.menHauptmenü.ResumeLayout(False) diff --git a/ToolCollection/frmUebersicht.Designer.vb b/ToolCollection/frmUebersicht.Designer.vb index f167ff5..468ea08 100644 --- a/ToolCollection/frmUebersicht.Designer.vb +++ b/ToolCollection/frmUebersicht.Designer.vb @@ -249,7 +249,7 @@ Partial Class frmUebersicht Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.MainMenuStrip = Me.MenuStrip1 Me.Name = "frmUebersicht" - Me.Text = "Tool Collection für windream - Profil Übersicht (beta)" + Me.Text = "ToolCollection - Profil Übersicht (beta)" Me.StatusStrip1.ResumeLayout(False) Me.StatusStrip1.PerformLayout() Me.SplitContainer1.Panel1.ResumeLayout(False) From c6c1ce4e7060a576a18973084435c759cf0231d4 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 4 Dec 2025 09:47:25 +0100 Subject: [PATCH 49/90] Footer und Buttons verankert - frmNIVerknuepfungen --- ToolCollection/frmNIVerknuepfungen.Designer.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index 1bf7f27..9ac515f 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -1908,11 +1908,12 @@ Partial Class frmNIVerknuepfungen ' 'pnlFooter ' + Me.pnlFooter.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.pnlFooter.BackColor = System.Drawing.Color.Transparent Me.pnlFooter.Controls.Add(Me.btnSaveAllAndClose) Me.pnlFooter.Controls.Add(Me.btnCancelAllAndClose) Me.pnlFooter.Controls.Add(Me.btnSaveAll) - Me.pnlFooter.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlFooter.Location = New System.Drawing.Point(0, 250) Me.pnlFooter.Name = "pnlFooter" Me.pnlFooter.Size = New System.Drawing.Size(1265, 44) @@ -1920,6 +1921,7 @@ Partial Class frmNIVerknuepfungen ' 'btnSaveAllAndClose ' + Me.btnSaveAllAndClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btnSaveAllAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight Me.btnSaveAllAndClose.DialogResult = System.Windows.Forms.DialogResult.OK Me.btnSaveAllAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) @@ -1932,6 +1934,7 @@ Partial Class frmNIVerknuepfungen ' 'btnCancelAllAndClose ' + Me.btnCancelAllAndClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btnCancelAllAndClose.BackColor = System.Drawing.SystemColors.ControlLightLight Me.btnCancelAllAndClose.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.btnCancelAllAndClose.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) @@ -1944,6 +1947,7 @@ Partial Class frmNIVerknuepfungen ' 'btnSaveAll ' + Me.btnSaveAll.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.btnSaveAll.BackColor = System.Drawing.SystemColors.ControlLightLight Me.btnSaveAll.Enabled = False Me.btnSaveAll.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) From 57e3984c26e6dc8d33483646663acabed49f4499 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 12 Feb 2026 14:00:37 +0100 Subject: [PATCH 50/90] Reset manually_cancel flag before profile run Changed manually_cancel default to False and explicitly reset it before starting profile runs to prevent unintended early cancellation. --- ToolCollection/frmNIHauptseite.vb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 23ea244..228a810 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -29,7 +29,7 @@ Public Class frmNIHauptseite Private _fulltext As clsNIFulltext Private manuallyRun As Boolean = False - Private manually_cancel As Boolean = True + Private manually_cancel As Boolean = False '#### Variablen für das Profil Private myNIDatatable As DataTable Private myNIArrayIndexe() As String = Nothing ' zum Speichern der Indexe @@ -794,6 +794,7 @@ Public Class frmNIHauptseite Me.ProgressBar1.Value = 0 Me.Refresh() + manually_cancel = False Me.startProfileDurchlauf() Else _Logger.Warn("Attention: ClassNIProfile.Profile IsNothing") From beb91f660397ad7f1ad801634de8340d3e0e7d9c Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 12 Feb 2026 14:02:39 +0100 Subject: [PATCH 51/90] Add NotifyIcon to frmStart and update caption logic Added NotifyIcon component to frmStart, including icon and tray location in resources. Introduced CaptionForm() to centralize window caption and NotifyIcon tooltip logic, with truncation for long texts. Updated menu item sizes and reorganized status label initialization. Removed interpolated strings from designer properties. Cleaned up designer and resource references for NotifyIcon. --- ToolCollection/frmStart.Designer.vb | 32 ++- ToolCollection/frmStart.resx | 389 +++++++++++++++++++++++++++- ToolCollection/frmStart.vb | 18 +- 3 files changed, 423 insertions(+), 16 deletions(-) diff --git a/ToolCollection/frmStart.Designer.vb b/ToolCollection/frmStart.Designer.vb index 2df3b6d..0212fa4 100644 --- a/ToolCollection/frmStart.Designer.vb +++ b/ToolCollection/frmStart.Designer.vb @@ -29,6 +29,7 @@ Partial Class frmStart Me.ToolStripStatusLabel2 = New System.Windows.Forms.ToolStripStatusLabel() Me.tslblVersion = New System.Windows.Forms.ToolStripStatusLabel() Me.ToolStripStatusLabel_LogDeleteTime = New System.Windows.Forms.ToolStripStatusLabel() + Me.ToolStripStatusLabel_ConnectionString = New System.Windows.Forms.ToolStripStatusLabel() Me.menHauptmenü = New System.Windows.Forms.MenuStrip() Me.DateiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ÜbersichtToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -63,7 +64,7 @@ Partial Class frmStart Me.TimerNIRestart = New System.Windows.Forms.Timer(Me.components) Me.TimerErrorLog = New System.Windows.Forms.Timer(Me.components) Me.TimerDeleteLogfiles = New System.Windows.Forms.Timer(Me.components) - Me.ToolStripStatusLabel_ConnectionString = New System.Windows.Forms.ToolStripStatusLabel() + Me.NotifyIcon = New System.Windows.Forms.NotifyIcon(Me.components) Me.StatusStrip1.SuspendLayout() Me.menHauptmenü.SuspendLayout() Me.Panel1.SuspendLayout() @@ -128,6 +129,15 @@ Partial Class frmStart Me.ToolStripStatusLabel_LogDeleteTime.Size = New System.Drawing.Size(270, 20) Me.ToolStripStatusLabel_LogDeleteTime.Text = "Zeitpunkt der automatischen Löschung von Logs" ' + 'ToolStripStatusLabel_ConnectionString + ' + Me.ToolStripStatusLabel_ConnectionString.BorderSides = CType((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Top) _ + Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Right) _ + Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) + Me.ToolStripStatusLabel_ConnectionString.Name = "ToolStripStatusLabel_ConnectionString" + Me.ToolStripStatusLabel_ConnectionString.Size = New System.Drawing.Size(129, 20) + Me.ToolStripStatusLabel_ConnectionString.Text = "Datenbankverbindung" + ' 'menHauptmenü ' Me.menHauptmenü.BackColor = System.Drawing.SystemColors.Control @@ -150,20 +160,20 @@ Partial Class frmStart ' Me.ÜbersichtToolStripMenuItem.Image = Global.ToolCollection.My.Resources.Resources.Auslesen1 Me.ÜbersichtToolStripMenuItem.Name = "ÜbersichtToolStripMenuItem" - Me.ÜbersichtToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.ÜbersichtToolStripMenuItem.Size = New System.Drawing.Size(149, 22) Me.ÜbersichtToolStripMenuItem.Text = "Übersicht" ' 'BeendenToolStripMenuItem ' Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem" - Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(149, 22) Me.BeendenToolStripMenuItem.Text = "Beenden" ' 'ZeigeLogFileToolStripMenuItem ' Me.ZeigeLogFileToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ÖffneLogverzeichnisToolStripMenuItem}) Me.ZeigeLogFileToolStripMenuItem.Name = "ZeigeLogFileToolStripMenuItem" - Me.ZeigeLogFileToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.ZeigeLogFileToolStripMenuItem.Size = New System.Drawing.Size(149, 22) Me.ZeigeLogFileToolStripMenuItem.Text = "Zeige Log-File" ' 'ÖffneLogverzeichnisToolStripMenuItem @@ -425,7 +435,6 @@ Partial Class frmStart Me.niToolcollection.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info Me.niToolcollection.ContextMenuStrip = Me.ContextMenuStrip1 Me.niToolcollection.Icon = CType(resources.GetObject("niToolcollection.Icon"), System.Drawing.Icon) - Me.niToolcollection.Text = $"ToolCollection - {My.Settings.vInstanceName}" ' 'ContextMenuStrip1 ' @@ -452,14 +461,11 @@ Partial Class frmStart ' Me.TimerDeleteLogfiles.Interval = 1000 ' - 'ToolStripStatusLabel_ConnectionString + 'NotifyIcon ' - Me.ToolStripStatusLabel_ConnectionString.BorderSides = CType((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Top) _ - Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Right) _ - Or System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom), System.Windows.Forms.ToolStripStatusLabelBorderSides) - Me.ToolStripStatusLabel_ConnectionString.Name = "ToolStripStatusLabel_ConnectionString" - Me.ToolStripStatusLabel_ConnectionString.Size = New System.Drawing.Size(129, 20) - Me.ToolStripStatusLabel_ConnectionString.Text = "Datenbankverbindung" + Me.NotifyIcon.Icon = CType(resources.GetObject("NotifyIcon.Icon"), System.Drawing.Icon) + Me.NotifyIcon.Text = "NotifyIcon" + Me.NotifyIcon.Visible = True ' 'frmStart ' @@ -474,7 +480,6 @@ Partial Class frmStart Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.IsMdiContainer = True Me.Name = "frmStart" - Me.Text = $"ToolCollection - {My.Settings.vInstanceName}" Me.StatusStrip1.ResumeLayout(False) Me.StatusStrip1.PerformLayout() Me.menHauptmenü.ResumeLayout(False) @@ -529,4 +534,5 @@ Partial Class frmStart Friend WithEvents TimerDeleteLogfiles As Timer Friend WithEvents ToolStripStatusLabel_LogDeleteTime As ToolStripStatusLabel Friend WithEvents ToolStripStatusLabel_ConnectionString As ToolStripStatusLabel + Friend WithEvents NotifyIcon As NotifyIcon End Class diff --git a/ToolCollection/frmStart.resx b/ToolCollection/frmStart.resx index 3d73fd5..609a45f 100644 --- a/ToolCollection/frmStart.resx +++ b/ToolCollection/frmStart.resx @@ -159,7 +159,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAO - FAAAAk1TRnQBSQFMAgEBCQEAAWABAwFgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + FAAAAk1TRnQBSQFMAgEBCQEAAXABAwFwAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -646,6 +646,393 @@ 1049, 17 + + 1208, 17 + + + + AAABAAcAEBAQAAEABAAoAQAAdgAAADAwAAABAAgAqA4AAJ4BAAAgIAAAAQAIAKgIAABGEAAAEBAAAAEA + CABoBQAA7hgAADAwAAABACAAqCUAAFYeAAAgIAAAAQAgAKgQAAD+QwAAEBAAAAEAIABoBAAAplQAACgA + AAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA + gACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAJmZmQAAAACZu7u7mQAACb + uzC7u7kACbu7MLu7u5AJu7swuwu7kJu7swC7C7u5m7uzALMAu7mbA7MwMDADuZswAzAwMzC5m7MAMwC7 + u7mbuzCzALu7uQm7s7sDu7uQCbu7uwO7u5AAm7u7A7u5AAAJm7u7uZAAAAAJmZmQAAD4HwAA4AcAAMAD + AACAAQAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAACAAQAAwAMAAOAHAAD4HwAAKAAAADAA + AABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAP///wAAAIAAAIAAAACAgACAAAAAgACAAICA + AACAgIAAwNzAAPDKpgCqPyoA/z8qAABfKgBVXyoAql8qAP9fKgAAfyoAVX8qAKp/KgD/fyoAAJ8qAFWf + KgCqnyoA/58qAAC/KgBVvyoAqr8qAP+/KgAA3yoAVd8qAKrfKgD/3yoAAP8qAFX/KgCq/yoA//8qAAAA + VQBVAFUAqgBVAP8AVQAAH1UAVR9VAKofVQD/H1UAAD9VAFU/VQCqP1UA/z9VAABfVQBVX1UAql9VAP9f + VQAAf1UAVX9VAKp/VQD/f1UAAJ9VAFWfVQCqn1UA/59VAAC/VQBVv1UAqr9VAP+/VQAA31UAVd9VAKrf + VQD/31UAAP9VAFX/VQCq/1UA//9VAAAAfwBVAH8AqgB/AP8AfwAAH38AVR9/AKoffwD/H38AAD9/AFU/ + fwCqP38A/z9/AABffwBVX38Aql9/AP9ffwAAf38AVX9/AKp/fwD/f38AAJ9/AFWffwCqn38A/59/AAC/ + fwBVv38Aqr9/AP+/fwAA338AVd9/AKrffwD/338AAP9/AFX/fwCq/38A//9/AAAAqgBVAKoAqgCqAP8A + qgAAH6oAVR+qAKofqgD/H6oAAD+qAFU/qgCqP6oA/z+qAABfqgBVX6oAql+qAP9fqgAAf6oAVX+qAKp/ + qgD/f6oAAJ+qAFWfqgCqn6oA/5+qAAC/qgBVv6oAqr+qAP+/qgAA36oAVd+qAKrfqgD/36oAAP+qAFX/ + qgCq/6oA//+qAAAA1ABVANQAqgDUAP8A1AAAH9QAVR/UAKof1AD/H9QAAD/UAFU/1ACqP9QA/z/UAABf + 1ABVX9QAql/UAP9f1AAAf9QAVX/UAKp/1AD/f9QAAJ/UAFWf1ACqn9QA/5/UAAC/1ABVv9QAqr/UAP+/ + 1AAA39QAVd/UAKrf1AD/39QAAP/UAFX/1ACq/9QA///UAFUA/wCqAP8AAB//AFUf/wCqH/8A/x//AAA/ + /wBVP/8Aqj//AP8//wAAX/8AVV//AKpf/wD/X/8AAH//AFV//wCqf/8A/3//AACf/wBVn/8Aqp//AP+f + /wAAv/8AVb//AKq//wD/v/8AAN//AFXf/wCq3/8A/9//AFX//wCq//8A/8zMAP/M/wD//zMA//9mAP// + mQD//8wAAH8AAFV/AACqfwAA/38AAACfAABVnwAAqp8AAP+fAAAAvwAAVb8AAKq/AAD/vwAAAN8AAFXf + AACq3wAA/98AAFX/AACq/wAAAAAqAFUAKgCqACoA/wAqAAAfKgBVHyoAqh8qAP8fKgAAPyoAVT8qAPD7 + /wCkoKAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAAAAAAD///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////xsbGxsbGxsbGxv////////////////////////////////////// + ////////xsbGxsrGxsrKxsbKxsbGxv///////////////////////////////////////8bGpMbKxqTK + xsbGxsqkxsrGpMbG///////////////////////////////////GxqTLxsvGy8bKysrKysrGy8bLxsuk + xsb//////////////////////////////8bGysbKpcrKysrKysrKysrKysrKpcrGysbG//////////// + ////////////////xsaly6TKysrKysrKys7KysrKysrKysqky6XGxv/////////////////////////G + xsrGysrKysrOynz//3zKysrOys7KysrKysbKxsb//////////////////////8bLpMvKysrOysrKyiz/ + //TOys7KysrKys7KysrLpMvG////////////////////xsrGysrKysrKys7KzvD///DGzsrOzsrOysrK + ysrKysbKxv/////////////////GysbKysrKzsrOys7KgPD///+ozs7KzsrOys7KzsrKysrGysb///// + ///////////GysbKysrKysrKzsvOA/////+kzs7Ozs7LzsrKysrKysrGysb//////////////8aky8rK + ysrOys7Ozs7OLP////8Dzs7OzqgDqM7Oys7KysrKy6TG/////////////8bGysrKzs7KzsrOzs7O9P// + //9Uzs7OqCz/LKjKzsrOzsrKysbG////////////xsrLysrKysrKzs7Ozs6k8P////8szs7OpP///1TO + zsrKysrKysvKxv//////////xsbKysrKzs7Ozs7Ozs4D///////wzs7OgP////+Azs7OzsrKysrGxv// + ////////xsvKysrKysrOzs7Ozs5U////////qM7OMP/////0qM7KysrKysrLxv/////////GpMrKys7K + zs7Ozs7Ozs70//8s8P//gM6oLP//////VM7OzsrOysrKpMb////////GysvKzsrOzsvOys7Ozqjw//+A + 8P//fM6o8P//8P//8IDLzs7KzsrLysb////////Gxsp88PDw8PDw9APOznz///+oLP//MM6o///wA/D/ + //AsMCwsLHzKxsb////////Gy8r///////////+AzlT//yzOMP//LM4D///0znz////////////Ky8b/ + ///////Gxsos////8P////8sqDD//1TOA///8M5U//8szqgw//////////DKxsb////////GysqkA3xY + WAMw////VPD//4DOgOz/8Kj0//9Uzs6oVDAwUDAwUIDKysb////////GysrOysrOzs7KLP///////6jO + qP///wPw//ADzs7Ozs7Ozs7Kys7Kysb////////Gy8rKzsrOys7OgP//////9KjOzvD//yz///Ckzs7O + zs7Oys7KzsrKy8b////////GysrKys7Kzs7OzjD/////VMrOziz///////TOzs7Ozs7OzsrOysrKysb/ + ///////GxsrKzsrOzs7OzqTw////A87OzjD//////yzOzs7Ozs7Ozs7KzsrKxsb/////////xsrKys7K + zs7Ozs5U////pM7OzgP//////1jOzs7Ozs7OzsrOysrKxv//////////xsrKys7KzsrOzs6oLP8srM7O + zqT/////8HzOzs7Ozs7KzsrOysrKxv//////////xqTKys7Kzs7Ozs7OqICozs7Ozqj/////8KjOzs7O + zs7OzsrOysqkxv///////////8bKysrOzs7Ozs7Ozs7Ozs7Ozs7w////9MrOzs7Ozs7Ozs7KysrG//// + /////////8bKysrKzs7Ozs7Ozs7Ozs7Ozs70////LM7Ozs7Ozs7OzsrKysrG///////////////GysrO + zs7Ozs7Ozs7Ozs7Ozs5U////A87Ozs7Ozs7Ozs7Kysb////////////////GysrKzs7OztPOzs7Ozs7O + zs4D///wgM7Ozs7Tzs7OzsrKysb/////////////////xsrKys7Q087O087Tzs7Ozs6k///wqNPO087O + 09DOysrKxv///////////////////8bKysrOztDT0NPQ09DT0NPTLfAx09DT0NPQzs7KysrG//////// + ///////////////GysrOztDT0NPQ09DT09DQ09PQ09DT0NPQzs7Kysb///////////////////////// + xsrKys7Q09P20NPQ0/b209DT0PbT09DOysrKxv///////////////////////////8bKysrOztD20/b2 + 9tDQ9vb20/bQzs7KysrG///////////////////////////////GxsrKysrO0PbQ9tPT9tD20M7KysrK + xsb//////////////////////////////////8bGys7Kys7OztDQzs7OysrOysbG//////////////// + ////////////////////////xsbGysrKzsrKzsrKysbGxv////////////////////////////////// + ////////////xsbGxsbGxsbGxv////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////8AAP///////wAA////////AAD//+AH//8AAP//AAD//wAA//wAAD//AAD/8AAAD/8AAP/g + AAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD8AAAAAD8AAPwAAAAAPwAA+AAAAAAf + AAD4AAAAAB8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAOAAAAAABwAA4AAAAAAHAADgAAAAAAcAAOAA + AAAABwAA4AAAAAAHAADgAAAAAAcAAOAAAAAABwAA4AAAAAAHAADgAAAAAAcAAOAAAAAABwAA8AAAAAAP + AADwAAAAAA8AAPAAAAAADwAA+AAAAAAfAAD4AAAAAB8AAPwAAAAAPwAA/AAAAAA/AAD+AAAAAH8AAP8A + AAAA/wAA/4AAAAH/AAD/wAAAA/8AAP/gAAAH/wAA//AAAA//AAD//AAAP/8AAP//AAD//wAA///gB/// + AAD///////8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAAB + AAAAAQAA////AAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADA3MAA8MqmAKo/KgD/PyoAAF8qAFVf + KgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/KgAAnyoAVZ8qAKqfKgD/nyoAAL8qAFW/KgCqvyoA/78qAADf + KgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/KgD//yoAAABVAFUAVQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8f + VQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVfVQCqX1UA/19VAAB/VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqf + VQD/n1UAAL9VAFW/VQCqv1UA/79VAADfVQBV31UAqt9VAP/fVQAA/1UAVf9VAKr/VQD//1UAAAB/AFUA + fwCqAH8A/wB/AAAffwBVH38Aqh9/AP8ffwAAP38AVT9/AKo/fwD/P38AAF9/AFVffwCqX38A/19/AAB/ + fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqffwD/n38AAL9/AFW/fwCqv38A/79/AADffwBV338Aqt9/AP/f + fwAA/38AVf9/AKr/fwD//38AAACqAFUAqgCqAKoA/wCqAAAfqgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/ + qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/qgBVf6oAqn+qAP9/qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/ + qgCqv6oA/7+qAADfqgBV36oAqt+qAP/fqgAA/6oAVf+qAKr/qgD//6oAAADUAFUA1ACqANQA/wDUAAAf + 1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/1AD/P9QAAF/UAFVf1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/ + 1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/1ACqv9QA/7/UAADf1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/ + 1AD//9QAVQD/AKoA/wAAH/8AVR//AKof/wD/H/8AAD//AFU//wCqP/8A/z//AABf/wBVX/8Aql//AP9f + /wAAf/8AVX//AKp//wD/f/8AAJ//AFWf/wCqn/8A/5//AAC//wBVv/8Aqr//AP+//wAA3/8AVd//AKrf + /wD/3/8AVf//AKr//wD/zMwA/8z/AP//MwD//2YA//+ZAP//zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWf + AACqnwAA/58AAAC/AABVvwAAqr8AAP+/AAAA3wAAVd8AAKrfAAD/3wAAVf8AAKr/AAAAACoAVQAqAKoA + KgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/KgBVPyoA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAP8A + /wD//wAAAAAAAP////////////////////////////////////////////////////////////////// + ///////////////////////////////////GxsbGxsbGxv/////////////////////////////GxsbK + ysrKysrGxsb////////////////////////GxsrKysrKysrKysrKysbG////////////////////xsbK + ysrKfPBYzsrKysrKysbG/////////////////8bKysrKysoD/yjKys7KysrKysrG///////////////G + ysrKys7KzlD/8KzOys7KzsrKysrG////////////xsrKysrOzsqo9P//qM7OzsrOzsrKysrG//////// + ///GysrKzsrOzqjw//+Azs6kA87KzsrKysb/////////xsrKzsrOzs7OfP///wPOziz/VM7Oys7Kysb/ + ///////GysrOzs7Ozs4w////VM6o8P//qM7OzsrKxv//////xsbKzsrOzs7Oyiz/8P/0zoDw///0ys7K + zsrGxv/////GyqSopKiAqM6o8P9U//DOfP/w//9YqKioxsrG/////8bKLP/////0yoD/9IDw8KhU/1QD + ///w8P8sysb/////xsos8PDw//9UWP9UqPD/gCz/fM4s8P//8PTKxv/////Gys6oqKgD///w/1jOLP9U + 9P+AzqiAqKSAysrG/////8bKys7Ozs4s////gM4w//D/8KjOzs7Ozs7Kysb/////xsrKzs7OzoDw//Co + zgP///8szs7Ozs7OzsrKxv/////GysrOzs7OzlT/LM7OgP///zDOzs7Ozs7OysrG///////Gys7Ozs7O + qFiAzs6o////fM7Ozs7Ozs7Kxv///////8bKys7Ozs7Ozs7Ozsrw//CAzs7Ozs7OysrG/////////8bK + ys7Ozs7Ozs7Oziz/8KjOzs7OzsrKxv//////////xsrKzs7O0NLOzs7OMP8sztLQzs7OysrG//////// + ////xsrKztDT0NDT0NOF8AfQ0NPQzsrKxv//////////////xsrKztDT09DT0NDT0NPT0M7Kysb///// + ////////////xsrKztDQ9vbT0wD20NDOysrG////////////////////xsbKysvOztDQzs7LysrGxv// + /////////////////////8bGysrKysrKysrGxv/////////////////////////////GxsbGxsbGxv// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////wD///wAP//wAA//4AAH/8AAA/+AAAH/AAAA/wAAAP4AAAB+AA + AAfAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA+AAAAfgAAAH8AAAD/AAAA/4AAAf/AAAP/4A + AH//AAD//8AD///wD////////////ygAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAB + AAD///8AAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDcwADwyqYAqj8qAP8/KgAAXyoAVV8qAKpf + KgD/XyoAAH8qAFV/KgCqfyoA/38qAACfKgBVnyoAqp8qAP+fKgAAvyoAVb8qAKq/KgD/vyoAAN8qAFXf + KgCq3yoA/98qAAD/KgBV/yoAqv8qAP//KgAAAFUAVQBVAKoAVQD/AFUAAB9VAFUfVQCqH1UA/x9VAAA/ + VQBVP1UAqj9VAP8/VQAAX1UAVV9VAKpfVQD/X1UAAH9VAFV/VQCqf1UA/39VAACfVQBVn1UAqp9VAP+f + VQAAv1UAVb9VAKq/VQD/v1UAAN9VAFXfVQCq31UA/99VAAD/VQBV/1UAqv9VAP//VQAAAH8AVQB/AKoA + fwD/AH8AAB9/AFUffwCqH38A/x9/AAA/fwBVP38Aqj9/AP8/fwAAX38AVV9/AKpffwD/X38AAH9/AFV/ + fwCqf38A/39/AACffwBVn38Aqp9/AP+ffwAAv38AVb9/AKq/fwD/v38AAN9/AFXffwCq338A/99/AAD/ + fwBV/38Aqv9/AP//fwAAAKoAVQCqAKoAqgD/AKoAAB+qAFUfqgCqH6oA/x+qAAA/qgBVP6oAqj+qAP8/ + qgAAX6oAVV+qAKpfqgD/X6oAAH+qAFV/qgCqf6oA/3+qAACfqgBVn6oAqp+qAP+fqgAAv6oAVb+qAKq/ + qgD/v6oAAN+qAFXfqgCq36oA/9+qAAD/qgBV/6oAqv+qAP//qgAAANQAVQDUAKoA1AD/ANQAAB/UAFUf + 1ACqH9QA/x/UAAA/1ABVP9QAqj/UAP8/1AAAX9QAVV/UAKpf1AD/X9QAAH/UAFV/1ACqf9QA/3/UAACf + 1ABVn9QAqp/UAP+f1AAAv9QAVb/UAKq/1AD/v9QAAN/UAFXf1ACq39QA/9/UAAD/1ABV/9QAqv/UAP// + 1ABVAP8AqgD/AAAf/wBVH/8Aqh//AP8f/wAAP/8AVT//AKo//wD/P/8AAF//AFVf/wCqX/8A/1//AAB/ + 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 + ACUTLkJOM4K6pzur7/M0s/f/LrT4/yi4+f8hufn/Hb36/xm9+v8Wv/r/E8D7/xHB+/8Rwfr/EMH6/xLA + +v8TwPr/Fb/6/xe++v8bvPr/H7r5/yS5+f8rtvf/MbT3/zis7/Myhr6pEi1BTwAAACUAAAANAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAPAAAAKB1LbWY2l9fONbD1/y609/8luPn/Hrv5/xi9+f8TwPv/DsL6/wrD+v8Hxvz/Bsf8/wXI + /P8EyPz/Bcj8/wTI/P8Gx/z/Bsf8/wnF/P8Mw/r/EMH7/xW++f8bvPn/Ibn4/ym29/8xsvf/M5nXzhxM + bWYAAAAoAAAADwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAA8AAAAqIll/cDei5N8wsvb/Kbb4/yC6+f8Yvfn/EMH7/wzD+v8Hxvz/BMj8/wLK + /P8By/z/Acv8/wDM/P8AzPz/AM38/wDN/P8AzPz/AMz8/wLL/P8DyPz/Bcb8/wnE+v8Owvv/Fb76/xu7 + +f8kuPj/LLT2/zOj5N8hWX9wAAAAKgAAAA8AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAADQAAACgiWX9wOKTo5TCz9v8mt/j/HLv6/xS++/8Mw/r/Bsb8/wTJ + /P8Byvz/AMz8/wDN/P8GiKX/MTw+/1FRUf8hnbf/AM/7/wDQ/P8A0Pz/AM/8/wDO/P8Azfz/AMz8/wHK + /P8Ex/z/CsT8/w/A+/8Xvfn/Irn4/yqz9v80pejlIFl/cAAAACgAAAANAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAJRxKamU3ouTfLrP2/yO4+f8ZvPr/EL/6/wnE + +/8DyPv/AMz8/wDN/P8Azvz/AM/8/wDR/P8QSVT/PT09/1VVVf9BdX//AtP7/wLU/P8C0/z/AdL8/wDS + /P8A0Pz/AM/8/wDO/P8Azfz/Asn8/wXG+/8Mwvv/Fb76/x+4+f8qtPj/MqPl3xtMbmcAAAAlAAAACgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAbESs+TjSY184usvb/Irj3/xa9 + +/8Nwvv/Bsb7/wLJ/P8Azfz/AM/8/wDQ/P8A0fz/AtP8/wPJ7v8bPEP/RERE/1dXV/9Nam//CtH0/wbY + /P8F1/z/BNb8/wPV/P8C0/z/AtL8/wDR/P8A0Pz/AM78/wHL/P8EyPz/CsT7/xS++v8fufj/KbT2/y+Z + 2M4QKz5OAAAAGgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA4AAAAvL4W+qzGx + +P8ktvf/GLz5/w7C+/8Fxvv/AMr8/wDN/P8A0Pz/ANH8/wHT/P8E1Pz/Btb8/wilwP8mOTz/S0tL/1hY + WP9VYGH/FMXj/wzb/P8K2vz/Cdn8/wjY/P8G1vz/BNX8/wLU/P8A0fz/AND8/wDP/P8Ay/z/A8f7/wrD + +v8Uvvn/H7j3/yqz9/8rhr+qAAAALwAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAA + ACAcT3FmNKvw8ye0+P8bufn/EL/7/wbF+/8Cyvz/AM38/wDQ/P8B0/z/AtP8/wXW/P8I2Pz/C9n8/w5/ + kf8yOjv/UFBQ/1lZWf9YWlr/ILjO/xHe/P8Q3fz/D9z8/w3b/P8L2/z/CNj8/wbW/P8D1fz/AtT8/wDR + /P8Azvz/AMv8/wTG+/8Mwfv/Fbv4/yC29/8urfLzGlBxZgAAAB8AAAAGAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAEAAAADMvk9DAK7L3/x+4+P8Svvv/B8T8/wHI/P8Azfz/AND8/wHS/P8E1fz/B9j8/wra + /P8N2/z/D9z8/xRdZ/87PDz/VFRU/1lZWf9ZWlr/LaS0/xXh/P8U4Pz/FOD8/xLf/P8RwNn/HZSm/xTC + 3f8I2fz/Btb8/wPU/P8A0vz/AM78/wDK/P8Fxfz/DcD7/xi6+f8ltfj/K5PQwAAAADMAAAAQAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAFAAAAHRtNb2UwrvX8I7X4/xa7+P8Lwvr/Asj8/wDM/P8Az/z/AdP8/wTV + /P8H2Pz/C9v8/w7d/P8S3vz/EtXw/xtESv9CQkL/VlZW/1lZWf9ZWlr/Oo+a/xjh/P8X4fz/F+H8/xPI + 4f8dUlr/Qk1O/0V4f/8XxN7/CNn8/wbX/P8D1Pz/AND8/wDN/P8Byfz/BsP8/w+++v8cuPj/K7D1/BlQ + c2cAAAAeAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAMAAAALiqAuKQqsvb/Hbn4/w+++f8GxPv/Acr8/wDO + /P8B0vz/BNX8/wfY/P8K2/z/Dt38/xLe/P8V3/z/E7DH/yU9QP9JSUn/WFhY/1lZWf9ZWVn/Rn2E/xri + /P8a4vz/GeL8/xOqv/8oKCj/S0tL/1lZWf84j5z/DNn6/wjZ/P8F1vz/AdP8/wDO/P8Ay/z/Asf8/wvC + +v8Wu/n/JbL3/yiKxLAAAAAwAAAADQAAAAAAAAAAAAAAAAAAAAEAAAAWCRsmRi6h5eEitPj/Fbv5/wvB + +/8Cx/z/AMz8/wDP/P8C0/z/Btb8/wrZ/P8P3Pz/E9/8/xXf/P8W4Pz/E4ub/y85Ov9PT0//V1dX/1RU + VP9WVlb/T2xw/x/d9f8d4/z/HOP8/xaRof8wMDD/T09P/1lZWf9WX2H/JrDE/wza/P8I2fz/A9b8/wDR + /P8Azfz/Acn8/wbF+/8Pvvn/Hbb3/ymm6OUIHSlIAAAAFwAAAAEAAAAAAAAAAAAAAAUAAAAgG09yayyv + 9/8duPf/EL35/wbD/P8Byfz/AM38/wHR/P8F1fz/Cdj8/w7b/P8T3vz/FeD8/xbh/P8Y4fz/Fmhz/zk6 + Ov9TU1P/UVVW/0lKSv9OTk7/U11e/yXP4/8f5fz/Hdvx/xhvev85OTn/U1NT/1hYWP9YWFj/R3h+/xnH + 4v8L2vz/Btf8/wPT/P8Bz/z/AMv8/wLG/P8Kv/r/GLr5/yWy+P8XUHJqAAAAIAAAAAUAAAAAAAAAAAAA + AAkAAAAoJnmumCex9/8Yufn/C7/6/wTE/P8Ay/z/AM78/wLT/P8H1/z/C9r8/xHd/P8U4Pz/FuD8/xjh + /P8Z2vP/HE1T/0BAQP9VVVX/PnuC/zdGSP9DQ0P/UllZ/y66yf8h5vz/HtLm/xxSWP9BQUH/VVVV/1NT + U/9PT0//U1RU/zSXpf8O2vv/CNj8/wPU/P8A0Pz/AM38/wHI/P8Gwfv/E7v5/yCz9/8heq+YAAAAKAAA + AAkAAAAAAAAAAAAAAA4AAAAyKZDOvCOy9/8Uuvn/CL/3/wPA8v8CxvT/Asn0/wXO9P8J0vT/D9X0/xXX + 9P8W3vn/F+H8/xri/P8Yuc3/JEJG/0hISP9WVlb/Lqm2/ypPU/85OTn/UVVV/zelsf8j5/z/IMnb/yE1 + N/9ISEj/U1la/0NPUf84OTn/QkJC/09cXv8it83/DNb3/wbR9/8Dzfb/Acr2/wHF9v8Fwvn/D7z6/xu0 + +P8jkc68AAAAMgAAAA4AAAAAAAAAAAAAABEAAAA5Kp/j3B+09/8Qu/n/CYCk/ypWYf8/aHL/Qm11/0Ru + dv9Fb3b/R250/0hvdP8xobD/Gt74/xvi/P8al6b/LTo8/05OTv9QW1z/J9Xn/yJZX/8xMTH/T1FR/0CR + mf8l6Pz/IbTE/ykpKf9MTEz/Sm9z/yqYpv8fR0z/Kioq/0hISP9LbHH/O4WR/zaDkf80gZD/M3+Q/zN9 + j/8aoMb/C736/xi2+f8loeTcAAAAOQAAABEAAAAAAAAAAAAAABQAAAA+LKju8B20+P8OvPr/DRsf/y8v + L/9HR0f/S0tL/0xMTP9LS0v/TExM/1FRUf9TXV7/LbDB/x3j/P8ifIf/ODg4/1JSUv9Fcnf/J+Dy/x5x + ef8pKyv/S0tL/0l9gv8o6fz/JJej/zExMf9QUFD/RnR5/x/c8/8Xj53/FRgZ/zMzM/9JSUn/UFBQ/1FR + Uf9RUVH/UVFR/1FRUf9KUVP/Cb76/xa3+f8kqu/wAAAAPgAAABQAAAAAAAAAAAAAABUAAABBK6z0+xy1 + +P8NvPr/BDdG/xQdH/8jKi3/KTAx/ykxMv8pMTL/LC8v/zk5Of9MTEz/RH+H/yDY8P81eYH/R0dH/1VV + Vf87kJn/KOb5/x6Omf8iJyf/R0dH/09ucf8q4/X/Kn2F/zs7O/9SUlL/QH6F/x7k/P8b0Of/DU1V/xcb + G/8pKSn/MTEx/zIyMv8yMjL/MjIy/zIyMv8oPkT/CL/6/xS4+f8jr/X7AAAAQQAAABUAAAAAAAAAAAAA + ABUAAABBKaz0+xq0+P8LvPr/Aqze/wFviv8EcIj/BnSK/wl3i/8Me47/D1pl/xoeHv85OTn/T1dY/z+P + mf9JcHX/VFRU/1dXV/8yrLn/Ker8/yGsuP8cIiL/Q0ND/1JkZv8wy9r/Nmlu/0ZGRv9UVVX/NpGb/x/k + /P8c4/z/FbvR/w1pdv8OW2X/Dltn/wxbaf8KWWn/CVdo/whZbP8Dlbz/B7/6/xK4+f8isPX7AAAAQQAA + ABUAAAAAAAAAAAAAABQAAAA+KKju8Bq1+P8LvPr/A8P7/wDI+/8Azfz/A9L8/wjW/P8N2/z/EtDr/wxF + Tf8jIyP/RUVF/1ZWVv9ZWlr/WVlZ/1NYWf8sx9b/Ker8/yXJ2P8WIiP/PT09/1JeX/86q7b/RWBi/1BQ + UP9SXl//Lqi2/x/l/P8d5Pz/GeL8/xfh/P8U4Pz/ENz8/wrY/P8F0/z/Ac78/wDL+/8Axvv/B776/xK3 + +f8gqu/wAAAAPgAAABQAAAAAAAAAAAAAABEAAAA4JZzf1xmz+P8Lu/r/A8L7/wDI+/8AzPv/AtH8/wfW + /P8O3Pz/Et78/w+br/8SHiD/MzMz/09PT/9YWFj/WVlZ/0htcf8o1eb/Ker8/ynk9P8ULzH/NjY2/1FX + V/9Lf4T/U1tc/1dXV/9OZ2r/KL7P/x/k/P8c4/z/GeL8/xfh/P8U3/z/ENz8/wrY/P8E0/z/Ac77/wDK + +/8BxPv/B737/xO2+f8fn+DXAAAAOAAAABEAAAAAAAAAAAAAAA0AAAAwIo3Jtxuz+P8Nuvr/A8H7/wDH + +/8Ay/v/AtD8/wfV/P8M2fz/Et38/xTV7/8NWmX/Hh4e/0FBQf9VVVX/WVlZ/zyJkv8n3vD/KOn8/ynq + /P8VSk//MDAw/09QUP9YXF3/WVlZ/1lZWf9IcHT/I9nu/x/k/P8c4/z/GeL8/xbg/P8T3/z/D9z8/wnW + /P8E0fz/AM37/wDJ+/8Bw/v/CLz6/xS2+f8dj8q3AAAAMAAAAA0AAAAAAAAAAAAAAAgAAAAnHXWnkRyx + +P8OuPr/BMD7/wDF+/8Ay/v/AtD7/wbU/P8L2Pz/Edz8/xTf/P8SsMX/DyQn/y0tLf9LS0v/VlZW/zGm + sv8l5vr/Juj8/yjp/P8WZm7/KSsr/0xMTP9ZWVn/WVlZ/1hYWP8/f4f/IOX8/x7k/P8b4/z/GOH8/xbf + /P8U3vz/D9r8/wfV/P8D0Pv/Acz7/wDH+/8Cwvv/Crv6/xW0+f8ZdqiQAAAAJwAAAAgAAAAAAAAAAAAA + AAQAAAAeE0dmZSCw9v8Qt/n/Br37/wHD+/8AyPv/Ac77/wXS/P8K1vz/ENr8/xPe/P8W3vv/Dm98/xcX + F/80NDT/QkJC/yW5yf8j5/z/JOf8/ybo/P8Zh5L/IiQk/0hISP9ZWVn/WVlZ/1ZZWv81k57/H+T8/xzj + /P8a4vz/F+D8/xXe/P8S3Pz/Ddj8/wbT/P8Czvv/AMn7/wDF+/8DwPv/C7n6/xiy9/8QS2tnAAAAHwAA + AAQAAAAAAAAAAAAAAAEAAAAWBRQdRCCd3tcTtfn/Brr6/wHB+/8AyPv/AMz7/wPQ+/8I1Pz/Ddj8/xLc + /P8V3vz/FMff/wxBR/8VFRX/HVVc/x7R5v8i5vz/I+f8/yXn/P8cqrr/HB0d/0NDQ/9YWFj/WVlZ/1Jg + Yv8sqLf/HeP8/xvi/P8Y4Pz/Fd/8/xTe/P8R2vz/Ctb8/wXR+/8BzPv/AMn7/wDF+/8Evvv/Drf6/xmk + 5+IGGydGAAAAFgAAAAEAAAAAAAAAAAAAAAAAAAAMAAAALRx9spwWsvj/C7n6/wO/+/8Axvv/Dcz7/xTR + +/8Q1Pv/Ddf8/xHa/P8U3fz/Ft/8/xXA2P8Tm67/GcXb/x7j+/8f5Pz/IeX8/yLm/P8dxtn/FyAh/z09 + Pf9WVlb/WVlZ/01maf8jw9j/HOL8/xrh/P8X4Pz/FN38/xLc/P8O2Pz/DdX7/xHR+/8Qzfv/AMb7/wHC + +/8HvPr/ErX3/xiGvagAAAAuAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHBFHZmAcr/b8D7f5/wW+ + +/8Bw/v/EMv7/yHS/P8d1fv/FNX7/w/Y/P8S3Pz/Fd38/xfe/P8Y4Pz/GuH8/xzi/P8d4/z/H+T8/yDl + /P8e2vD/EzAz/zc3N/9TU1P/WVlZ/0Zvdf8c3fb/GuH8/xjf/P8W3fz/E9v8/xDZ/P8P1vv/GdT7/yDS + +/8azvv/AMT7/wO/+/8Lufn/F7L3/A9KamEAAAAdAAAABQAAAAAAAAAAAAAAAAAAAAAAAAABAAAADgAA + ADEbiMKuFLT4/wq5+f8Cv/v/Ccf7/yvS/P882Pz/N9n8/zfd/P8h2/z/Etv8/xXc/P8W3vz/GN/8/xnf + /P8b4vz/HOL8/xzj/P8d4fr/EUZN/zAwMP9QUFD/WFhY/zx8hf8Y4Pz/F9/8/xbc/P8T2/z/F9r8/yzb + /P832/z/Ntj8/zvW/P8gzfz/AML7/wW9+/8Otvj/ForDrgAAADEAAAAOAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABQAAAB0PRmVfGazx8w+2+f8FvPv/AML7/yDN/P9P2vz/Ttz8/0zf/P9Q4fz/PeD8/xrc + /P8U3Pz/Ft38/xfe/P8Z3/z/GeD8/xrg/P8b3/v/EWVx/ykpKf9MTEz/VVtc/y+Sof8W3vz/FNz8/xTa + /P8m3fv/ReH8/1Hg/P9L3fz/U9z8/0XX/P8Ux/v/A777/wm4+P8UrvLzDkdlXwAAAB0AAAAFAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA0AAAAuGHyxnBWy+P8JuPn/Ar77/wXD+/891Pz/a+D9/2Xg + /f9m4v3/bOX9/2Ll/P9L4vz/OuH8/yLe/P8W3Pz/Fd78/xbe/P8X3fv/EIaY/x8fH/9ERET/TVxf/yOo + vv8r4Pz/P+L8/1bj/P9o5f3/aOP9/2Th/f9p4P3/XNz8/yLL/P8Bv/v/Brr6/w+0+f8TfbGbAAAALgAA + AA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAYBhkkRRiNx7cRtPf/B7r5/wG/ + +v8Vx/v/ad39/4zn/f9/5v3/f+f9/4Lo/f+F6f3/iev9/4Dr/f9o5/z/TeT8/zbh/P8s4Pz/IaW6/xER + Ef8rKyv/O0tN/2jM3f+H7P3/h+v9/4Tp/f+B6P3/feX9/4Tl/f+F5P3/PNH8/wG/+/8Euvr/DLb5/xST + zr4FHChFAAAAGAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIgs1 + TFcYoeLbDbX5/wS6+f8Bv/n/IMv8/3Pg/f+c6v3/l+r9/5Xq/f+V6/3/luz9/5nt/f+f7/3/n+/9/57v + /f+f7/3/l+Pw/zlVWv8aICL/VXyD/5vt/P+W7P3/lev9/5Xq/f+U6f3/mun9/5jo/f9a2fz/CcL6/wO7 + +f8Ltvn/FKXm3wo+WFwAAAAjAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAADAAAACcNRWNhFqLk3Ay2+f8Euvn/Ar/5/wrE+/9l2/3/te/+/7fw/v+x7/7/se/+/7Dw + /v+x8P7/sfH+/7Ly/v+y8v7/svL+/7Ly/v+y8f7/sfH+/7Dw/v+w7/7/sO/+/7Lv/v+78P7/mOj9/zLO + /P8AwPr/A7z6/wm3+f8SouPcDEloZAAAACgAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA4AAAAoDURhYRWf39QNtfn/B7n5/wK8+v8Fwfr/WNj8/7Pu + /v/L8/7/x/P+/8Xz/v/E8/7/w/P+/8Lz/v/C8/7/wvP+/8Lz/v/C8/7/w/P+/8Tz/v/G8/7/x/P+/8nz + /v+f6f3/M837/wC++v8Du/r/Crf5/xGh4NQLRWFhAAAAKAAAAA4AAAACAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAANAAAAJgk2TVcTks2+D7P4/wi3 + +P8Du/r/AL/6/yLJ+/9q3Pz/p+r+/8/0/v/c9/7/2/f+/9n3/v/Y9/7/2Pf+/9j3/v/Z9/7/3Pf+/9r3 + /v/I8v7/leb9/0zT+/8Mw/r/Ar36/wS4+f8Mtfj/EZTNvgg2TVcAAAAmAAAADQAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAADAAA + ACMFHChFEXWlkRGr7ewKtvn/BLn6/wO9+v8Avvr/AsD6/03U/P+Y5v3/wPD+/870/v/T9f7/0/X+/9L1 + /v/J8/7/te3+/3zg/P8wzPv/AL/6/wG9+v8Du/r/Cbj5/w6t7+8Pd6iTBB4rRgAAACMAAAAMAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAgAAAAYAAAALQk/WVkRhrynELL3/Au2+f8Gufr/A7r6/wO8+v8QwPn/N8j3/1zQ + 9f9u1PP/bNT0/2rU9P9OzfX/KsX4/wW9+v8Du/r/Bbn6/wm3+P8Os/f8D4e8pwhBXFsAAAAtAAAAGAAA + AAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADAAAABwAAAAwCUNfWw5yoY0QmtfID7L1+gq2 + +P8JuPn/B7j6/wW5+v8Fufr/Bbn6/wW5+v8GuPr/CLj5/wq2+P8Ns/f9DpzYyw12pZAIQ15cAAAAMAAA + AB0AAAANAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAOAAAAGwAA + ACsCDhNACUJdYA5vnocQjMSsD5zZyg+n6OMPrvLyD67y8g6n6OMOndvMD4zErA1wnoYIRGBiAhAWQgAA + ACsAAAAbAAAADgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAwAAAAoAAAAVAAAAHQAAACUAAAAtAAAANQAAADsAAAA+AAAAPgAAADsAAAA1AAAALQAA + ACUAAAAdAAAAFQAAAAoAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAMAAAADwAAABIAAAAUAAAAFAAA + ABIAAAAPAAAADAAAAAcAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD//4AB//8AAP/8 + AAA//wAA//AAAA//AAD/4AAAB/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAf + 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 + + 102 diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index 0a61cba..242de4d 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -131,11 +131,25 @@ Public Class frmStart End Sub Private Sub CaptionForm() + Dim caption As String + If String.IsNullOrWhiteSpace(My.Settings.vInstanceName) Then - Me.Text = Application.CompanyName & " - " & Application.ProductName + caption = Application.CompanyName & " - " & Application.ProductName Else - Me.Text = Application.CompanyName & " - " & Application.ProductName & " - " & My.Settings.vInstanceName + caption = Application.CompanyName & " - " & Application.ProductName & " - " & My.Settings.vInstanceName End If + + ' Fenster-Titel setzen + Me.Text = caption + + Dim trayText As String = caption + + If trayText.Length > 63 Then + trayText = trayText.Substring(0, 60) & "..." + End If + + ' Systray-Tooltip setzen + NotifyIcon.Text = trayText End Sub Private Sub FMStart_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load From a92b685727b1d117827a6a3fb9f4d604207f0baf Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 12 Feb 2026 14:32:11 +0100 Subject: [PATCH 52/90] Remove NotifyIcon from frmStart and update tray handling Removed the NotifyIcon component and all related code/resources from frmStart. Tooltip handling is now performed using niToolcollection instead. --- ToolCollection/frmStart.Designer.vb | 14 +- ToolCollection/frmStart.resx | 387 ---------------------------- ToolCollection/frmStart.vb | 2 +- 3 files changed, 4 insertions(+), 399 deletions(-) diff --git a/ToolCollection/frmStart.Designer.vb b/ToolCollection/frmStart.Designer.vb index 0212fa4..77a3152 100644 --- a/ToolCollection/frmStart.Designer.vb +++ b/ToolCollection/frmStart.Designer.vb @@ -1,9 +1,9 @@ - _ + Partial Class frmStart Inherits System.Windows.Forms.Form 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. - _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then @@ -20,7 +20,7 @@ Partial Class frmStart 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. - _ + Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmStart)) @@ -64,7 +64,6 @@ Partial Class frmStart Me.TimerNIRestart = New System.Windows.Forms.Timer(Me.components) Me.TimerErrorLog = New System.Windows.Forms.Timer(Me.components) Me.TimerDeleteLogfiles = New System.Windows.Forms.Timer(Me.components) - Me.NotifyIcon = New System.Windows.Forms.NotifyIcon(Me.components) Me.StatusStrip1.SuspendLayout() Me.menHauptmenü.SuspendLayout() Me.Panel1.SuspendLayout() @@ -461,12 +460,6 @@ Partial Class frmStart ' Me.TimerDeleteLogfiles.Interval = 1000 ' - 'NotifyIcon - ' - Me.NotifyIcon.Icon = CType(resources.GetObject("NotifyIcon.Icon"), System.Drawing.Icon) - Me.NotifyIcon.Text = "NotifyIcon" - Me.NotifyIcon.Visible = True - ' 'frmStart ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -534,5 +527,4 @@ Partial Class frmStart Friend WithEvents TimerDeleteLogfiles As Timer Friend WithEvents ToolStripStatusLabel_LogDeleteTime As ToolStripStatusLabel Friend WithEvents ToolStripStatusLabel_ConnectionString As ToolStripStatusLabel - Friend WithEvents NotifyIcon As NotifyIcon End Class diff --git a/ToolCollection/frmStart.resx b/ToolCollection/frmStart.resx index 609a45f..d955bbf 100644 --- a/ToolCollection/frmStart.resx +++ b/ToolCollection/frmStart.resx @@ -646,393 +646,6 @@ 1049, 17 - - 1208, 17 - - - - AAABAAcAEBAQAAEABAAoAQAAdgAAADAwAAABAAgAqA4AAJ4BAAAgIAAAAQAIAKgIAABGEAAAEBAAAAEA - CABoBQAA7hgAADAwAAABACAAqCUAAFYeAAAgIAAAAQAgAKgQAAD+QwAAEBAAAAEAIABoBAAAplQAACgA - AAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA - gACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAJmZmQAAAACZu7u7mQAACb - uzC7u7kACbu7MLu7u5AJu7swuwu7kJu7swC7C7u5m7uzALMAu7mbA7MwMDADuZswAzAwMzC5m7MAMwC7 - u7mbuzCzALu7uQm7s7sDu7uQCbu7uwO7u5AAm7u7A7u5AAAJm7u7uZAAAAAJmZmQAAD4HwAA4AcAAMAD - AACAAQAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAACAAQAAwAMAAOAHAAD4HwAAKAAAADAA - AABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAP///wAAAIAAAIAAAACAgACAAAAAgACAAICA - AACAgIAAwNzAAPDKpgCqPyoA/z8qAABfKgBVXyoAql8qAP9fKgAAfyoAVX8qAKp/KgD/fyoAAJ8qAFWf - KgCqnyoA/58qAAC/KgBVvyoAqr8qAP+/KgAA3yoAVd8qAKrfKgD/3yoAAP8qAFX/KgCq/yoA//8qAAAA - VQBVAFUAqgBVAP8AVQAAH1UAVR9VAKofVQD/H1UAAD9VAFU/VQCqP1UA/z9VAABfVQBVX1UAql9VAP9f - VQAAf1UAVX9VAKp/VQD/f1UAAJ9VAFWfVQCqn1UA/59VAAC/VQBVv1UAqr9VAP+/VQAA31UAVd9VAKrf - VQD/31UAAP9VAFX/VQCq/1UA//9VAAAAfwBVAH8AqgB/AP8AfwAAH38AVR9/AKoffwD/H38AAD9/AFU/ - fwCqP38A/z9/AABffwBVX38Aql9/AP9ffwAAf38AVX9/AKp/fwD/f38AAJ9/AFWffwCqn38A/59/AAC/ - fwBVv38Aqr9/AP+/fwAA338AVd9/AKrffwD/338AAP9/AFX/fwCq/38A//9/AAAAqgBVAKoAqgCqAP8A - qgAAH6oAVR+qAKofqgD/H6oAAD+qAFU/qgCqP6oA/z+qAABfqgBVX6oAql+qAP9fqgAAf6oAVX+qAKp/ - qgD/f6oAAJ+qAFWfqgCqn6oA/5+qAAC/qgBVv6oAqr+qAP+/qgAA36oAVd+qAKrfqgD/36oAAP+qAFX/ - qgCq/6oA//+qAAAA1ABVANQAqgDUAP8A1AAAH9QAVR/UAKof1AD/H9QAAD/UAFU/1ACqP9QA/z/UAABf - 1ABVX9QAql/UAP9f1AAAf9QAVX/UAKp/1AD/f9QAAJ/UAFWf1ACqn9QA/5/UAAC/1ABVv9QAqr/UAP+/ - 1AAA39QAVd/UAKrf1AD/39QAAP/UAFX/1ACq/9QA///UAFUA/wCqAP8AAB//AFUf/wCqH/8A/x//AAA/ - /wBVP/8Aqj//AP8//wAAX/8AVV//AKpf/wD/X/8AAH//AFV//wCqf/8A/3//AACf/wBVn/8Aqp//AP+f - /wAAv/8AVb//AKq//wD/v/8AAN//AFXf/wCq3/8A/9//AFX//wCq//8A/8zMAP/M/wD//zMA//9mAP// - mQD//8wAAH8AAFV/AACqfwAA/38AAACfAABVnwAAqp8AAP+fAAAAvwAAVb8AAKq/AAD/vwAAAN8AAFXf - AACq3wAA/98AAFX/AACq/wAAAAAqAFUAKgCqACoA/wAqAAAfKgBVHyoAqh8qAP8fKgAAPyoAVT8qAPD7 - /wCkoKAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAAAAAAD///////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////xsbGxsbGxsbGxv////////////////////////////////////// - ////////xsbGxsrGxsrKxsbKxsbGxv///////////////////////////////////////8bGpMbKxqTK - xsbGxsqkxsrGpMbG///////////////////////////////////GxqTLxsvGy8bKysrKysrGy8bLxsuk - xsb//////////////////////////////8bGysbKpcrKysrKysrKysrKysrKpcrGysbG//////////// - ////////////////xsaly6TKysrKysrKys7KysrKysrKysqky6XGxv/////////////////////////G - xsrGysrKysrOynz//3zKysrOys7KysrKysbKxsb//////////////////////8bLpMvKysrOysrKyiz/ - //TOys7KysrKys7KysrLpMvG////////////////////xsrGysrKysrKys7KzvD///DGzsrOzsrOysrK - ysrKysbKxv/////////////////GysbKysrKzsrOys7KgPD///+ozs7KzsrOys7KzsrKysrGysb///// - ///////////GysbKysrKysrKzsvOA/////+kzs7Ozs7LzsrKysrKysrGysb//////////////8aky8rK - ysrOys7Ozs7OLP////8Dzs7OzqgDqM7Oys7KysrKy6TG/////////////8bGysrKzs7KzsrOzs7O9P// - //9Uzs7OqCz/LKjKzsrOzsrKysbG////////////xsrLysrKysrKzs7Ozs6k8P////8szs7OpP///1TO - zsrKysrKysvKxv//////////xsbKysrKzs7Ozs7Ozs4D///////wzs7OgP////+Azs7OzsrKysrGxv// - ////////xsvKysrKysrOzs7Ozs5U////////qM7OMP/////0qM7KysrKysrLxv/////////GpMrKys7K - zs7Ozs7Ozs70//8s8P//gM6oLP//////VM7OzsrOysrKpMb////////GysvKzsrOzsvOys7Ozqjw//+A - 8P//fM6o8P//8P//8IDLzs7KzsrLysb////////Gxsp88PDw8PDw9APOznz///+oLP//MM6o///wA/D/ - //AsMCwsLHzKxsb////////Gy8r///////////+AzlT//yzOMP//LM4D///0znz////////////Ky8b/ - ///////Gxsos////8P////8sqDD//1TOA///8M5U//8szqgw//////////DKxsb////////GysqkA3xY - WAMw////VPD//4DOgOz/8Kj0//9Uzs6oVDAwUDAwUIDKysb////////GysrOysrOzs7KLP///////6jO - qP///wPw//ADzs7Ozs7Ozs7Kys7Kysb////////Gy8rKzsrOys7OgP//////9KjOzvD//yz///Ckzs7O - zs7Oys7KzsrKy8b////////GysrKys7Kzs7OzjD/////VMrOziz///////TOzs7Ozs7OzsrOysrKysb/ - ///////GxsrKzsrOzs7OzqTw////A87OzjD//////yzOzs7Ozs7Ozs7KzsrKxsb/////////xsrKys7K - zs7Ozs5U////pM7OzgP//////1jOzs7Ozs7OzsrOysrKxv//////////xsrKys7KzsrOzs6oLP8srM7O - zqT/////8HzOzs7Ozs7KzsrOysrKxv//////////xqTKys7Kzs7Ozs7OqICozs7Ozqj/////8KjOzs7O - zs7OzsrOysqkxv///////////8bKysrOzs7Ozs7Ozs7Ozs7Ozs7w////9MrOzs7Ozs7Ozs7KysrG//// - /////////8bKysrKzs7Ozs7Ozs7Ozs7Ozs70////LM7Ozs7Ozs7OzsrKysrG///////////////GysrO - zs7Ozs7Ozs7Ozs7Ozs5U////A87Ozs7Ozs7Ozs7Kysb////////////////GysrKzs7OztPOzs7Ozs7O - zs4D///wgM7Ozs7Tzs7OzsrKysb/////////////////xsrKys7Q087O087Tzs7Ozs6k///wqNPO087O - 09DOysrKxv///////////////////8bKysrOztDT0NPQ09DT0NPTLfAx09DT0NPQzs7KysrG//////// - ///////////////GysrOztDT0NPQ09DT09DQ09PQ09DT0NPQzs7Kysb///////////////////////// - xsrKys7Q09P20NPQ0/b209DT0PbT09DOysrKxv///////////////////////////8bKysrOztD20/b2 - 9tDQ9vb20/bQzs7KysrG///////////////////////////////GxsrKysrO0PbQ9tPT9tD20M7KysrK - xsb//////////////////////////////////8bGys7Kys7OztDQzs7OysrOysbG//////////////// - ////////////////////////xsbGysrKzsrKzsrKysbGxv////////////////////////////////// - ////////////xsbGxsbGxsbGxv////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////8AAP///////wAA////////AAD//+AH//8AAP//AAD//wAA//wAAD//AAD/8AAAD/8AAP/g - AAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD8AAAAAD8AAPwAAAAAPwAA+AAAAAAf - AAD4AAAAAB8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAOAAAAAABwAA4AAAAAAHAADgAAAAAAcAAOAA - AAAABwAA4AAAAAAHAADgAAAAAAcAAOAAAAAABwAA4AAAAAAHAADgAAAAAAcAAOAAAAAABwAA8AAAAAAP - AADwAAAAAA8AAPAAAAAADwAA+AAAAAAfAAD4AAAAAB8AAPwAAAAAPwAA/AAAAAA/AAD+AAAAAH8AAP8A - AAAA/wAA/4AAAAH/AAD/wAAAA/8AAP/gAAAH/wAA//AAAA//AAD//AAAP/8AAP//AAD//wAA///gB/// - AAD///////8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAAB - AAAAAQAA////AAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADA3MAA8MqmAKo/KgD/PyoAAF8qAFVf - KgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/KgAAnyoAVZ8qAKqfKgD/nyoAAL8qAFW/KgCqvyoA/78qAADf - KgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/KgD//yoAAABVAFUAVQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8f - VQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVfVQCqX1UA/19VAAB/VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqf - VQD/n1UAAL9VAFW/VQCqv1UA/79VAADfVQBV31UAqt9VAP/fVQAA/1UAVf9VAKr/VQD//1UAAAB/AFUA - fwCqAH8A/wB/AAAffwBVH38Aqh9/AP8ffwAAP38AVT9/AKo/fwD/P38AAF9/AFVffwCqX38A/19/AAB/ - fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqffwD/n38AAL9/AFW/fwCqv38A/79/AADffwBV338Aqt9/AP/f - fwAA/38AVf9/AKr/fwD//38AAACqAFUAqgCqAKoA/wCqAAAfqgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/ - qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/qgBVf6oAqn+qAP9/qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/ - qgCqv6oA/7+qAADfqgBV36oAqt+qAP/fqgAA/6oAVf+qAKr/qgD//6oAAADUAFUA1ACqANQA/wDUAAAf - 1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/1AD/P9QAAF/UAFVf1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/ - 1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/1ACqv9QA/7/UAADf1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/ - 1AD//9QAVQD/AKoA/wAAH/8AVR//AKof/wD/H/8AAD//AFU//wCqP/8A/z//AABf/wBVX/8Aql//AP9f - /wAAf/8AVX//AKp//wD/f/8AAJ//AFWf/wCqn/8A/5//AAC//wBVv/8Aqr//AP+//wAA3/8AVd//AKrf - /wD/3/8AVf//AKr//wD/zMwA/8z/AP//MwD//2YA//+ZAP//zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWf - AACqnwAA/58AAAC/AABVvwAAqr8AAP+/AAAA3wAAVd8AAKrfAAD/3wAAVf8AAKr/AAAAACoAVQAqAKoA - KgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/KgBVPyoA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAP8A - /wD//wAAAAAAAP////////////////////////////////////////////////////////////////// - ///////////////////////////////////GxsbGxsbGxv/////////////////////////////GxsbK - ysrKysrGxsb////////////////////////GxsrKysrKysrKysrKysbG////////////////////xsbK - ysrKfPBYzsrKysrKysbG/////////////////8bKysrKysoD/yjKys7KysrKysrG///////////////G - ysrKys7KzlD/8KzOys7KzsrKysrG////////////xsrKysrOzsqo9P//qM7OzsrOzsrKysrG//////// - ///GysrKzsrOzqjw//+Azs6kA87KzsrKysb/////////xsrKzsrOzs7OfP///wPOziz/VM7Oys7Kysb/ - ///////GysrOzs7Ozs4w////VM6o8P//qM7OzsrKxv//////xsbKzsrOzs7Oyiz/8P/0zoDw///0ys7K - zsrGxv/////GyqSopKiAqM6o8P9U//DOfP/w//9YqKioxsrG/////8bKLP/////0yoD/9IDw8KhU/1QD - ///w8P8sysb/////xsos8PDw//9UWP9UqPD/gCz/fM4s8P//8PTKxv/////Gys6oqKgD///w/1jOLP9U - 9P+AzqiAqKSAysrG/////8bKys7Ozs4s////gM4w//D/8KjOzs7Ozs7Kysb/////xsrKzs7OzoDw//Co - zgP///8szs7Ozs7OzsrKxv/////GysrOzs7OzlT/LM7OgP///zDOzs7Ozs7OysrG///////Gys7Ozs7O - qFiAzs6o////fM7Ozs7Ozs7Kxv///////8bKys7Ozs7Ozs7Ozsrw//CAzs7Ozs7OysrG/////////8bK - ys7Ozs7Ozs7Oziz/8KjOzs7OzsrKxv//////////xsrKzs7O0NLOzs7OMP8sztLQzs7OysrG//////// - ////xsrKztDT0NDT0NOF8AfQ0NPQzsrKxv//////////////xsrKztDT09DT0NDT0NPT0M7Kysb///// - ////////////xsrKztDQ9vbT0wD20NDOysrG////////////////////xsbKysvOztDQzs7LysrGxv// - /////////////////////8bGysrKysrKysrGxv/////////////////////////////GxsbGxsbGxv// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////wD///wAP//wAA//4AAH/8AAA/+AAAH/AAAA/wAAAP4AAAB+AA - AAfAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA+AAAAfgAAAH8AAAD/AAAA/4AAAf/AAAP/4A - AH//AAD//8AD///wD////////////ygAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAB - AAD///8AAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDcwADwyqYAqj8qAP8/KgAAXyoAVV8qAKpf - KgD/XyoAAH8qAFV/KgCqfyoA/38qAACfKgBVnyoAqp8qAP+fKgAAvyoAVb8qAKq/KgD/vyoAAN8qAFXf - KgCq3yoA/98qAAD/KgBV/yoAqv8qAP//KgAAAFUAVQBVAKoAVQD/AFUAAB9VAFUfVQCqH1UA/x9VAAA/ - VQBVP1UAqj9VAP8/VQAAX1UAVV9VAKpfVQD/X1UAAH9VAFV/VQCqf1UA/39VAACfVQBVn1UAqp9VAP+f - VQAAv1UAVb9VAKq/VQD/v1UAAN9VAFXfVQCq31UA/99VAAD/VQBV/1UAqv9VAP//VQAAAH8AVQB/AKoA - fwD/AH8AAB9/AFUffwCqH38A/x9/AAA/fwBVP38Aqj9/AP8/fwAAX38AVV9/AKpffwD/X38AAH9/AFV/ - fwCqf38A/39/AACffwBVn38Aqp9/AP+ffwAAv38AVb9/AKq/fwD/v38AAN9/AFXffwCq338A/99/AAD/ - fwBV/38Aqv9/AP//fwAAAKoAVQCqAKoAqgD/AKoAAB+qAFUfqgCqH6oA/x+qAAA/qgBVP6oAqj+qAP8/ - qgAAX6oAVV+qAKpfqgD/X6oAAH+qAFV/qgCqf6oA/3+qAACfqgBVn6oAqp+qAP+fqgAAv6oAVb+qAKq/ - qgD/v6oAAN+qAFXfqgCq36oA/9+qAAD/qgBV/6oAqv+qAP//qgAAANQAVQDUAKoA1AD/ANQAAB/UAFUf - 1ACqH9QA/x/UAAA/1ABVP9QAqj/UAP8/1AAAX9QAVV/UAKpf1AD/X9QAAH/UAFV/1ACqf9QA/3/UAACf - 1ABVn9QAqp/UAP+f1AAAv9QAVb/UAKq/1AD/v9QAAN/UAFXf1ACq39QA/9/UAAD/1ABV/9QAqv/UAP// - 1ABVAP8AqgD/AAAf/wBVH/8Aqh//AP8f/wAAP/8AVT//AKo//wD/P/8AAF//AFVf/wCqX/8A/1//AAB/ - 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 - ACUTLkJOM4K6pzur7/M0s/f/LrT4/yi4+f8hufn/Hb36/xm9+v8Wv/r/E8D7/xHB+/8Rwfr/EMH6/xLA - +v8TwPr/Fb/6/xe++v8bvPr/H7r5/yS5+f8rtvf/MbT3/zis7/Myhr6pEi1BTwAAACUAAAANAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAPAAAAKB1LbWY2l9fONbD1/y609/8luPn/Hrv5/xi9+f8TwPv/DsL6/wrD+v8Hxvz/Bsf8/wXI - /P8EyPz/Bcj8/wTI/P8Gx/z/Bsf8/wnF/P8Mw/r/EMH7/xW++f8bvPn/Ibn4/ym29/8xsvf/M5nXzhxM - bWYAAAAoAAAADwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAA8AAAAqIll/cDei5N8wsvb/Kbb4/yC6+f8Yvfn/EMH7/wzD+v8Hxvz/BMj8/wLK - /P8By/z/Acv8/wDM/P8AzPz/AM38/wDN/P8AzPz/AMz8/wLL/P8DyPz/Bcb8/wnE+v8Owvv/Fb76/xu7 - +f8kuPj/LLT2/zOj5N8hWX9wAAAAKgAAAA8AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAADQAAACgiWX9wOKTo5TCz9v8mt/j/HLv6/xS++/8Mw/r/Bsb8/wTJ - /P8Byvz/AMz8/wDN/P8GiKX/MTw+/1FRUf8hnbf/AM/7/wDQ/P8A0Pz/AM/8/wDO/P8Azfz/AMz8/wHK - /P8Ex/z/CsT8/w/A+/8Xvfn/Irn4/yqz9v80pejlIFl/cAAAACgAAAANAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAJRxKamU3ouTfLrP2/yO4+f8ZvPr/EL/6/wnE - +/8DyPv/AMz8/wDN/P8Azvz/AM/8/wDR/P8QSVT/PT09/1VVVf9BdX//AtP7/wLU/P8C0/z/AdL8/wDS - /P8A0Pz/AM/8/wDO/P8Azfz/Asn8/wXG+/8Mwvv/Fb76/x+4+f8qtPj/MqPl3xtMbmcAAAAlAAAACgAA - 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 - ABUAAAAAAAAAAAAAABQAAAA+KKju8Bq1+P8LvPr/A8P7/wDI+/8Azfz/A9L8/wjW/P8N2/z/EtDr/wxF - Tf8jIyP/RUVF/1ZWVv9ZWlr/WVlZ/1NYWf8sx9b/Ker8/yXJ2P8WIiP/PT09/1JeX/86q7b/RWBi/1BQ - UP9SXl//Lqi2/x/l/P8d5Pz/GeL8/xfh/P8U4Pz/ENz8/wrY/P8F0/z/Ac78/wDL+/8Axvv/B776/xK3 - +f8gqu/wAAAAPgAAABQAAAAAAAAAAAAAABEAAAA4JZzf1xmz+P8Lu/r/A8L7/wDI+/8AzPv/AtH8/wfW - /P8O3Pz/Et78/w+br/8SHiD/MzMz/09PT/9YWFj/WVlZ/0htcf8o1eb/Ker8/ynk9P8ULzH/NjY2/1FX - V/9Lf4T/U1tc/1dXV/9OZ2r/KL7P/x/k/P8c4/z/GeL8/xfh/P8U3/z/ENz8/wrY/P8E0/z/Ac77/wDK - +/8BxPv/B737/xO2+f8fn+DXAAAAOAAAABEAAAAAAAAAAAAAAA0AAAAwIo3Jtxuz+P8Nuvr/A8H7/wDH - +/8Ay/v/AtD8/wfV/P8M2fz/Et38/xTV7/8NWmX/Hh4e/0FBQf9VVVX/WVlZ/zyJkv8n3vD/KOn8/ynq - /P8VSk//MDAw/09QUP9YXF3/WVlZ/1lZWf9IcHT/I9nu/x/k/P8c4/z/GeL8/xbg/P8T3/z/D9z8/wnW - /P8E0fz/AM37/wDJ+/8Bw/v/CLz6/xS2+f8dj8q3AAAAMAAAAA0AAAAAAAAAAAAAAAgAAAAnHXWnkRyx - +P8OuPr/BMD7/wDF+/8Ay/v/AtD7/wbU/P8L2Pz/Edz8/xTf/P8SsMX/DyQn/y0tLf9LS0v/VlZW/zGm - sv8l5vr/Juj8/yjp/P8WZm7/KSsr/0xMTP9ZWVn/WVlZ/1hYWP8/f4f/IOX8/x7k/P8b4/z/GOH8/xbf - /P8U3vz/D9r8/wfV/P8D0Pv/Acz7/wDH+/8Cwvv/Crv6/xW0+f8ZdqiQAAAAJwAAAAgAAAAAAAAAAAAA - AAQAAAAeE0dmZSCw9v8Qt/n/Br37/wHD+/8AyPv/Ac77/wXS/P8K1vz/ENr8/xPe/P8W3vv/Dm98/xcX - F/80NDT/QkJC/yW5yf8j5/z/JOf8/ybo/P8Zh5L/IiQk/0hISP9ZWVn/WVlZ/1ZZWv81k57/H+T8/xzj - /P8a4vz/F+D8/xXe/P8S3Pz/Ddj8/wbT/P8Czvv/AMn7/wDF+/8DwPv/C7n6/xiy9/8QS2tnAAAAHwAA - AAQAAAAAAAAAAAAAAAEAAAAWBRQdRCCd3tcTtfn/Brr6/wHB+/8AyPv/AMz7/wPQ+/8I1Pz/Ddj8/xLc - /P8V3vz/FMff/wxBR/8VFRX/HVVc/x7R5v8i5vz/I+f8/yXn/P8cqrr/HB0d/0NDQ/9YWFj/WVlZ/1Jg - Yv8sqLf/HeP8/xvi/P8Y4Pz/Fd/8/xTe/P8R2vz/Ctb8/wXR+/8BzPv/AMn7/wDF+/8Evvv/Drf6/xmk - 5+IGGydGAAAAFgAAAAEAAAAAAAAAAAAAAAAAAAAMAAAALRx9spwWsvj/C7n6/wO/+/8Axvv/Dcz7/xTR - +/8Q1Pv/Ddf8/xHa/P8U3fz/Ft/8/xXA2P8Tm67/GcXb/x7j+/8f5Pz/IeX8/yLm/P8dxtn/FyAh/z09 - Pf9WVlb/WVlZ/01maf8jw9j/HOL8/xrh/P8X4Pz/FN38/xLc/P8O2Pz/DdX7/xHR+/8Qzfv/AMb7/wHC - +/8HvPr/ErX3/xiGvagAAAAuAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHBFHZmAcr/b8D7f5/wW+ - +/8Bw/v/EMv7/yHS/P8d1fv/FNX7/w/Y/P8S3Pz/Fd38/xfe/P8Y4Pz/GuH8/xzi/P8d4/z/H+T8/yDl - /P8e2vD/EzAz/zc3N/9TU1P/WVlZ/0Zvdf8c3fb/GuH8/xjf/P8W3fz/E9v8/xDZ/P8P1vv/GdT7/yDS - +/8azvv/AMT7/wO/+/8Lufn/F7L3/A9KamEAAAAdAAAABQAAAAAAAAAAAAAAAAAAAAAAAAABAAAADgAA - ADEbiMKuFLT4/wq5+f8Cv/v/Ccf7/yvS/P882Pz/N9n8/zfd/P8h2/z/Etv8/xXc/P8W3vz/GN/8/xnf - /P8b4vz/HOL8/xzj/P8d4fr/EUZN/zAwMP9QUFD/WFhY/zx8hf8Y4Pz/F9/8/xbc/P8T2/z/F9r8/yzb - /P832/z/Ntj8/zvW/P8gzfz/AML7/wW9+/8Otvj/ForDrgAAADEAAAAOAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABQAAAB0PRmVfGazx8w+2+f8FvPv/AML7/yDN/P9P2vz/Ttz8/0zf/P9Q4fz/PeD8/xrc - /P8U3Pz/Ft38/xfe/P8Z3/z/GeD8/xrg/P8b3/v/EWVx/ykpKf9MTEz/VVtc/y+Sof8W3vz/FNz8/xTa - /P8m3fv/ReH8/1Hg/P9L3fz/U9z8/0XX/P8Ux/v/A777/wm4+P8UrvLzDkdlXwAAAB0AAAAFAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA0AAAAuGHyxnBWy+P8JuPn/Ar77/wXD+/891Pz/a+D9/2Xg - /f9m4v3/bOX9/2Ll/P9L4vz/OuH8/yLe/P8W3Pz/Fd78/xbe/P8X3fv/EIaY/x8fH/9ERET/TVxf/yOo - vv8r4Pz/P+L8/1bj/P9o5f3/aOP9/2Th/f9p4P3/XNz8/yLL/P8Bv/v/Brr6/w+0+f8TfbGbAAAALgAA - AA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAYBhkkRRiNx7cRtPf/B7r5/wG/ - +v8Vx/v/ad39/4zn/f9/5v3/f+f9/4Lo/f+F6f3/iev9/4Dr/f9o5/z/TeT8/zbh/P8s4Pz/IaW6/xER - Ef8rKyv/O0tN/2jM3f+H7P3/h+v9/4Tp/f+B6P3/feX9/4Tl/f+F5P3/PNH8/wG/+/8Euvr/DLb5/xST - zr4FHChFAAAAGAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIgs1 - TFcYoeLbDbX5/wS6+f8Bv/n/IMv8/3Pg/f+c6v3/l+r9/5Xq/f+V6/3/luz9/5nt/f+f7/3/n+/9/57v - /f+f7/3/l+Pw/zlVWv8aICL/VXyD/5vt/P+W7P3/lev9/5Xq/f+U6f3/mun9/5jo/f9a2fz/CcL6/wO7 - +f8Ltvn/FKXm3wo+WFwAAAAjAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAADAAAACcNRWNhFqLk3Ay2+f8Euvn/Ar/5/wrE+/9l2/3/te/+/7fw/v+x7/7/se/+/7Dw - /v+x8P7/sfH+/7Ly/v+y8v7/svL+/7Ly/v+y8f7/sfH+/7Dw/v+w7/7/sO/+/7Lv/v+78P7/mOj9/zLO - /P8AwPr/A7z6/wm3+f8SouPcDEloZAAAACgAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA4AAAAoDURhYRWf39QNtfn/B7n5/wK8+v8Fwfr/WNj8/7Pu - /v/L8/7/x/P+/8Xz/v/E8/7/w/P+/8Lz/v/C8/7/wvP+/8Lz/v/C8/7/w/P+/8Tz/v/G8/7/x/P+/8nz - /v+f6f3/M837/wC++v8Du/r/Crf5/xGh4NQLRWFhAAAAKAAAAA4AAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAANAAAAJgk2TVcTks2+D7P4/wi3 - +P8Du/r/AL/6/yLJ+/9q3Pz/p+r+/8/0/v/c9/7/2/f+/9n3/v/Y9/7/2Pf+/9j3/v/Z9/7/3Pf+/9r3 - /v/I8v7/leb9/0zT+/8Mw/r/Ar36/wS4+f8Mtfj/EZTNvgg2TVcAAAAmAAAADQAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAADAAA - ACMFHChFEXWlkRGr7ewKtvn/BLn6/wO9+v8Avvr/AsD6/03U/P+Y5v3/wPD+/870/v/T9f7/0/X+/9L1 - /v/J8/7/te3+/3zg/P8wzPv/AL/6/wG9+v8Du/r/Cbj5/w6t7+8Pd6iTBB4rRgAAACMAAAAMAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAgAAAAYAAAALQk/WVkRhrynELL3/Au2+f8Gufr/A7r6/wO8+v8QwPn/N8j3/1zQ - 9f9u1PP/bNT0/2rU9P9OzfX/KsX4/wW9+v8Du/r/Bbn6/wm3+P8Os/f8D4e8pwhBXFsAAAAtAAAAGAAA - AAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADAAAABwAAAAwCUNfWw5yoY0QmtfID7L1+gq2 - +P8JuPn/B7j6/wW5+v8Fufr/Bbn6/wW5+v8GuPr/CLj5/wq2+P8Ns/f9DpzYyw12pZAIQ15cAAAAMAAA - AB0AAAANAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAOAAAAGwAA - ACsCDhNACUJdYA5vnocQjMSsD5zZyg+n6OMPrvLyD67y8g6n6OMOndvMD4zErA1wnoYIRGBiAhAWQgAA - ACsAAAAbAAAADgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAoAAAAVAAAAHQAAACUAAAAtAAAANQAAADsAAAA+AAAAPgAAADsAAAA1AAAALQAA - ACUAAAAdAAAAFQAAAAoAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAMAAAADwAAABIAAAAUAAAAFAAA - ABIAAAAPAAAADAAAAAcAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD//4AB//8AAP/8 - AAA//wAA//AAAA//AAD/4AAAB/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAf - 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 - - 102 diff --git a/ToolCollection/frmStart.vb b/ToolCollection/frmStart.vb index 242de4d..9f0beb0 100644 --- a/ToolCollection/frmStart.vb +++ b/ToolCollection/frmStart.vb @@ -149,7 +149,7 @@ Public Class frmStart End If ' Systray-Tooltip setzen - NotifyIcon.Text = trayText + niToolcollection.Text = trayText End Sub Private Sub FMStart_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load From 4d201411f667e63496a91dd6a1bb28758a818c0f Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 4 Mar 2026 14:03:09 +0100 Subject: [PATCH 53/90] Add TimerAutostart for delayed indexing thread start Introduce TimerAutostart to delay Nachindexierung thread start by 30s, allowing Windream drive to become available before processing. Update status messages to reflect waiting period. Add event handler for timer tick to start threads after delay. Minor designer layout adjustments. Remove obsolete database binary files. --- .../17.14.1091.29919/CodeChunks.db | Bin 69632 -> 0 bytes .../17.14.1091.29919/CodeChunks.db-shm | Bin 32768 -> 0 bytes .../17.14.1091.29919/CodeChunks.db-wal | Bin 321392 -> 0 bytes .../17.14.1091.29919/SemanticSymbols.db | Bin 49152 -> 0 bytes .../17.14.1091.29919/SemanticSymbols.db-shm | Bin 32768 -> 0 bytes .../17.14.1091.29919/SemanticSymbols.db-wal | Bin 638632 -> 0 bytes ToolCollection/frmNIHauptseite.Designer.vb | 9 +++++++-- ToolCollection/frmNIHauptseite.resx | 6 +++--- ToolCollection/frmNIHauptseite.vb | 14 ++++++++++++-- 9 files changed, 22 insertions(+), 7 deletions(-) delete mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db delete mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-shm delete mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal delete mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db delete mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-shm delete mode 100644 .vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-wal diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db deleted file mode 100644 index aa5d6e1877ba096aaa27cf3251fef8ec933c4dcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 zcmeI&O>g5w7{GD6+l|w_wCTyGO0KGsM7vrxsw%_*iI6(QZ0dAV7g`Avg~q!Zwsp2` zDwdc&T`lbvi^~p*kjMw&+nP>B$^&Q?M-I3_H24} zF`8*RQcYS~l0MZmNs`LqZ(aOFuaekUj&{VSoY-EpS(Y9>`>VS4k5p5-((0dUzpehf z`a$)g`gi50@}r7X`gP^I;vYq+_>0n2eqYoG

~v00Id7KLy;%nxd+z?0!EReS2025)&8ufYjwY@t~IJ9O}y&HxULzdrSIzl&Fov6dED!1hXdoFJvh~# z=%-ry*yoU#4-`tn@N z@Wau~Z0he1{rba}|FQ0FR26k=OTLx;J2$)<_P9Gaw-cMI=_nFM-ZvKSLWiT-i-n== zt`<~dYf&hPI~leTJ8N#OqNv7>?6xLeM8?Um^Ww&N>Bro?vM+CJ=j?}|%ot}Js)i98 z=AM2c67|mdb**n|^^8`8PEafo-Mlr+in_BSzv=kW8K-9yRnqbqXT%xs4`y|#RLA+x z6W;RN?VDjk-Tpu~_D!#cHo}WGwSnH%2fEqOk2JsRVD#$M#ChH@#!ZiBPw(ks9CX@8 zo%Wud(U6}S@8m>7epz-4qL*Km6!qh6*h`w$W+l#Hcv>>(m5i*#t-aUaH%AwC_F##!+_RnM-hi5autdkhSQZ^mCO0@W zm6F6DTbP)SRtoBq?L}iY2{mjb_e$Se9lHRovAako%!c#MrZYJCFPQgV&H-QQf4ocMafR=lk^%Zj?YA-ifc)b^%lHy47+A7me==wu-Ya~7_6+Tfn_yP^vOVa0-X1h|A3tu!6LqKG>v`V_ z%)WRYMi0Y!Z*)ET>PpPj*5txIo}Jz8vte=r+eUPirpW4tO9i#Fu_&uiIKx)7bx(Yc zDth0gs@_}8d*g)w0tg_000IagfB*srAb;L)BF%cqw00IagfB*srAbt>u diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-shm b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-shm deleted file mode 100644 index b284a28c8876d20a0b41a8d8f90d4bbdae5f4f4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI*SuO-o6vpw-Oq-h4t+aWb=UIX^c(Dcx5PPr$E8tOV!Lv0;Jg|j+;~bhug`~B3 zaPR*lU#ja?-Ksvn1)NGA7Uk7psgbg~b}U*3&QFd?`c%GxQDF)AlqaeZfqI*m)os(X z1~sBd&1*^P@)=#!{}u2#XjCNvK3$GN009ILKmY**;tWXq7GzNC^})p|#W+rwGI$kZ4L9akNU82&4r1G_B3l8m9=vA&}LO7UF1? zE)hrxbZJ;`-#ANM;1q%21&W%{R`6ZYAOc?r^lMhzUtM4gf#3xigYS?A5%^A^>AMT8 VBM`iRe+QdFAWi}Q0z6fTzzblyGP3{x diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal deleted file mode 100644 index 46feb8e4fbb5027990f5276aa83830a29de49ffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321392 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

Ab}rjVYPU{(aPK+HsGg@_;#4Wic`SqJ-P3h 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 LsnUQyUl;fvQ{D|r diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db deleted file mode 100644 index 330f6d0d57e6ebf2865f55f4876407ffcbef73e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 zcmeI)U2ob}7zc11l0e8?r(K||igwgVGpHo#G)0wKbsGUE^-4_(rY~A0~o&q^Bm*IRqOXF z7Ng|E^|}TlA15v)78Vkp5t2wGR`~B4|BV*0z8HPr@6yQnwAGcw?#b`#n|~!XmX;D5 zzis}!@x#W4t6yjS$$XdoHT@*@Q|goDAD4dNJF!3j0ucB=1p1$Eq%L3GN`LhQ^Q?B8 zdb-!Hzw92nw(9uQW5Ifa=|H4+@Oo;gsCRBb&& z_!90^HN6_{F1g)Pn=;FFa-Mr;nFZ2tp7jjdI8=NpRNyrdHqg2m@?&E(KiPZvfK`PF}b5WE|BMW@=(=pR~tI1RUfM5{?ckHd+V0e-<~`M({1_ItBYd`x3A6^Mc7Qv zSthR?T@htBHXi>KIjB?*^8I%+sqFr~)K@2u!!lo72$65g%;=vtk#jz6i@Idg>lVmq z+i?q{V;J3?kLi55lFDAcJ{`wk#)VOteB;WDVTm@=O^$81^)z64EvHl2ot^Zz$%!oS z&ckjWs5QM&tPp*2ZOEiiSG6N@!u{B~{E_1b%)|J@Gj z+8@vtJUNbGi>ejh=A>2z#feuE$8%^(bjmhkAxh{NAz8&*iiUzlm&h_{x76^{^j4 zuslnpvY&48Qn4J9zEB@EgWNP@u))@Jm?%{%E02ggwY4m+T;bf7N$x_H^8LkSK5cln zN3m|pZmZYjlByZ>n3~q(dBb>TBYO%&R(OgWR%eFCcqN1%E7WPTj-3DI{iRfPYfJim z^hy?VygX?t@L0mSQ%!l&g@F_sdR5i`+#PSkrU8+_p;;T}tmWp-pHhwU_8VlS&BO1!IRw2^VX5ve7 z#+gKuS*JO0&6hJyBbv-Q&1jyd4moHv>r_Dj+~JjZp5wUWUCKJHS-0Ab!FnDYPeYii z!)i@Yk2LWGmOC$jJgF&%N=?y9{H`L}oKwxbm^0z`K2Kh$SXTJ-bQbwM*_Qg*Xr4qz zG!HGC-ZNMy+OQNBY(rD;Hxy0~P0^^q@Q7f-M4QF@jLs$J?9&-nun^Ba_kD|3C zzs*jITkUo6a!I^kfdB*`009U<00Izz00bZa0SG`~UIj8DF#P>Lujxfx5P$##AOHaf zKmY;|fB*y_0D*x3p8ul|AOHafKmY;|fB*y_009U<00Q$bfam}7pJPM_0SG_<0uX=z z1Rwwb2tWV=5Ww?))Bpq^009U<00Izz00bZa0SG`~{sr*-fBtif2q6Fg2tWV=5P$## zAOHafKmY>x`yVv`0SG_<0uX=z1Rwwb2tWV=5SV`f@$df^HvdR${>@*oKmY;|fB*y_ z009U<00Izz00bZ~4+5D?GVxv*NK#5B*6{p)9@2^!AOHafKmY;|fB*y_009U<00M6o z!2kdEW*_W@00bZa0SG_<0uX=z1Rwwb2+V_kc>XVK{+ZxESReoa2tWV=5P$##AOHaf WKmY;|m?MGJq diff --git a/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-shm b/.vs/ToolCollection/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-shm deleted file mode 100644 index 9128f172b1262b05c4639cd9e78cf90ed6ed71ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 diff --git a/ToolCollection/frmNIHauptseite.Designer.vb b/ToolCollection/frmNIHauptseite.Designer.vb index e9d0cc6..605be28 100644 --- a/ToolCollection/frmNIHauptseite.Designer.vb +++ b/ToolCollection/frmNIHauptseite.Designer.vb @@ -69,6 +69,7 @@ Partial Class frmNIHauptseite Me.TBTC_MOVE_RENAMEBindingSource = New System.Windows.Forms.BindingSource(Me.components) Me.TBTC_MOVE_RENAMETableAdapter = New ToolCollection.MyDatasetTableAdapters.TBTC_MOVE_RENAMETableAdapter() Me.TableAdapterManager1 = New ToolCollection.MyDatasetTableAdapters.TableAdapterManager() + Me.TimerAutostart = New System.Windows.Forms.Timer(Me.components) Me.tcmain.SuspendLayout() Me.tpMain.SuspendLayout() Me.StatusStrip1.SuspendLayout() @@ -121,7 +122,7 @@ Partial Class frmNIHauptseite Me.tpMain.Location = New System.Drawing.Point(4, 22) Me.tpMain.Name = "tpMain" Me.tpMain.Padding = New System.Windows.Forms.Padding(3) - Me.tpMain.Size = New System.Drawing.Size(766, 521) + Me.tpMain.Size = New System.Drawing.Size(769, 521) Me.tpMain.TabIndex = 0 Me.tpMain.Text = "Hauptseite" Me.tpMain.UseVisualStyleBackColor = True @@ -143,7 +144,7 @@ Partial Class frmNIHauptseite Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tslblStatus}) Me.StatusStrip1.Location = New System.Drawing.Point(3, 496) Me.StatusStrip1.Name = "StatusStrip1" - Me.StatusStrip1.Size = New System.Drawing.Size(760, 22) + Me.StatusStrip1.Size = New System.Drawing.Size(763, 22) Me.StatusStrip1.TabIndex = 45 Me.StatusStrip1.Text = "StatusStrip1" ' @@ -504,6 +505,9 @@ Partial Class frmNIHauptseite Me.TableAdapterManager1.TBTC_MOVE_RENAMETableAdapter = Me.TBTC_MOVE_RENAMETableAdapter Me.TableAdapterManager1.UpdateOrder = ToolCollection.MyDatasetTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete ' + 'TimerAutostart + ' + ' 'frmNIHauptseite ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -587,4 +591,5 @@ Partial Class frmNIHauptseite Friend WithEvents btnEdit As Button Friend WithEvents btnStartProfile As Button Friend WithEvents pnlFooter As Panel + Friend WithEvents TimerAutostart As Timer End Class diff --git a/ToolCollection/frmNIHauptseite.resx b/ToolCollection/frmNIHauptseite.resx index a6e8999..506662c 100644 --- a/ToolCollection/frmNIHauptseite.resx +++ b/ToolCollection/frmNIHauptseite.resx @@ -120,9 +120,6 @@ 248, 56 - - 248, 56 - Es wird empfohlen, das Intervall nicht auf weniger als 30 Minuten zu setzen, da der nächste Nachindexierungsdurchlauf nur gestartet werden kann, wenn der vorherige beendet wurde. Wenn zu erwarten ist, dass viele Dokumente nachindexiert werden sollen, sollte der Intervall für diesen Durchlauf entsprechend hoch gesetzt werden ( > 2 Stunden). @@ -162,6 +159,9 @@ 984, 56 + + 1161, 56 + 132 diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 228a810..31e405c 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -120,18 +120,28 @@ Public Class frmNIHauptseite End If If AUTOSTART_FIH Then - Start_NachindexierungThreads() My.Settings.vNIRunning = True My.Settings.Save() Me.btnStartProfile.Enabled = False - _Logger.Info("AUTOSTART_FIH = True - Nachindexierung wird gestartet.") AUTOSTART_FIH = False + _Logger.Info("AUTOSTART_FIH = True - Warte 30s auf Windream-Laufwerk.") + Me.lblStatus.Text = "(Status: Autostart ist aktiv. Warte 30s auf Windream-Laufwerk...)" + Me.tslblStatus.Text = "Status: Autostart ist aktiv. Warte 30s auf Windream-Laufwerk..." + Me.tslblStatus.Visible = True + TimerAutostart.Interval = 30000 + TimerAutostart.Start() Else _Logger.Info("Nachindexierung Hauptformular wurde geladen - Nachindexierungslauf wird NICHT gestartet.") End If End Sub + Private Sub TimerAutostart_Tick(sender As Object, e As EventArgs) Handles TimerAutostart.Tick + TimerAutostart.Stop() + _Logger.Info("Startverzögerung abgelaufen - Nachindexierung wird gestartet.") + Start_NachindexierungThreads() + End Sub + Private Sub LoadProfilesIntoGrid() ClassNIProfile.Init() From 1f2d1d8bfb1737dbab287cc6335ebf6405046046 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 12 Mar 2026 11:14:17 +0100 Subject: [PATCH 54/90] Refactor ListView item move logic for single selection Simplified item move code to handle only the first selected item, improving UI performance and reliability. Removed loop and cloning logic, added BeginUpdate/EndUpdate, and ensured proper selection, focus, and visibility. Early returns prevent invalid moves at boundaries. --- ToolCollection/frmNIVerknuepfungen.vb | 46 ++++++++++++++++----------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index f302aa6..a0be36a 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -657,25 +657,35 @@ Public Class frmNIVerknuepfungen If LVW.SelectedItems.Count > 0 Then LVW.Sorting = Windows.Forms.SortOrder.None If Down = True Then - If LVW.SelectedItems(LVW.SelectedItems.Count - 1).Index < LVW.Items.Count - 1 Then - For i = LVW.SelectedItems.Count - 1 To 0 Step -1 - OldItem = LVW.Items(LVW.SelectedItems(i).Index + 1) - OldPos = LVW.Items(LVW.SelectedItems(i).Index).Index - LVW.Items(OldPos + 1) = LVW.SelectedItems(i).Clone - LVW.Items(OldPos) = OldItem - LVW.Items(OldPos + 1).Selected = True - Next - End If + If LVW.SelectedItems(0).Index = LVW.Items.Count - 1 Then Return + Dim index = LVW.SelectedItems(0).Index + + LVW.BeginUpdate() + Try + Dim item = LVW.SelectedItems(0) + LVW.Items.RemoveAt(index) + LVW.Items.Insert(index + 1, item) + item.Selected = True + item.Focused = True + item.EnsureVisible() + Finally + LVW.EndUpdate() + End Try Else - If LVW.SelectedItems(0).Index > 0 Then - For i = 0 To LVW.SelectedItems.Count - 1 - OldItem = LVW.Items(LVW.SelectedItems(i).Index - 1) - OldPos = LVW.Items(LVW.SelectedItems(i).Index).Index - LVW.Items(OldPos - 1) = LVW.SelectedItems(i).Clone - LVW.Items(OldPos) = OldItem - LVW.Items(OldPos - 1).Selected = True - Next - End If + If LVW.SelectedItems(0).Index = 0 Then Return + Dim index = LVW.SelectedItems(0).Index + + LVW.BeginUpdate() + Try + Dim item = LVW.SelectedItems(0) + LVW.Items.RemoveAt(index) + LVW.Items.Insert(index - 1, item) + item.Selected = True + item.Focused = True + item.EnsureVisible() + Finally + LVW.EndUpdate() + End Try End If '' definieren das am aktuellen Profil Änderungen vorgenommen wurden Me._selectedProfil.setChanged() From 0edae3284282ad630ab7369eb9c99bfa3f79807d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 12 Mar 2026 11:15:27 +0100 Subject: [PATCH 55/90] Remove save prompt from link selection handler Removed code that prompted users to save unsaved link changes in lvwVerknuepfungen_SelectedIndexChanged. The event handler now skips the save dialog and related logic, proceeding directly to profile selection handling. --- ToolCollection/frmNIVerknuepfungen.vb | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index a0be36a..051606d 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -1694,24 +1694,6 @@ Public Class frmNIVerknuepfungen Private Sub lvwVerknuepfungen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvwVerknuepfungen.SelectedIndexChanged - If Not Me._selectedProfil._links.IsSaved Then - - Dim msgResult As MsgBoxResult = MsgBox("Möchten Sie die Änderungen speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen?") - If msgResult = MsgBoxResult.Yes Then - - 'If Not Me._selectedProfil.IsSaved Then - ' SaveProfile() - 'End If - - If Not Me._selectedProfil._links.IsSaved Then - SaveLinks() - SaveProfile() - End If - Else - Me._selectedProfil._links.setLinksSaved() - Me._selectedProfil.setSaved() - End If - End If Select Case Me._selectedProfil.Ni_Art Case "db" From 3001ccf43f3f97dbabdac9011dcab7afdab85cf0 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 12 Mar 2026 14:56:17 +0100 Subject: [PATCH 56/90] Move btnLink control 2px to the right Adjusted btnLink's X coordinate from 407 to 409 for improved layout alignment. --- ToolCollection/frmNIVerknuepfungen.Designer.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index 9ac515f..838448d 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -1765,7 +1765,7 @@ Partial Class frmNIVerknuepfungen ' Me.btnLink.Image = Global.ToolCollection.My.Resources.Resources.link Me.btnLink.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.btnLink.Location = New System.Drawing.Point(407, 167) + Me.btnLink.Location = New System.Drawing.Point(409, 167) Me.btnLink.Name = "btnLink" Me.btnLink.Size = New System.Drawing.Size(28, 29) Me.btnLink.TabIndex = 15 From 9613682fe07ac5dd67ddfa08d7427bb8d881dc8a Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 12 Mar 2026 17:12:50 +0100 Subject: [PATCH 57/90] Enable btnLink only when valid selections are made Added EnableBtnLink method to control btnLink's enabled state based on lbxWMIndex and lbxQuelle1 selections or txtManIndexwert input. btnLink is now disabled by default and updated dynamically via selection change handlers. --- ToolCollection/frmNIVerknuepfungen.Designer.vb | 1 + ToolCollection/frmNIVerknuepfungen.vb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index 838448d..c38433d 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -1763,6 +1763,7 @@ Partial Class frmNIVerknuepfungen ' 'btnLink ' + Me.btnLink.Enabled = False Me.btnLink.Image = Global.ToolCollection.My.Resources.Resources.link Me.btnLink.ImeMode = System.Windows.Forms.ImeMode.NoControl Me.btnLink.Location = New System.Drawing.Point(409, 167) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 051606d..589b1a1 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -560,6 +560,7 @@ Public Class frmNIVerknuepfungen Next End If + EnableBtnLink() End If @@ -1393,6 +1394,13 @@ Public Class frmNIVerknuepfungen End Try End Function + + Private Sub EnableBtnLink() + btnLink.Enabled = + lbxWMIndex.SelectedItems.Count > 0 And + (lbxQuelle1.SelectedItems.Count > 0 OrElse txtManIndexwert.Text <> "") + End Sub + Private Sub btnLink_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLink.Click ' wenn im ListView ein Element selektiert wurde If Me.lvwVerknuepfungen.SelectedItems.Count > 0 Then @@ -2829,6 +2837,8 @@ Public Class frmNIVerknuepfungen Else grbFilterDB.Enabled = True End If + + EnableBtnLink() End Sub Private Sub txtGrundgeruest_check_Click(sender As System.Object, e As System.EventArgs) Handles txtGrundgeruest_check.Click Me.txtCheckIndexSQL.Text = "SELECT COUNT(*) FROM [%view] WHERE " @@ -3522,7 +3532,14 @@ Public Class frmNIVerknuepfungen If _selectedIndex_Type Is Nothing = False Then visinvisible_Vektor_ins_State() End If + + EnableBtnLink() End Sub + + Private Sub lbxQuelle1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbxQuelle1.SelectedIndexChanged + EnableBtnLink() + End Sub + Sub visinvisible_Vektor_ins_State() If _selectedIndex_Type.StartsWith("Vektor") Then Me.rbvkt_add.Visible = True From a55b90e3525b301d11c221a3433e99f9aaa79fa8 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Fri, 13 Mar 2026 13:11:49 +0100 Subject: [PATCH 58/90] Enable btnUnlink only when a list item is selected btnUnlink is now disabled by default and is enabled only when an item in lvwVerknuepfungen is selected. This improves UI feedback by preventing unlink actions when no selection is made. --- ToolCollection/frmNIVerknuepfungen.Designer.vb | 1 + ToolCollection/frmNIVerknuepfungen.vb | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ToolCollection/frmNIVerknuepfungen.Designer.vb b/ToolCollection/frmNIVerknuepfungen.Designer.vb index c38433d..7431d3e 100644 --- a/ToolCollection/frmNIVerknuepfungen.Designer.vb +++ b/ToolCollection/frmNIVerknuepfungen.Designer.vb @@ -1743,6 +1743,7 @@ Partial Class frmNIVerknuepfungen ' 'btnUnlink ' + Me.btnUnlink.Enabled = False Me.btnUnlink.Image = Global.ToolCollection.My.Resources.Resources.link_break Me.btnUnlink.ImeMode = System.Windows.Forms.ImeMode.NoControl Me.btnUnlink.Location = New System.Drawing.Point(409, 202) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 589b1a1..6844fc9 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -1709,6 +1709,9 @@ Public Class frmNIVerknuepfungen If Me.lvwVerknuepfungen.SelectedItems.Count > 0 Then If Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text.StartsWith("%") And Me.lvwVerknuepfungen.SelectedItems(0).SubItems(1).Text.EndsWith("%") Then Me.grbFilterDB.Enabled = False + + btnUnlink.Enabled = (lvwVerknuepfungen.SelectedItems.Count > 0) + Exit Sub End If End If @@ -2027,7 +2030,7 @@ Public Class frmNIVerknuepfungen End If End If - + btnUnlink.Enabled = (lvwVerknuepfungen.SelectedItems.Count > 0) End Sub From a90bf67575fab863890b919f9d53ebf9ff0adf84 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 16 Mar 2026 11:17:16 +0100 Subject: [PATCH 59/90] Refactor btnLink enabling logic by profile type EnableBtnLink() now enables/disables btnLink based on the selected profile's type, applying specific logic for "db", "activedirectory", "xml", and "fulltext". The method is also called after regex and XML tree changes to keep the button state in sync with the UI. --- ToolCollection/frmNIVerknuepfungen.vb | 31 ++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 6844fc9..2577ffc 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -1396,9 +1396,30 @@ Public Class frmNIVerknuepfungen End Function Private Sub EnableBtnLink() - btnLink.Enabled = - lbxWMIndex.SelectedItems.Count > 0 And - (lbxQuelle1.SelectedItems.Count > 0 OrElse txtManIndexwert.Text <> "") + If Me._selectedProfil Is Nothing Then + btnLink.Enabled = False + Return + End If + + Select Case Me._selectedProfil.Ni_Art + Case "db", "activedirectory" + btnLink.Enabled = + lbxWMIndex.SelectedItems.Count > 0 And + (lbxQuelle1.SelectedItems.Count > 0 OrElse txtManIndexwert.Text <> "") + + Case "xml" + btnLink.Enabled = + lbxWMIndex.SelectedItems.Count > 0 And + (trvwxml.SelectedNode IsNot Nothing OrElse txtManIndexwert.Text <> "") + + Case "fulltext" + btnLink.Enabled = + lbxWMIndex.SelectedItems.Count > 0 And + (txtregex.Text <> "" OrElse txtManIndexwert.Text <> "") + + Case Else + btnLink.Enabled = False + End Select End Sub Private Sub btnLink_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLink.Click @@ -3463,6 +3484,7 @@ Public Class frmNIVerknuepfungen End If End If + EnableBtnLink() 'Catch ex As Exception ' MsgBox("Fehler bei Check Änderung Regex:" & vbNewLine & vbNewLine & ex.Message, MsgBoxStyle.Critical) 'End Try @@ -3611,8 +3633,7 @@ Public Class frmNIVerknuepfungen End Sub Private Sub trvwxml_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles trvwxml.AfterSelect - - + EnableBtnLink() End Sub Private Sub tabctrlbottom_SelectedIndexChanged(sender As Object, e As EventArgs) Handles tabctrlbottom.SelectedIndexChanged From 4daff8ad250be50dd61e687eb6655034ee7e327d Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 16 Mar 2026 11:28:14 +0100 Subject: [PATCH 60/90] Refactor function retrieval and add handler for functions tab Refactored GetMsSqlFunctions to accept multiple types and use SQL IN clause for function retrieval. Added rbFunctionsTb_CheckedChanged event handler to load MS-SQL functions into cmbDataviews and handle unsupported database types. --- ToolCollection/frmNIVerknuepfungen.vb | 66 +++++++++++++++------------ 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/ToolCollection/frmNIVerknuepfungen.vb b/ToolCollection/frmNIVerknuepfungen.vb index 2577ffc..c78f59d 100644 --- a/ToolCollection/frmNIVerknuepfungen.vb +++ b/ToolCollection/frmNIVerknuepfungen.vb @@ -796,70 +796,46 @@ Public Class frmNIVerknuepfungen Return Nothing End Try End Function - Private Function GetMsSqlFunctions(Type As String) As String() + Private Function GetMsSqlFunctions(ParamArray types As String()) As String() Try Dim SqlString As String Dim DataViews() As String = Nothing Dim i As Integer = 0 - 'Dim ConnectionString As SqlConnectionStringBuilder Dim Connection As SqlConnection Dim Command As SqlCommand Dim DataAdapter As SqlDataAdapter Dim DataSet As DataSet = New DataSet() Dim con As String - ' ConnectionString aufbauen If _selectedProfil.UserId = "WINAUTH" Then con = "Data Source=" & _selectedProfil.DataSource & ";Initial Catalog=" & _selectedProfil.InitialCatalog & ";Trusted_Connection=True;" Else con = "Server=" & _selectedProfil.DataSource & ";Database=" & _selectedProfil.InitialCatalog & ";User Id=" & _selectedProfil.UserId & ";Password=" & _selectedProfil.Password & ";" End If - 'ConnectionString = New SqlConnectionStringBuilder() - 'ConnectionString.DataSource = Me._selectedProfil.DataSource - 'ConnectionString.UserID = Me._selectedProfil.UserId - 'ConnectionString.Password = Me._selectedProfil.Password - 'ConnectionString.InitialCatalog = Me._selectedProfil.InitialCatalog - ' Verbindung zur DB herstellen Connection = New SqlConnection(con) Connection.Open() - ' DB-Abfrage für alle Views definieren - SqlString = $"SELECT O.name FROM sys.sql_modules M INNER JOIN sys.objects O ON M.object_id=O.object_id WHERE O.type = '{Type}'" + Dim typeList As String = String.Join("','", types) + SqlString = $"SELECT O.name FROM sys.sql_modules M INNER JOIN sys.objects O ON M.object_id=O.object_id WHERE O.type IN ('{typeList}')" - ' die DB-Abfrage erzeugen Command = New SqlCommand(SqlString, Connection) - - ' die DB-Abfrage durchführen DataAdapter = New SqlDataAdapter(Command) - - ' das DataSet mit den Daten füllen DataAdapter.Fill(DataSet) - If DataSet.Tables(0).Rows.Count > 0 Then - - Dim tabellenart As String = "FUNCTIONS" - - - ' alle Ergebnisse (VIEWs) durchlaufen For Each row As DataRow In DataSet.Tables(0).Rows - If DataViews IsNot Nothing Then ReDim Preserve DataViews(DataViews.Length) Else ReDim DataViews(0) - ' View in Array schreiben DataViews(i) = row.Item(0) i += 1 - - Next - ' Array zurückgeben + Return DataViews Else Return Nothing End If - Catch ex As Exception MsgBox("Die MSSQL-Datenansichten der Datenbank konnten nicht fehlerfrei ausgelesen werden." & vbNewLine & vbNewLine & ex.Message, MsgBoxStyle.Exclamation, "Fehler beim Auslesen der Datenansichten MSSQL") Return Nothing @@ -3747,6 +3723,40 @@ Public Class frmNIVerknuepfungen End If End Sub + Private Sub rbFunctionsTb_CheckedChanged(sender As Object, e As EventArgs) Handles rbFunctionsTb.CheckedChanged + If Not _flagIgnoreCheckedChanged Then + If Me._selectedProfil Is Nothing = False Then + Me.cmbDataviews.Items.Clear() + + ' View- oder Tabellenliste + Dim dataviews() As String = Nothing + If Me._selectedProfil.DbArt = "MS-SQL" Then + dataviews = Me.GetMsSqlFunctions("TF", "IF") + 'ElseIf Me._selectedProfil.DbArt = "ODBC" Then + ' dataviews = Me.GetOdbcDataviews(Me.rbViews.Checked) + 'ElseIf Me._selectedProfil.DbArt = "OLE (Access)" Then + ' dataviews = Me.GetOleDataviews(Me.rbViews.Checked) + Else + MsgBox("Der gewählte Datenbanktyp ist nicht für Funktionen unterstützt.", MsgBoxStyle.Critical, "Unbekannter Datenbanktyp") + End If + + If dataviews IsNot Nothing Then + + For Each dataview As String In dataviews + Me.cmbDataviews.Items.Add(dataview) + Next + + End If + + + Me.txtSelectAnweisung.Text = "" + Else + MsgBox("Bitte wählen Sie ein Profil aus!", MsgBoxStyle.Information, "Achtung:") + End If + + End If + End Sub + Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click End Sub From 0999ba2f3d543a28fa5385c1b112977627609e9e Mon Sep 17 00:00:00 2001 From: OlgunR Date: Wed, 1 Apr 2026 13:02:19 +0200 Subject: [PATCH 61/90] Adjust btnNachbearbeitungAD layout and update image list Refined the position and size of btnNachbearbeitungAD in frmStart for improved UI alignment. Updated ImageList1.ImageStream in frmStart.resx, possibly reflecting changes to form images. --- ToolCollection/frmStart.Designer.vb | 5 ++--- ToolCollection/frmStart.resx | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ToolCollection/frmStart.Designer.vb b/ToolCollection/frmStart.Designer.vb index 77a3152..bbbd7fb 100644 --- a/ToolCollection/frmStart.Designer.vb +++ b/ToolCollection/frmStart.Designer.vb @@ -258,13 +258,12 @@ Partial Class frmStart ' 'btnNachbearbeitungAD ' - Me.btnNachbearbeitungAD.Dock = System.Windows.Forms.DockStyle.Top Me.btnNachbearbeitungAD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnNachbearbeitungAD.Image = Global.ToolCollection.My.Resources.Resources.Untitled__142_ Me.btnNachbearbeitungAD.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnNachbearbeitungAD.Location = New System.Drawing.Point(0, 464) + Me.btnNachbearbeitungAD.Location = New System.Drawing.Point(6, 470) Me.btnNachbearbeitungAD.Name = "btnNachbearbeitungAD" - Me.btnNachbearbeitungAD.Size = New System.Drawing.Size(163, 42) + Me.btnNachbearbeitungAD.Size = New System.Drawing.Size(152, 42) Me.btnNachbearbeitungAD.TabIndex = 4 Me.btnNachbearbeitungAD.Text = "ActiveDirectory" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Nachbearbeitung" Me.btnNachbearbeitungAD.TextAlign = System.Drawing.ContentAlignment.MiddleRight diff --git a/ToolCollection/frmStart.resx b/ToolCollection/frmStart.resx index d955bbf..0b2336c 100644 --- a/ToolCollection/frmStart.resx +++ b/ToolCollection/frmStart.resx @@ -159,7 +159,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAO - FAAAAk1TRnQBSQFMAgEBCQEAAXABAwFwAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + FAAAAk1TRnQBSQFMAgEBCQEAAYABAwGAAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From a75e3642fab3ce3054c51fa9ccb7fc43baa962ee Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 2 Apr 2026 14:13:49 +0200 Subject: [PATCH 62/90] NEW NUGET PACKAGE - System.Data.SQLite.Core --- ToolCollection/frmNIHauptseite.vb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ToolCollection/frmNIHauptseite.vb b/ToolCollection/frmNIHauptseite.vb index 31e405c..aeaae59 100644 --- a/ToolCollection/frmNIHauptseite.vb +++ b/ToolCollection/frmNIHauptseite.vb @@ -1913,11 +1913,16 @@ Public Class frmNIHauptseite If oUnexpectedError = False And aktivesProfil.NachbearbeitungAD = True And unvollstaendig = False Then _Logger.Debug("Nachbearbeitung AD ist aktiviert") Dim sw As New ClassStopwatch("AD-Rework") - Nachbearbeitung_AD(pMyWMDoc) + Dim adReworkOk As Boolean = Nachbearbeitung_AD(pMyWMDoc) Dim msg = sw.Done If msg <> "" Then Stopwatch1 += vbNewLine & $"{msg}" End If + If adReworkOk = False Then + _Logger.Warn($"## Nachbearbeitung AD für [{pMyWMDoc.aName}] fehlgeschlagen - Error-Index wird gesetzt") + File_SetBooleanIndex(True, pMyWMDoc, aktivesProfil.IndexValidation) + SetErrorMeldung("Rechtevergabe fehlgeschlagen", pMyWMDoc, aktivesProfil.IndexFehler) + End If Else If aktivesProfil.NachbearbeitungAD = True Then _Logger.Info($"Nachbearbeitung AD ist aktiviert aber Unexpected Error ist{oUnexpectedError.ToString}") @@ -2359,7 +2364,9 @@ Public Class frmNIHauptseite End If i += 1 Catch ex As Exception - + _Logger.Error(ex) + _erfolgreich = False + Exit For End Try Next From ee2f0bd1026233fc7b72724facb99af1e2f28b2b Mon Sep 17 00:00:00 2001 From: OlgunR Date: Thu, 2 Apr 2026 14:16:40 +0200 Subject: [PATCH 63/90] NEW NUGET PACKAGE - System.Data.SQLite.Core --- ToolCollection/ToolCollection.vbproj | 26 +- ToolCollection/app.config | 12 +- ToolCollection/packages.config | 3 +- ToolCollection/x64/SQLite.Interop.dll | Bin 1132032 -> 0 bytes ToolCollection/x86/SQLite.Interop.dll | Bin 965632 -> 0 bytes .../.signature.p7s | Bin 0 -> 26052 bytes ...a.SQLite.Core.NetFramework.1.0.119.0.nupkg | Bin 0 -> 11285683 bytes ...stem.Data.SQLite.Core.NetFramework.targets | 143 + .../build/net20/x86/SQLite.Interop.dll | Bin 0 -> 1495736 bytes ...stem.Data.SQLite.Core.NetFramework.targets | 143 + .../build/net40/x86/SQLite.Interop.dll | Bin 0 -> 1563320 bytes ...stem.Data.SQLite.Core.NetFramework.targets | 143 + .../build/net45/x86/SQLite.Interop.dll | Bin 0 -> 1656504 bytes ...stem.Data.SQLite.Core.NetFramework.targets | 143 + .../build/net451/x86/SQLite.Interop.dll | Bin 0 -> 1632952 bytes ...stem.Data.SQLite.Core.NetFramework.targets | 143 + .../build/net46/x86/SQLite.Interop.dll | Bin 0 -> 1592504 bytes ...stem.Data.SQLite.Core.NetFramework.targets | 166 + ...stem.Data.SQLite.Core.NetFramework.targets | 166 + ...stem.Data.SQLite.Core.NetFramework.targets | 166 + ...stem.Data.SQLite.Core.NetFramework.targets | 166 + ...stem.Data.SQLite.Core.NetFramework.targets | 166 + .../lib/net20/System.Data.SQLite.dll | Bin 0 -> 468152 bytes .../net20/System.Data.SQLite.dll.altconfig | 22 + .../lib/net20}/System.Data.SQLite.xml | 14714 ++++++++-- .../lib/net40/System.Data.SQLite.dll | Bin 0 -> 459960 bytes .../net40/System.Data.SQLite.dll.altconfig | 22 + .../lib/net40}/System.Data.SQLite.xml | 14714 ++++++++-- .../lib/net45/System.Data.SQLite.dll | Bin 0 -> 459960 bytes .../net45/System.Data.SQLite.dll.altconfig | 22 + .../lib/net45/System.Data.SQLite.xml | 14714 ++++++++-- .../lib/net451/System.Data.SQLite.dll | Bin 0 -> 459960 bytes .../net451/System.Data.SQLite.dll.altconfig | 22 + .../lib/net451}/System.Data.SQLite.xml | 14714 ++++++++-- .../lib/net46/System.Data.SQLite.dll | Bin 0 -> 450232 bytes .../net46/System.Data.SQLite.dll.altconfig | 22 + .../lib/net46/System.Data.SQLite.xml | 24166 ++++++++++++++++ .../System.Data.SQLite.1.0.91.3.nupkg | Bin 5327997 -> 0 bytes .../content/net20/app.config.transform | 11 - .../content/net20/web.config.transform | 11 - .../content/net20/x86/SQLite.Interop.dll | Bin 832512 -> 0 bytes .../content/net40/app.config.transform | 16 - .../content/net40/web.config.transform | 16 - .../content/net40/x86/SQLite.Interop.dll | Bin 876544 -> 0 bytes .../content/net45/app.config.transform | 16 - .../content/net45/web.config.transform | 16 - .../content/net45/x86/SQLite.Interop.dll | Bin 983040 -> 0 bytes .../content/net451/app.config.transform | 16 - .../content/net451/web.config.transform | 16 - .../content/net451/x86/SQLite.Interop.dll | Bin 965632 -> 0 bytes .../lib/net20/System.Data.SQLite.Linq.dll | Bin 196608 -> 0 bytes .../lib/net20/System.Data.SQLite.dll | Bin 278528 -> 0 bytes .../lib/net40/System.Data.SQLite.EF6.dll | Bin 183808 -> 0 bytes .../lib/net40/System.Data.SQLite.Linq.dll | Bin 183808 -> 0 bytes .../lib/net40/System.Data.SQLite.dll | Bin 268800 -> 0 bytes .../lib/net45/System.Data.SQLite.EF6.dll | Bin 183808 -> 0 bytes .../lib/net45/System.Data.SQLite.Linq.dll | Bin 183808 -> 0 bytes .../lib/net45/System.Data.SQLite.dll | Bin 268800 -> 0 bytes .../lib/net451/System.Data.SQLite.EF6.dll | Bin 183808 -> 0 bytes .../lib/net451/System.Data.SQLite.Linq.dll | Bin 183808 -> 0 bytes .../lib/net451/System.Data.SQLite.dll | Bin 268800 -> 0 bytes .../tools/net20/install.ps1 | 36 - .../tools/net40/install.ps1 | 39 - .../tools/net45/install.ps1 | 39 - .../tools/net451/install.ps1 | 39 - .../.signature.p7s | Bin 0 -> 26052 bytes .../System.Data.SQLite.Core.1.0.119.0.nupkg | Bin 0 -> 28331 bytes 67 files changed, 77396 insertions(+), 7593 deletions(-) delete mode 100644 ToolCollection/x64/SQLite.Interop.dll delete mode 100644 ToolCollection/x86/SQLite.Interop.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/.signature.p7s create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0.nupkg create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net20/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net20/x86/SQLite.Interop.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net40/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net40/x86/SQLite.Interop.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net45/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net45/x86/SQLite.Interop.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net451/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net451/x86/SQLite.Interop.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net46/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/build/net46/x86/SQLite.Interop.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/buildTransitive/net20/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/buildTransitive/net40/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/buildTransitive/net45/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/buildTransitive/net451/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/buildTransitive/net46/Stub.System.Data.SQLite.Core.NetFramework.targets create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net20/System.Data.SQLite.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net20/System.Data.SQLite.dll.altconfig rename packages/{System.Data.SQLite.1.0.91.3/lib/net451 => Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net20}/System.Data.SQLite.xml (51%) create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net40/System.Data.SQLite.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net40/System.Data.SQLite.dll.altconfig rename packages/{System.Data.SQLite.1.0.91.3/lib/net20 => Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net40}/System.Data.SQLite.xml (51%) create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net45/System.Data.SQLite.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net45/System.Data.SQLite.dll.altconfig rename packages/{System.Data.SQLite.1.0.91.3 => Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0}/lib/net45/System.Data.SQLite.xml (51%) create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net451/System.Data.SQLite.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net451/System.Data.SQLite.dll.altconfig rename packages/{System.Data.SQLite.1.0.91.3/lib/net40 => Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net451}/System.Data.SQLite.xml (51%) create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net46/System.Data.SQLite.dll create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net46/System.Data.SQLite.dll.altconfig create mode 100644 packages/Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0/lib/net46/System.Data.SQLite.xml delete mode 100644 packages/System.Data.SQLite.1.0.91.3/System.Data.SQLite.1.0.91.3.nupkg delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net20/app.config.transform delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net20/web.config.transform delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net20/x86/SQLite.Interop.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net40/app.config.transform delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net40/web.config.transform delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net40/x86/SQLite.Interop.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net45/app.config.transform delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net45/web.config.transform delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net45/x86/SQLite.Interop.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net451/app.config.transform delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net451/web.config.transform delete mode 100644 packages/System.Data.SQLite.1.0.91.3/content/net451/x86/SQLite.Interop.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net20/System.Data.SQLite.Linq.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net20/System.Data.SQLite.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net40/System.Data.SQLite.EF6.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net40/System.Data.SQLite.Linq.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net40/System.Data.SQLite.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net45/System.Data.SQLite.EF6.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net45/System.Data.SQLite.Linq.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net45/System.Data.SQLite.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net451/System.Data.SQLite.EF6.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net451/System.Data.SQLite.Linq.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/lib/net451/System.Data.SQLite.dll delete mode 100644 packages/System.Data.SQLite.1.0.91.3/tools/net20/install.ps1 delete mode 100644 packages/System.Data.SQLite.1.0.91.3/tools/net40/install.ps1 delete mode 100644 packages/System.Data.SQLite.1.0.91.3/tools/net45/install.ps1 delete mode 100644 packages/System.Data.SQLite.1.0.91.3/tools/net451/install.ps1 create mode 100644 packages/System.Data.SQLite.Core.1.0.119.0/.signature.p7s create mode 100644 packages/System.Data.SQLite.Core.1.0.119.0/System.Data.SQLite.Core.1.0.119.0.nupkg diff --git a/ToolCollection/ToolCollection.vbproj b/ToolCollection/ToolCollection.vbproj index 60e3753..47c61c3 100644 --- a/ToolCollection/ToolCollection.vbproj +++ b/ToolCollection/ToolCollection.vbproj @@ -30,6 +30,8 @@ false true + + x86 @@ -148,15 +150,8 @@ - - P:\Visual Studio Projekte\Bibliotheken\System.Data.SQLite.dll - - - packages\System.Data.SQLite.1.0.91.3\lib\net451\System.Data.SQLite.EF6.dll - - - True - packages\System.Data.SQLite.1.0.91.3\lib\net451\System.Data.SQLite.Linq.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\lib\net46\System.Data.SQLite.dll @@ -837,12 +832,6 @@ - - Always - - - Always - @@ -888,6 +877,13 @@ + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + GfyL?WF{+ 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%0D%8 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

^fG-rcYqyHM~qy&QW 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