Formuláře základní
Formulář pro palety - programový kód
 Tisk

Formulář pro palety - programový kód

Přichází čas oživit formulář frmPalety. Otevřeme si formulář frmPalety např. pomocí okna Solution Explorer. Všechny objekty, které náš formulář bude potřebovat, jsme na něj již vložili. Podíváme se, jaký programový kód již formulář obsahuje. Klikneme v Solution Explorer na ikonu View Code .


Na obr. můžeme vidět kód, který se automaticky vygeneroval při vkládání jednotlivých objektů. Událost TblPaletyBindingNavigatorSaveItem.Click zajišťuje uložení dat z formuláře do databáze. Událost Load formuláře zajišťuje načtení dat z databáze do datasetu.


Kód si rozdělíme do regionů pro zvýšení přehlednosti .


V události Load formuláře přidáme kód, který nastaví počáteční hodnoty nových záznamů.


#Region "Udalosti formulare"

    Private Sub frmPalety_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.Cursor = Cursors.WaitCursor


        'TODO: This line of code loads data into the 'DsData.tblMaterial' table. You can move, or remove it, as needed.

        Me.TblMaterialTableAdapter.Fill(Me.DsData.tblMaterial)

        'TODO: This line of code loads data into the 'DsData.tblStav_Pa' table. You can move, or remove it, as needed.

        Me.TblStav_PaTableAdapter.Fill(Me.DsData.tblStav_Pa)

        'TODO: This line of code loads data into the 'DsData.tblTyp_Pa' table. You can move, or remove it, as needed.

        Me.TblTyp_PaTableAdapter.Fill(Me.DsData.tblTyp_Pa)

        'TODO: This line of code loads data into the 'DsData.tblPalety' table. You can move, or remove it, as needed.

        Me.TblPaletyTableAdapter.Fill(Me.DsData.tblPalety)


        'nastaveni pocatecnich hodnot pro nove zaznamy

        With DsData.tblPalety

            .Typ_paColumn.DefaultValue = "M"

            .Stav_PaColumn.DefaultValue = "Z"

            .Mnoz_PaColumn.DefaultValue = 0

        End With


        Me.Cursor = Cursors.Default

    End Sub


#End Region


Událost TblPaletyBindingNavigatorSaveItem.Click upravíme tak, že ukládání bude fungovat pouze tehdy, pokud je možné vložená data úspěšně uložit .

#Region "TblPaletyBindingNavigator"

    Private Sub TblPaletyBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TblPaletyBindingNavigatorSaveItem.Click

        Me.Cursor = Cursors.WaitCursor


        If Me.Validate() Then

            'zadana data odpovidaji podminkam

            Me.TblPaletyBindingSource.EndEdit()

            Me.TableAdapterManager.UpdateAll(Me.DsData)

        Else

            Me.Cursor = Cursors.Default

            MsgBox("Opravte vstupy", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Chyba")

        End If


        Me.Cursor = Cursors.Default

    End Sub

#End Region


Poklepeme na tlačítko btnZavrit. Vytvoří se prázdná procedura události click. Dopíšeme následující kód .

#Region "Ridici tlacitka"


    Private Sub btnZavrit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZavrit.Click

        If Not IsNothing(Me.DsData.GetChanges) Then

            If MsgBox("Neuložili jste data. Chcete je uložit?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Uložit data?") = MsgBoxResult.Yes Then

                Exit Sub

            End If

        End If

        'otevrit formular frmRidici

        Me.Cursor = Cursors.WaitCursor

        Dim frmRidici As New frmRidici

        frmRidici.MdiParent = MyFrmHlavni

        frmRidici.Show()


        Me.Close()   'zavrit tento formular

        Me.Cursor = Cursors.Default

    End Sub

#End Region



Při zavírání formuláře se může objevit chybová hláška související s tím, že se v nevhodném pořadí uvolňují z paměti data uložená v datasetu. Přidáme formuláři událost FormClosing, kde nejdříve z datasetu uvolníme data z tabulky tblPalety. Ostatní tabulky z datasetu se uvolní zavřením formuláře .

   Private Sub frmPalety_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

        Me.DsData.tblPalety.Clear()

        Me.DsData.tblPalety.Dispose()

    End Sub


Dalším krokem bude udělat kontroly vstupních dat. Kontrola se bude zajišťovat pomocí objektu dgvTblPalety. Ke kontrolám standardně slouží v tomto typu objektu událost CellValidating. Událost bude obsahovat následující kód :

#Region "DataGridView"

    Private Sub dgvTblPalety_CellValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dgvTblPalety.CellValidating

        Dim newInteger As Integer   'pomocna promenna na test spravneho formatu (integer) zadane hodnoty


        Me.dgvTblPalety.Rows(e.RowIndex).ErrorText = ""   'nastavime pocatecni text chybove hlasky


        Select Case Me.dgvTblPalety.Columns(e.ColumnIndex).DataPropertyName

            Case "Cislo_Pa"

                If e.FormattedValue.ToString.Length <> 4 Then

                    Me.dgvTblPalety.Rows(e.RowIndex).ErrorText = "Číslo palety musí obsahovat 4 znaky"

                    e.Cancel = True

                End If

            Case "Mnoz_Pa"

                If Not Integer.TryParse(e.FormattedValue.ToString(), newInteger) OrElse newInteger < 0 Then

                    Me.dgvTblPalety.Rows(e.RowIndex).ErrorText = "Množství musí být nezáporné"

                    e.Cancel = True

                End If

        End Select

    End Sub

#End Region