Verschiedene Code-Snippets

Eigene Preisfindung auf Tastenkombination ALT + W

Mit dem Beispiel-Code wird ein bestimmter Preis, der programmiertechnisch beliebig erzeugt werden kann, in das Einzeplreis-Feld der Position hineingesetzt, sobald die Tastenkombination 'Alt + W' gedrückt wird. Dies wird über das Ereignis 'KeyUp' abgefragt, weil die Ereignisse 'KeyDown' und 'KeyPress' bereits durch easyWinArt-Funktionen abgefangen und verwendet werden.

VB.NET SDK-Programmcode

  

#Region " TriggerFormFramework_NachLoad-Ereignis " 

        Private Sub TriggerFormFramework_NachLoad(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.NachLoad 

                '>>> Bei Menüfunktion  V O R G A N G S P O S I T I O N  

                If TypeOf sender Is VorgangsPositionFRM Then 

                    Dim posFRM As VorgangsPositionFRM 

                    posFRM = CType(sender, VorgangsPositionFRM

                    '>>> Ereignis hinzufügen, für KeyUp, weil KeyDown und KeyPress schon durch easyWinArt blockiert sind 

                    AddHandler posFRM.DoubleBoxPreis.KeyUp, AddressOf MeineKalkulation 

                End If 

        End Sub 

#End Region 

 

#Region " Private Sub: MeineKalkulation () " 

        Private Sub MeineKalkulation(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs

                '>>> Reagieren auf ALT + W 

                If e.KeyCode = Keys.W AndAlso My.Computer.Keyboard.AltKeyDown = True Then 

                    Dim posFRM As VorgangsPositionFRM 

                    Dim doubleBoxPreis As EwaDoubleBox 

                    doubleBoxPreis = CType(sender, EwaDoubleBox

                    posFRM = CType(doubleBoxPreis.FindForm, VorgangsPositionFRM

                    '>>> Preis in DoubleBoxPreis setzen 

                    posFRM.BasisFkt.SetzeControl(doubleBoxPreis, 99.99) 

                End If

        End Sub 

#End Region

Prüfung auf Fertigungs-Freigabe in Disposition

Dispositions-Bedarfe, welche als Ursache einen Kundenauftrag haben, sollen zwar in der Disposition zu sehen sein, aber solange keine Freigabe erteilt wurde, sollen sie nicht disponiert werden können. Die Freigabe wird über eine Individual-Variable (CheckBox) am Kundenauftrag erteilt, welche mit Hilfe einer View (Felder: Guid, Freigabe) als Select in der Menüfunktion 'Disposition' hinzugefügt wird. Es wird diese View verwendet und in dieser werden Null-Werte abgefangen, damit es keine undefinierten CheckBoxen gibt für Bedarfe, die keinen Kundenauftrag als Ursache haben. Wird ein nicht freigegebener Kundenauftrags-Bedarf angeklickt, erscheint ein Hinweis und das Häkchen wird wieder entfernt.

VB.NET SDK-Programmcode

  

#Region " TriggerFormFramework_NachLoad-Ereignis " 

Private Sub TriggerFormFramework_NachLoad(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.NachLoad 

        '>>> Bei Menüfunktion  D I S P O B E D A R F   

        If TypeOf sender Is DispositionBedarfFRM Then 

            Dim dispoFRM As DispositionBedarfFRM 

            dispoFRM = CType(sender, DispositionBedarfFRM) 

            AddHandler dispoFRM.CheckBoxDisponierenJN.EwaControlChanged, AddressOf Me.FreigabePrüfen 

        End If 

End Sub 

#End Region 

 

#Region " Private Sub: FreigabePrüfen () " 

Private Sub FreigabePrüfen(ByVal sender As Object, ByVal e As System.EventArgs

        Dim tmpCheckBox As EwaCheckBox 

        Dim dispoFRM As DispositionBedarfFRM 

        tmpCheckBox = CType(sender, EwaCheckBox) 

        '>>> Falls die Checkbox gerade angehakt wurde 

        If tmpCheckBox.Checked Then 

            dispoFRM = CType(tmpCheckBox.FindForm, DispositionBedarfFRM) 

            Dim row As DataRow 

            '>>> Wichtig: BB.AktuelleRow geht nicht, da zu früh hier, Index aus DataGrid holen !!! 

            row = dispoFRM.BB.DataTableStandard.Rows(dispoFRM.BB.DataGridStandard.CurrentRowIndex) 

            Dim belegIdentifizierer As String = C.ToStringX((row(TBL.Vorgang.TBL & "_" & TBL.Vorgang.BelegIdentifiziererVC))) 

            '>>> Wenn diese Zeile ein Auftrags-Bedarf ist 

            If Not belegIdentifizierer = Nothing AndAlso belegIdentifizierer <> "" Then 

                Dim freigabe As Boolean = C.ToBooleanX(row("AV_DispoFertigungsfreigabe" & "_" & "FertigungsFreigabe")) 

                '>>> Wenn keine Freigabe, dann Häkchen entfernen und Meldung 

                If freigabe = False Then 

                    FktF.Meldung("Achtung: Keine Freigabe", dispoFRM) 

                    dispoFRM.BasisFkt.SetzeControl(tmpCheckBox, False

                End If 

            End If 

        End If 

End Sub 

#End Region

Verbindlichkeiten automatisiert bezahlen

Mit dem unteren Beispiel werden alle offenen Verbindlichkeiten automatisch bezahlt durch Automatisierung der Abläufe, die normalerweise durch Benutzerinterkation erfolgen. Es wird also im easyWinArt nacheinander für jede entsprechende Verbindlichkeit die Menüfunktion 'Zahlungen' geöffnet, dann der Button 'neu' betätigt, entsprechende Werte eingetragen, dann der Button 'Speichern' betätigt und anschließend wieder beendet.

VB.NET SDK-Programmcode

  

#Region " TriggerFormFramework_StartForm-Ereignis " 

        Private Sub TriggerFormFramework_StartForm(ByVal sender As Object, ByVal e As FormFrameworkStartFormEventArgs) Handles Me.StartForm 

                                 '>>> Bei Menüfunktion  V o r g a n g 

                If TypeOf sender Is VorgangFRM Then 

                    Dim vorFRM As VorgangFRM 

                    vorFRM = CType(sender, VorgangFRM

                    '>>> Registerkarte und Button ergänzen 

                    Dim meinTab As New TabPage 

                    Dim buttonZahlungenErledigen As New EwaButton 

                    buttonZahlungenErledigen.Width = 120 

                    buttonZahlungenErledigen.Text = "Zahlungen erledigen" 

                    buttonZahlungenErledigen.EwaReadOnlyAktiv = True 

                    meinTab.ImageIndex = 131 

                    meinTab.Controls.Add(buttonZahlungenErledigen) 

                    vorFRM.TabControlStandard.Controls.Add(meinTab) 

                    AddHandler buttonZahlungenErledigen.Click, AddressOf ZahlungErledigen 

                End If

        End Sub 

#End Region 

 

#Region " TriggerFormFramework_NachDatensatzChangedMultiEreignis-Ereignis " 

        Private Sub TriggerFormFramework_NachDatensatzChangedMultiEreignis(ByVal sender As Object, ByVal e As FormFrameworkMultiEventArgs) Handles Me.NachDatensatzChangedMultiEreignis 

                '>>> Bei Menüfunktion  Z A H L U N G 

                If TypeOf sender Is ZahlungenFRM Then 

                    Dim zahlFRM As ZahlungenFRM 

                    zahlFRM = CType(sender, ZahlungenFRM

                    '>>> Zahlungen erledigen, wenn im EwaObjekt das Wort 'Erledigen' steht 

                    If e.EreignisTyp = MultiEventTyp.NachLoad AndAlso zahlFRM.EwaObjekt.ToString = "Erledigen" Then 

                        '>>> Neu-Button betätigen  

                        CType(New FcNeu(zahlFRM), IEwaFunktion).Run() 

                        '>>> Skonto löschen, es wurde immer alles bezahlt 

                        zahlFRM.ButtonSkontoLöschen.PerformClick() 

                        '>>> Zahlungsart 'Lastschrift' setzen, damit in keinem Fall Kontodaten benötigt werden 

                        zahlFRM.BasisFkt.SetzeControl(zahlFRM.ComboBoxKürzel_ZahlungsArt, "LSCHR"

                        '>>> Datum-Kontoauszug setzen, damit die Zahlung erledigt ist und nicht geplant oder angewiesen 

                        zahlFRM.BasisFkt.SetzeControl(zahlFRM.DatePickerDatumKontoauszug, SqlZeit.Now.Date.ToShortDateString) 

                        '>>> Ggf. Zahlungs-Datum setzen 

                        If zahlFRM.DatePickerDatumZahlung.Text = "" Then 

                            zahlFRM.BasisFkt.SetzeControl(zahlFRM.DatePickerDatumZahlung, SqlZeit.Now.Date.ToShortDateString) 

                        End If 

                        '>>> Speichern  

                        CType(New FcSpeichern(zahlFRM), IEwaFunktion).Run() 

                        '>>> Beenden des Fensters 

                        CType(New FcBeenden(zahlFRM, False), IEwaFunktion).Run() 

                    End If 

                End If

        End Sub 

#End Region 

 

#Region " Private Sub: ZahlungErledigen (Automatisiertes Eintragen von Zahlungen in alle gesamt-offenen unbezahlten Verbindlichkeiten) " 

        Private Sub ZahlungErledigen(ByVal sender As Object, ByVal e As System.EventArgs

                Dim row As DataRow 

                Dim belegGUID As Guid 

                Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                '>>> Holen aller GUIDS aller gesamtoffenen Verbindlichkeiten, die einen zu bezahlenden Wert haben, ohne alte Versionen 

                Dim tmpSQL As String = "SELECT " & TBL.Vorgang.GUID & _ 

                                       " FROM " & TBL.Vorgang.TBL & _ 

                                       " WHERE " & TBL.Vorgang.BelegStatusGUID & " = '" & BST.E_VER_GOF_GesamtOffen & "'" & _ 

                                       " AND " & TBL.Vorgang.VerkaufsWerteBruttoBezahltDBL & "= 0" & _ 

                                       " AND " & TBL.Vorgang.VerkaufsWerteNettoEffektivDBL & "> 0" & _ 

                                       " AND " & TBL.Vorgang.HistorieBIT & " = 0" 

                Dim tmpTable As DataTable = tmpDBZ.BildeDataTableSQL(tmpSQL, TBL.Vorgang.TBL) 

                '>>> Für jede geholte GUID (Verbindlichkeit): Zahlungen-FEnster öffnen mit speziellen Parametern 

                For Each row In tmpTable.Rows 

                    belegGUID = C.ToGuidX(row(0)) 

                    FktF.StartMenueFunktion(MF.Zahlungen, , TBL.Zahlungen.TBL & "." & TBL.Zahlungen.BelegGUID & " = '" & belegGUID.ToString & "'", , "xxx", belegGUID.ToString, , , "Erledigen"

                Next

        End Sub 

#End Region

Beleg manuell erledigen

Mit dieser Prozedur kann der angegebene Beleg auf manuell erledigt gesetzt werden, es wird die gleiche Aktion durchgeführt wie über den Button 'Manuell erledigen' in der Funktions-Toolbar. Der Beleg wird vorher gesperrt und anschließend wieder freigegeben.

VB.NET SDK-Programmcode

  

#Region " Private Sub: BelegManuellErledigen () " 

        Private Sub BelegManuellErledigen(ByVal sender As Object, ByVal e As System.EventArgs

                Dim belegGUID As String = "d457770f-3490-453b-8b21-dca236b15bcd" 

                '>>> Beleg sperren; Exit, falls nicht möglich 

                If FktF.GuidSperren(belegGUID) Then Exit Sub 

                '>>> Manuell erledigen: 

                Dim tmpVorgang As New Vorgang(New Guid(belegGUID)) 

                tmpVorgang.ManuellErledigen() 

                FktF.GuidFreigeben(belegGUID)

        End Sub 

#End Region

Texte bei gesperrten Belegen ändern

Manchmal ist es notwendig, bei gesperrten Rechnungen nochmals einen (für die Fibu nicht relevanten) Text zu ändern. Mit dem nachfolgenden Code kann man die Felder Betreff und Einleitungstext am Beleg sowie Langtext an der Position durch Doppelklick in einem erscheinenden Fenster ändern. Der Text wird auf der Oberfläche gesetzt und gleichzeitig direkt in die Datenbank geschrieben.

VB.NET SDK-Programmcode

  

#Region " TriggerFormFramework_NachLoad-Ereignis " 

        Private Sub TriggerFormFramework_NachLoad(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.NachLoad 

                '>>> Bei Menüfunktion  V O R G A N G 

                If TypeOf sender Is VorgangFRM Then 

                    Dim vorFRM As VorgangFRM 

                    vorFRM = CType(sender, VorgangFRM

                    AddHandler vorFRM.TextBoxBetreff.DoubleClick, AddressOf TextNachträglichÄndern 

                    AddHandler vorFRM.TextBoxEinleitungstext.DoubleClick, AddressOf TextNachträglichÄndern 

                End If 

                '>>> Bei Menüfunktion  V O R G A N G S P O S I T I O N 

                If TypeOf sender Is VorgangsPositionFRM Then 

                    Dim posFRM As VorgangsPositionFRM 

                    posFRM = CType(sender, VorgangsPositionFRM

                    AddHandler posFRM.TextBoxBezeichnungLang.DoubleClick, AddressOf TextNachträglichÄndern 

                End If

        End Sub 

#End Region 

 

#Region " Private Sub: TextNachträglichÄndern () " 

        Private Sub TextNachträglichÄndern(ByVal sender As Object, ByVal e As System.EventArgs

                Dim basisFRM As BasisForm 

                Dim aktuelleTextBox As EwaTextBox 

                aktuelleTextBox = CType(sender, EwaTextBox

                basisFRM = CType(CType(sender, EwaTextBox).FindForm, BasisForm

                If basisFRM.BearbeitungsModus <> BasisFormModus.Lesen Then 

                    FktF.Meldung("Sie sind nicht im Lesemodus", basisFRM) 

                    Exit Sub 

                End If 

                Dim langTextForm As New LangTextForm(basisFRM, aktuelleTextBox) 

                '>>> Eventuell Größe anpassen: 

                If aktuelleTextBox.Multiline = False Then 

                    langTextForm.TextBoxEingabeText.Multiline = False 

                    langTextForm.Size = New Size(800, 150) 

                End If 

                langTextForm.TextBoxEingabeText.ReadOnly = False 

                langTextForm.ButtonSpeichern.Visible = True 

                '>>> Form anzeigen: 

                Dim dr As DialogResult = langTextForm.ShowDialog() 

                If dr = DialogResult.OK Then 

                    '>>> UPDATE: 

                    Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                    tmpDBZ.LöscheFelder() 

                    tmpDBZ.AddFelder(aktuelleTextBox.EwaBindungsSpalte, langTextForm.TextBoxEingabeText.Text, EwaSQL.NVarChar) 

                    tmpDBZ.UpdateDatensatz(aktuelleTextBox.EwaBindungsTabelle, basisFRM.AktuelleGUID) 

                    '>>> Dispose: 

                    langTextForm.Dispose() 

                End If

        End Sub 

#End Region

Am Vorgang das Projekt über den Projekt-Matchcode einstellen

Die Original-IntegerBox des Projektes wird mit einer eigenen TextBox überlagert, mit der das Projekt über den Projekt-Matchcode ausgewählt werden kann.

VB.NET SDK-Programmcode

  

#Region " TriggerFormFramework_StartForm-Ereignis " 

        Private Sub TriggerFormFramework_StartForm(ByVal sender As Object, ByVal e As FormFrameworkStartFormEventArgs) Handles Me.StartForm 

            '>>> Bei Menüfunktion  V O R G A N G   

            If TypeOf sender Is VorgangFRM Then 

                Dim vorFRM As VorgangFRM 

                vorFRM = CType(sender, VorgangFRM

                '>>> Projekt am Vorgang soll über den Projekt-Matchcode ausgewählt werden können 

                ProjektMatchcodeAmVorgangLogiken(vorFRM) 

                '>>> GUID des aktuellen Mandanten 

                Dim aktuellerMandant As Guid = GV.MandantenGUID 

            End If 

        End Sub 

#End Region 

 

#Region " TriggerFormFramework_DatenBindung-Ereignis " 

        Private Sub TriggerFormFramework_DatenBindung(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.DatenBindung 

                '>>> Bei Menüfunktion  V o r g a n g  

                If TypeOf sender Is VorgangFRM Then 

                    Dim VorFRM As VorgangFRM 

                    VorFRM = CType(sender, VorgangFRM

                    Dim tmpTextBox As EwaTextBox 

                    tmpTextBox = CType(VorFRM.GroupBoxProjekt.Controls("TextboxProjektMatchcode"), EwaTextBox

                    VorFRM.DatenBindung(tmpTextBox, TBL.Projekte.TBL & "Projekt", TBL.Projekte.MatchCodeVC) 

                End If

        End Sub 

#End Region 

 

#Region " Private Sub: ProjektMatchcodeAmVorgangLogiken (Projekt am Vorgang soll über den Projekt-Matchcode ausgewählt werden können) " 

        Private Sub ProjektMatchcodeAmVorgangLogiken(ByVal VorFRM As VorgangFRM

                Dim textboxProjektMatchcode As New EwaTextBox 

                textboxProjektMatchcode.Name = "TextboxProjektMatchcode" 

                textboxProjektMatchcode.Width = VorFRM.IntegerBoxProjektNummer_ProjekteProjekt.Width 

                textboxProjektMatchcode.Left = VorFRM.IntegerBoxProjektNummer_ProjekteProjekt.Left 

                textboxProjektMatchcode.Top = VorFRM.IntegerBoxProjektNummer_ProjekteProjekt.Top 

                VorFRM.TextBoxBezeichnungKurz_ProjekteProjekt.Parent.Controls.Add(textboxProjektMatchcode) 

                AddHandler textboxProjektMatchcode.EwaControlChanged, AddressOf ProjektEinstellen 

                Dim TextboxProjektMatchcodeTimer As New Timer 

                TextboxProjektMatchcodeTimer.Interval = 300 

                textboxProjektMatchcode.Tag = TextboxProjektMatchcodeTimer 

                textboxProjektMatchcode.BringToFront() 

                AddHandler TextboxProjektMatchcodeTimer.Tick, AddressOf ProjektEinstellenTimerBehandlung 

                AddHandler VorFRM.IntegerBoxProjektNummer_ProjekteProjekt.EwaControlChanged, AddressOf ProjektEinstellenMatchcodeAnpassen

        End Sub 

#End Region 

 

#Region " Private Sub: ProjektEinstellenMatchcodeAnpassen (Wird das Projekt über das blaue Label ausgewählt, so muss der Matchcode gesetzt werden) " 

        Private Sub ProjektEinstellenMatchcodeAnpassen(ByVal sender As Object, ByVal e As System.EventArgs

                Dim vorFRM As VorgangFRM 

                Dim textboxProjektMatchcode As EwaTextBox 

                Dim matchcode As String 

                vorFRM = CType(CType(sender, EwaIntegerBox).FindForm, VorgangFRM

                textboxProjektMatchcode = CType(vorFRM.GroupBoxProjekt.Controls("TextboxProjektMatchcode"), EwaTextBox

                '>>> Matchcode-Textbox entsprechend dem neuen Inhalt der Projekt-Nr-IntegerBox füllen 

                If vorFRM.IntegerBoxProjektNummer_ProjekteProjekt.Text.Trim <> "" Then 

                    Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                    matchcode = C.ToStringX(tmpDBZ.HoleFeld(TBL.Projekte.MatchCodeVC, TBL.Projekte.TBL, TBL.Projekte.ProjektNummerINT, vorFRM.IntegerBoxProjektNummer_ProjekteProjekt.Text)) 

                Else 

                    matchcode = "" 

                End If 

                textboxProjektMatchcode.EwaChangedNichtAusführen = True 

                textboxProjektMatchcode.Text = matchcode 

                textboxProjektMatchcode.EwaChangedNichtAusführen = False 

        End Sub 

#End Region 

 

#Region " Private Sub: ProjektEinstellen (Beim eingeben eines Projekt-Matchcodes die Projekt-Nr-IntegerBox entsprechend füllen, damit die restlichen Logiken ablaufen) " 

        Private Sub ProjektEinstellen(ByVal sender As Object, ByVal e As System.EventArgs

                '>>> Projekt-Nr-IntegerBox wird nicht sofort befüllt, sondern über einen Timer, damit man den Matchcode flüssig tippen kann 

                Dim textboxProjektMatchcode As EwaTextBox 

                Dim vorFRM As VorgangFRM 

                textboxProjektMatchcode = CType(sender, EwaTextBox

                vorFRM = CType(textboxProjektMatchcode.FindForm, VorgangFRM

                Dim TextboxProjektMatchcodeTimer As Timer 

                TextboxProjektMatchcodeTimer = CType(textboxProjektMatchcode.Tag, Timer

                TextboxProjektMatchcodeTimer.Tag = vorFRM 

                TextboxProjektMatchcodeTimer.Stop() 

                TextboxProjektMatchcodeTimer.Start()

        End Sub 

#End Region 

 

#Region " Private Sub: ProjektEinstellenTimerBehandlung (Timer-Behandlung für ProjektEinstellen) " 

        Private Sub ProjektEinstellenTimerBehandlung(ByVal sender As Object, ByVal e As System.EventArgs

                Dim neueProjektNr As String = "" 

                Dim vorFRM As VorgangFRM 

                Dim textboxProjektMatchcode As EwaTextBox 

                Dim textboxProjektMatchcodeTimer As Timer 

                textboxProjektMatchcodeTimer = CType(sender, Timer

                textboxProjektMatchcodeTimer.Stop() 

                vorFRM = CType(textboxProjektMatchcodeTimer.Tag, VorgangFRM

                textboxProjektMatchcode = CType(vorFRM.GroupBoxProjekt.Controls("TextboxProjektMatchcode"), EwaTextBox

                '>>> Projekt-Nr-IntegerBox entsprechend eingegebenem Matchcode füllen 

                If textboxProjektMatchcode.Text.Trim <> "" Then 

                    Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                    neueProjektNr = C.ToStringX(tmpDBZ.HoleFeld(TBL.Projekte.ProjektNummerINT, TBL.Projekte.TBL, TBL.Projekte.MatchCodeVC, textboxProjektMatchcode.Text)) 

                End If 

                vorFRM.BasisFkt.SetzeControl(vorFRM.IntegerBoxProjektNummer_ProjekteProjekt, neueProjektNr) 

        End Sub 

#End Region

E-Mail-SMTP-Einstellungen pro Anwender

Im Standard werden die SMTP-Einstellungen global in der Mandanten-Konfiguration eingestellt und für alle Anwender werden die Emails über dieses angegebene SMTP-Konto verschickt. Mit der folgenden Programmieung können pro Anwender eigene SMTP-Einstellungen pro Anwender festgelegt werden. Die entsprechenden Individual-Variablen 'SMTP-Benutzername' und 'SMTP-Passwort' müssen an der Menüfunktion 'Anwender' vorhanden sein.

VB.NET SDK-Programmcode

  

#Region " TriggerFormFramework_EwaMenueFormLoadClosing-Ereignis " 

        Private Sub TriggerFormFramework_EwaMenueFormLoadClosing(sender As Object, e As MenüFormEventArgs) Handles Me.EwaMenueFormLoadClosing 

                '>>> Beim Starten von easyWinArt die anwenderspezifischen Mail-Anmeldedaten einstellen  

                If e.LoadJN Then 

                    AnwenderspezifischeMaildatenEinstellen() 

                End If

        End Sub 

#End Region 

 

#Region "  Private Sub TriggerFormFramework_NachLoad() " 

        Private Sub TriggerFormFramework_NachLoad(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.NachLoad 

                '>>> Bei Menüfunktion  A N W E N D E R  

                If TypeOf sender Is AnwenderFRM Then 

                    Dim anwFRM As AnwenderFRM 

                    anwFRM = CType(sender, AnwenderFRM

                    '>>> Wird die Eingabe in das Control 'IndVarSMTPPasswort' gestartet, so wird das Fenster zur Passworteingabe angezeigt  

                    For Each ctrl As IEwaControl In anwFRM.PanelIndVar.Controls 

                        If ctrl.EwaBindungsSpalte = "IndVarSMTPPasswort" Then 

                            Dim textBoxPasswort As EwaTextBox = CType(ctrl, EwaTextBox

                            textBoxPasswort.PasswordChar = Global.Microsoft.VisualBasic.ChrW(42) 

                            AddHandler textBoxPasswort.Enter, AddressOf PasswortEingabe 

                        End If 

                    Next 

                End If

        End Sub 

#End Region 

 

#Region " TriggerFormFramework_NachSpeichern-Ereignis " 

        Private Sub TriggerFormFramework_NachSpeichern(sender As Object, e As FormFrameworkSpeichernEventArgs) Handles Me.NachSpeichern 

            '>>> Bei Menüfunktion   M A N D A N T E N K O N F I G  

            If TypeOf sender Is MandantenKonfigurationFRM Then 

                Dim configFRM As MandantenKonfigurationFRM 

                configFRM = CType(sender, MandantenKonfigurationFRM

                '>>> Beim Ändern der Mandantenkonfiguration die anwenderspezifischen Mail-Anmeldedaten einstellen  

                AnwenderspezifischeMaildatenEinstellen() 

            End If 

        End Sub 

#End Region 

 

#Region " Private Sub: PasswortEingabe () " 

        Private Sub PasswortEingabe(sender As Object, e As System.EventArgs

                Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                '>>> Fenster zur Passwort-Eingabe anzeigen  

                Dim textBoxPasswort As EwaTextBox = CType(sender, EwaTextBox

                Dim avwFRM As AnwenderFRM = CType(textBoxPasswort.FindForm, AnwenderFRM

                Dim pwHF As New PasswortHF("Bitte das SMTP-Passwort eingeben", "SMTP-Passwort", tmpDBZ, TBL.Anwender.TBL, "IndVarSMTPPasswort", avwFRM.AktuelleGUID) 

                pwHF.ShowDialog() 

                avwFRM.TextBoxName.Focus()

        End Sub 

#End Region 

 

#Region " Private Sub: AnwenderspezifischeMaildatenEinstellen () " 

        Private Sub AnwenderspezifischeMaildatenEinstellen() 

                Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                '>>> SMTP-Anmeldename überschreiben  

                GV.Config.MailSmtpServerAnmeldeName = C.ToStringX(tmpDBZ.HoleFeld("IndVarSMTPName", TBL.Anwender.TBL, TBL.Anwender.GUID, GV.User.GUID.ToString)) 

                '>>> SMTP-Passwort überschreiben  

                Dim passwort As String = C.ToStringX(tmpDBZ.HoleFeld("IndVarSMTPPasswort", TBL.Anwender.TBL, TBL.Anwender.GUID, GV.User.GUID.ToString)) 

                GV.Config.MailSmtpServerAnmeldePasswort = Fkt.SqlPasswortEntschlüsseln(passwort, Fkt.BildeUserPasswort(GV.KennungSQL))

        End Sub 

#End Region 

 

#Region " Private Sub: AnwenderspezifischeMaildatenEinstellen () " 

        Private Sub AnwenderspezifischeMaildatenEinstellen() 

                Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                Dim tmpSQL As String = "SELECT " & "IndVarSMTPBenutzername" & _ 

                                            ", " & "IndVarSMTPPasswort" & _ 

                                       " FROM " & TBL.Anwender.TBL & _ 

                                       " WHERE " & TBL.Anwender.GUID & " = '" & GV.User.GUID.ToString & "'" 

                Dim tmpTable As DataTable = tmpDBZ.BildeDataTableSQL(tmpSQL, TBL.Anwender.TBL) 

                Dim tmpSmtpUsername As String = C.ToStringX(tmpTable.Rows(0)("IndVarSMTPBenutzername")) 

                Dim tmpSmtpUerPasswort As String = C.ToStringX(tmpTable.Rows(0)("IndVarSMTPPasswort")) 

                '>>> Falls individueller Wert vorhanden, SMTP-Anmeldename überschreiben  

                If tmpSmtpUsername.Trim <> "" Then 

                    GV.Config.MailSmtpServerAnmeldeName = tmpSmtpUsername 

                End If 

                If tmpSmtpUerPasswort.Trim <> "" Then 

                    tmpSmtpUerPasswort = Fkt.SqlPasswortEntschlüsseln(tmpSmtpUerPasswort, Fkt.BildeUserPasswort(GV.KennungSQL)) 

                    GV.Config.MailSmtpServerAnmeldePasswort = tmpSmtpUerPasswort 

                End If

        End Sub 

#End Region

Anhänge im Mail-Fenster automatisch ergänzen

Mit folgendem Code können über das SDK beliebige Datei-Anhänge automatisch im Mail-Fenster ergänzt werden. Hierfür ist eine Abfrage diverser Parameter möglich, z.B. aus welcher Menüfunktion das Mail-Fenster geöffnet wurde und ob dabei ein bestimmter Druck-Report zu Grunde liegt. So können z.B. beim Versand von Belegen automatisch die AGB's als PDF-Datei angehängt werden.

Im folgenden Beispiel wird eine Textdatei angehägt, welche an einer bestimmten Stelle auf der Festplatte liegt, wenn aus den Vorgangs-Belegen heraus bei einem Verkaufs-Angebot der Druck-Report mit dem Anzeige-Namen 'Angebot' per E-Mail verschickt wird.

VB.NET SDK-Programmcode

  
#Region " TriggerFormFramework_EwaModalFormLoadClosing-Ereignis "
        Private Sub TriggerFormFramework_EwaModalFormLoadClosing(sender As Object, e As ModalFormEventArgsHandles Me.EwaModalFormLoadClosing
            '>>> Nur beim Öffnen des Mail-Fensters 
            If TypeOf sender Is MailForm AndAlso e.NachLoadJN Then
                Dim mailFRM As MailForm = CType(sender, MailForm)
                '>>> Nur beim Mailen aus einem Angebot, nur wenn Mail aufgrund von Report geöffnet 
                If TypeOf mailFRM.BasisFRM Is VorgangFRM AndAlso mailFRM.EmailFaxDmsOBJ.DruckForm IsNot Nothing Then
                    Dim vorFRM As VorgangFRM = CType(mailFRM.BasisFRM, VorgangFRM)
                    If vorFRM.BelegTypGUID = BT.VkAngebot Then
                        '>>> Nur bei bestimmten Report mit dem Anzeige-Namen 'Angebot' 
                        If mailFRM.EmailFaxDmsOBJ.DruckForm.SelektiertesLLObjekt.AnzeigeDB = "Angebot" Then
                            '>>> Datei-Anhang ergänzen 
                            Dim dateiPfad As String = "D:test.txt"
                            mailFRM.SelektierterMailAnhangName = Fkt.DateiNameOhnePfad(dateiPfad)
                            '>>> Ausgewählte Datei ins DateiAnhang-Verzeichnis kopieren:
                            Fkt.DateiKopieren(dateiPfad, mailFRM.DateiAnhangPfad & mailFRM.SelektierterMailAnhangName, True)
                            '>>> Anzeige aller aktuellen Anhänge in der List-Box:
                            mailFRM.BildeListBoxAnhänge()
                            '>>> Name des selektierten Mail-Anhangs zurücksetzen:
                            mailFRM.SelektierterMailAnhangName = ""
                        End If
                    End If
                End If
            End If
        End Sub
#End Region

Lagerbuchung unterdrücken

Mit folgendem Code kann eine Lagerbuchung unterdrückt werden. Wird die Variable 'LagerbuchungNichtAusführenSDK' vor der Lagerbuchung im Trigger 'LagerBuchung' gesetzt, so wird keine Lagerbuchung ausgeführt und auch kein Lagerjournal-Eeintrag erzeugt. mit Hilfe der Informationen aus den EventArgs kann das Verhindern auf ganz bestimmte Konstellationen eingeschränkt werden,z.B. nur für Verkaufs-Lieferungen usw.

VB.NET SDK-Programmcode

  

#Region " TriggerBusinessLayer_LagerBuchung-Ereignis " 

        Private Sub TriggerBusinessLayer_LagerBuchung(sender As Object, e As LagerbuchungsEventArgs) Handles Me.LagerBuchung 

                If e.VorLagerbuchung Then 

                    '>>> Lagerbuchung verhindern 

                    e.LagerBuchungsSTR.LagerbuchungNichtAusführenSDK = False 

                End If

        End Sub 

#End Region

Toolstrip-Button durch eigenen ersetzen

Mit dieser Funktion wird ein Toolstrip-Button versteckt und ein neuer dafür eingefügt mit einer eigenen Funktion dahinter. Der Original-Button muss versteckt werden und weiterhin existieren, damit die Original-Programmlogiken weiter funktionieren.

VB.NET SDK-Programmcode

  

#Region " TriggerFormFramework_StartForm-Ereignis " 

        Private Sub TriggerFormFramework_StartForm(sender As Object, e As FormFrameworkStartFormEventArgs) Handles Me.StartForm 

                '>>> Menüfunktion  V O R G A N G  

                If TypeOf sender Is VorgangFRM Then 

                    Dim vorFRM As VorgangFRM 

                    vorFRM = CType(sender, VorgangFRM

                    '>>> Neuen Toolstrip-Button erzeugen 

                    Dim ToolBarButtonUserVerknüpfung2 As New ToolStripButton 

                    ToolBarButtonUserVerknüpfung2.ImageIndex = 376 

                    '>>> Neuen Button an der Position des alten Buttons einfügen 

                    Dim index As Integer = vorFRM.ToolBarVorgang.Items.IndexOfKey(vorFRM.ToolBarButtonVerknüpfung2.Name) 

                    vorFRM.ToolBarVorgang.Items.Insert(index, ToolBarButtonUserVerknüpfung2) 

                    AddHandler ToolBarButtonUserVerknüpfung2.Click, AddressOf ToolBarButtonUserVerknüpfung2Click 

                    '>>> Original-Toolstrip-Button verstecken 

                    Dim tmpToolbar As New ToolStrip 

                    vorFRM.PanelUnsichtbaresTabControl.Controls.Add(tmpToolbar) 

                    tmpToolbar.Items.Add(vorFRM.ToolBarButtonVerknüpfung2) 

                End If

        End Sub 

#End Region 

 

#Region " Private Sub: ToolBarButtonUserVerknüpfung2Click () " 

        Private Sub ToolBarButtonUserVerknüpfung2Click(sender As Object, e As System.EventArgs

                Dim tmpButton As ToolStripButton = CType(sender, ToolStripButton

                Dim vorFRM As VorgangFRM 

                vorFRM = CType(tmpButton.Owner.FindForm, VorgangFRM

                '>>> Meldung 

                FktF.Meldung("Test 123", vorFRM)

        End Sub 

#End Region

Beratung erwünscht?

Gerne können Sie mich oder einen mein­er freund­lichen Kollegen telefonisch er­reichen:  +49 2161 277 680

Alter­na­tiv schrei­ben Sie uns an  info@it-easy.de oder nutz­en Sie das nach­folgende Kontakt­formular.

Ihr Ralf Jasper
Kundenservice

Mitarbeiterfoto von Herrn Ralf Jasper


Rückruf-Service

Für eine möglichst unkomplizierte Kontaktaufnahme füllen Sie bitte das unten stehende Formular aus und klicken auf „Rückruf anfordern“.