Aplikační formulář Přehled materiálu
Přehled materiálu - navigace
 Tisk

Přehled materiálu - navigace

Přidáme tlačítko btnZavrit s obsluhou, že při klepnutí se bude volat řídící formulář . Tlačítko bude mít následující vlastnosti:

#Region "Navigace"

#Region "Ridici tlacitka"

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

        '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

#End Region


U formuláře nastavíme:


Výsledný formulář je zobrazen na obr. .


Navigační tlačítka

Na formulář přidáme navigační tlačítka. Tlačítka umístíme do panelu . Vlastnosti jednotlivých objektů:


Programový kód tlačítek btnPrvni a btnPosledni je následující (#Region "Ridici tlacitka") :

    Private Sub btnPrvni_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrvni.Click

        'najit prvni zaznam

        Me.TblMaterialBindingSource.MoveFirst()

        Me.dgvTblMaterial.Focus()

    End Sub


    Private Sub btnPosledni_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPosledni.Click

        'najit posledni zaznam

        Me.TblMaterialBindingSource.MoveLast()

        Me.dgvTblMaterial.Focus()

    End Sub

Dále připravíme obsluhu tlačítka Najít. Na formulář umístíme panel, který bude obsahovat popisek a textové pole pro klíč který se má hledat . Pro panel nastavíme vlastnost "viditelný" (visible) ve vlastnostech na false. To znamená, že tyto prvky normálně nebudou viditelné. Vlastnosti jednotlivých objektů:

Při klepnutí na tlačítko najít se panel s oběma prvky zviditelní a fokus se nastaví na pole, kam se má zapsat vyhledávací klíč. Navigační tlačítka, tlačítko Konec a tlačítka řazení se znepřístupní .

#Region "Hledani"


    Private Sub btnNajit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNajit.Click

        'aktivace tlacitek

        Me.pnlNavig.Enabled = False

        Me.pnlEdit.Enabled = False

        Me.btnZavrit.Enabled = False

        Me.grbRazeni.Enabled = False


        'zviditelneni zadavaciho pole

        Me.pnlNajit.Visible = True

        Me.txtNajit.Text = ""


        Me.txtNajit.Focus()


    End Sub


#End Region



Nyní musíme obsloužit situaci, že je vyplněn vyhledávací klíč. Vyhledávat se bude podle klíče, na které je nastaveno řazení. K dispozici máme dvě události:

Private Sub txtNajit_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNajit.LostFocus

        'aktivace tlacitek

        Me.pnlNavig.Enabled = True

        Me.pnlEdit.Enabled = True

        Me.btnZavrit.Enabled = True

        Me.grbRazeni.Enabled = True


        Dim foundIndex As Integer   'cislo radku odpovidajici kriteriu

        If rdbRaditCislaMat.Checked Then

            'foundIndex = TblMaterialBindingSource.Find("Cislo_Mat", Me.txtNajit.Text) 'presne hledani

            foundIndex = SearchRows(TblMaterialBindingSource, "Cislo_Mat", Me.txtNajit.Text)


        ElseIf rdbRaditNazevMat.Checked Then

            'foundIndex = TblMaterialBindingSource.Find("Nazev_Mat", Me.txtNajit.Text)

            foundIndex = SearchRows(TblMaterialBindingSource, "Nazev_Mat", Me.txtNajit.Text)

        End If

        If foundIndex > -1 Then

            TblMaterialBindingSource.Position = foundIndex

        End If

        'zviditelneni zadavaciho pole

        Me.pnlNajit.Visible = False

        Me.txtNajit.Text = ""


    End Sub


Funkce SearchRows vyhledá číslo řádky odpovídající kritériu zadaném v textboxu txtNajit (1. parametr - tabulka, ve které hledáme; 2. parametr - sloupec, ve kterém hledáme; 3 parametr - hledany text). Tuto funkci vložíme do Modul1 a vydefinujeme funkci SearchRows jako Public .

Public Function SearchRows(ByRef BindingSourcePom As BindingSource, ByVal sColumn As String, ByVal sItem As String) As Integer


        'vytvorime docasny defaultview, pomoci ktereho budeme vyhledavat

        Dim ds As DataSet = BindingSourcePom.DataSource

        Dim dt As DataTable = ds.Tables(BindingSourcePom.DataMember)


        'nastavime datove pole, podle ktereho setridime vzestupne tabulku

        dt.DefaultView.Sort = sColumn & " " & "ASC"


        'vytvorime pole odpovidajici zadanemu kriteriu

        'hledame v setridenem sloupci. % znamena jakykoliv znak

        Dim dr() As DataRow = dt.Select(sColumn & " LIKE '%" & sItem & "%'")


        'Pokud jsme neco nasli, tak najdeme pozici radku v puvodni tabulce

        If dr.Length > 0 Then

            Dim i As Integer = dt.DefaultView.Find(dr(0)(sColumn))

            Return i

        Else

            'nic jsme nenasli

            Return -1

        End If


    End Function