czwartek, 31 października 2013

Dalszy ciąg "Komponent1" (2)

Poniżej znajduje się procedura obliczenia energii z całego dnia.
Private Sub btnOblicz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOblicz.Click
      If txtWaga.Text = "" Then 
          MessageBox.Show("Wpisz wagę produktu w gramach.", Uwaga")
           Exit Sub
    End If
    sit = lstMeal.Items.Add(txtNazwao.Text)      ' Wpisanie nazwy wybranego produktu do
                                                                              ' tabeli posiłku o nazwie lstMeal
   Dim Oen, Sen As Integer                                 ' Deklaracja wartości Oen - energia produktu
                                                                              ' o określonej wadze, Sen - suma energii
   Oen = (txtEno.Text * txtWaga.Text) / 100      ' Obliczenie energii
   Oen = Format(Oen, "###")                              ' sformatowanie obliczonej energii
   sit.Subitems.Add(Oen)                                     ' Wpisanie obliczonej energii do tabeli
   Sen = txtSen.Text                                             ' Przejęcie wartości sumy energii
                                                                              ' Początkowa wartość Text w okienku
                                                                              ' powinna być wpisana 0
   Sen = Sen + Oen                                              '  Suma
   Sen = Format(Sen, "###") 
   txtSen.Text = Sen
 End Sub                                                               ' koniec procedury
 

środa, 30 października 2013

Dalszy ciąg programu "Komponent1"



Powyżej przedstawiony jest ostateczny formularz programu. Do poprzedniego formularza należy dodać następujące okienka:
1 Okienko tekstowe txtWaga
2. Dodaj przycisk btnOblicz, text "Obliczenie" i kliknij w ten przycisk dwa razy, w celu dodania procedury.
3. Poniżej dodaj dwa przyciski:
                  a. btnKaswszystko , tekst "Kasowanie całego posiłku" i kliknąć w niego dwa razy.
                  b. btnKaspoj , tekst "Kasowanie pojedyńczego" i kliknąć w niego dwa razy.
4. Dodaj okno listview o nazwie lstMeal , tak jak na formularzu i kliknij w niego też dwa razy.
5. Dodaj też okienko tekstowe txtSen
6. Dodaj przycisk btnzapismeal , kliknij w okno dwa razy
7. Dodaj btnWykres
8. Dodaj btnEnd


sobota, 26 października 2013

Wyświetlanie w oknach wybranego produktu z tabeli

Poniżej tabeli pokarmowej lstPokarm  umieszczone są okna do wyświetlania wybranego produktu z tabeli.  Należy kliknąć dwa razy w okno tabeli i następnie uzupełnić kod.
Private Sub lstPokarm_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstPokarm.SelectedIndexChanged
    Dim bf As ListView.SelectedListViewItemCollection = _
                    lstPokarm.SelectedItems
     For Each sit In bf
        txtNazwao.Text = sit.Subitems(0).Text)
        pEn = Decimal.Parse(sit.Subitems(1).Text)
        txtEno.Text = Ctype(pEn, String)
    Next
End Sub
Po uruchomieniu programu (klawisz F5), można sprawdzić działanie programu. Wyświetlenie wybranego produktu z tabeli, umożliwia przeliczenie danych po wprowadzeniu wagi.
W następnym razem przedstawię sposób obliczeń.

Kasowanie wybranego produktu z zapisanej bazy

Poniżej przedstawiam kod do usuwania zapisanego produktu z  bazy. W tym celu należy kliknąć dwa razy w okienko "Kasowanie". Wyświetli się wtedy procedura, do której należy dopisać poniższy kod.
Private Sub_Kas_Click(ByVal sender As Object, ByVal e As System.EventsArgs) Handles btnKas.Click
            If lstPokarm.SelectedItems.Count = 0  Then            ' Gdy nie jest wybrany produkt 
                 MessageBox.Show("Wybierz produkt z tabeli do skasowania", "Uwaga")
                Exit Sub
            End If
            If lstPokarm.SelectedItems.Count <> 0 Then           ' Gdy wybrano
                 msg = " Czy na pewno chcesz skasować ten produkt z bazy"
                 tyt = " Kasowanie"
                 styl =MsgBoxStyle.DefaultButton2 Or _
                          MsgBox.Style.YesNo
                res = MsgBox(msg, styl, tyt)
                If res = MsgBoxResult.No Then
                         Exit Sub
               Else
                       For Each i As ListViewItem In lstPokarm.SelectedItems        ' Otwarcie pętli
                          lstPokarm.Items.Remove(i)                   ' Skasowanie z tabeli produktu
                    Next
                    Kill("Pokarm")                                            ' Skasowanie calej bazy
                   FileOpen(1, "Pokarm", OpenMode.Append)     ' Zapis zawartości tabeli
                         For i = 0 To lstPokarm.Items.Count() - 1
                             Write(1, lstPokarm.Items(i).SubItems(0).Text)
                              Write(1, lstPokarm.Items(i).SubItems(1).Text)
                          Next
                     FileClose(1)                                         ' Zamknie pliku
                       End If
                      txtNazwao.Text = "": txtEno.Text = ""             ' wygaszenie odczytu poniżej tabeli
        End If
         Odczyt()                                                                               ' Ponowne odczytanie bazy w tabeli
        End Sub

piątek, 25 października 2013

Procedura dotycząca wpisywania wartości liczbowych

Procedura ta ma za zadanie informowanie użytkownika programu o błędnym wpisaniu do okienka textbox zamiast wartości liczbowych,  innych znaków. Tak jak w poprzedniej procedurze, należy kliknąć dwa razy w okienko i po wyświetleniu procedury wpisać kod.
Private Sub txtEnz_TextChanged (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEnz.TextChanged
       If txtEnz.Text  = "" Then Exit Sub
      If Not IsNumeric(txtEnz.Text) Then
           MessageBox.Show("Wpisz tutaj tylko wartość liczbową.","Uwaga")
           txtEnz.Text  = ""
           Exit Sub
    End if 


środa, 23 października 2013

Wykrywanie błędów przy zapisie do bazy

Przy zapisie nowego produktu do bazy, mogą wystąpić błędy, lub powtórny zapis tego samego produktu. Poniższa procedura sprawdza, czy nie ma już zapisanego produktu.

Private Sub txtNazwa_TextChanged(ByVal  sender As System.Object, ByVal e As System.EventArgs)  Handles txtNazwa.TextChanged
    For Each sa As String In lstProdukt.Items        ' Otwarcie pętli poszukującej produktu 
                                                                                  ' w zapisanej tabeli nazw produktu
                                                                                  ' tabela lstProdukt jest ukryta w formularzu
                                                                                  ' poprzez lstProdukt.Visible = False
   If sa = txtNazwa.Text Then                                  
        lstProdukt.Text = sa
       MessageBox.Show("Ten produkt jest już wpisany w bazie! ", "Uwaga")
       txtNazwa.Text  = ""
      Exit Sub
  End If
Next
End Sub

wtorek, 15 października 2013

Komponenty Visual Basic 2005(2)

Poniżej znajduję się procedura umożliwiająca zapis nowego produktu do bazy "Pokarm"  programu "Komponent1".  Ażeby móc dopisać tę procedurę, należy kliknąć dwa razy w okienko "Zapis".
W procedurze należy dopisać kod.

Private Sub Zapis_Click(ByVal  sender As System.Object, ByVal e As System.EventArgs)  Handles btnZapis.Click
    'Zapisanie nowego produktu do bazy
If txtNazwa.Text  = "" Or txtEnz.Text  = "" Then        ' Przypadek braku wpisu danych
     MessageBox.Show("Wpisz dane produktu!", "Uwaga")
     Exit Sub
End If
msg = "Czy na pewno chcesz wpisać ten produkt do bazy?"
tyt = "Zapis!"
styl  = MsgBoxStyle.DefaultButton2 Or _
           MsgBoxStyle.Critical  Or _
           MsgBoxStyle.YesNo
res = MsgBox(msg, styl, tyt)
If res = MsgBoxResult.No Then                    ' Jeśli nie chcesz wpisać.
         txtNazwa.Text  = "": txtEnz.Text = ""            ' usunięcie wpisu
Else                                                                              ' Jeśli chcesz wpisać
        FileOpen(1, "Pokarm", OpenMode.Append)        'Otwarcie bazy
        Write(1, txtNazwa.Text, txtEnz.Text)                    ' Zapis 
        FileClose(1)                                                             ' Zamknięcie pliku
End If                                                                               ' Zamknięcie If  res
txtNazwa.Text  = "" : txtEnz.Text  = ""                       
Odczyt()                                                                          ' Powrót do wyświetlenia 
                                                                                        zawartości tabeli
End Sub

niedziela, 13 października 2013

Komponenty Visual Basic 2005(1)

W moich programach korzystam z formularzy i komponentów. Wykorzystuje po prostu wszelkie okienka. Ponieważ program jest oparty o bazę danych, nazwaną przeze mnie "Pokarm", dlatego do odczytu tej bazy wykorzystuję komponent ListView. Do wybrania ListView sluży okno Toolbox. 
Poniżej przedstawione jest zdjęcie programu "Komponent1", który napisalem dla czytelników tego bloga, w celu praktycznej nauki programowania Visual Basic 2005. Przekonałem się, że najlepiej przyswajałem wiedzę poprzez praktykę.




                                                     Początek pracy nad programem
W pierwszej kolejności należy utworzyć nowy projekt Windows Application i nazwać jego, w moim przypadku nazwałem jego Komponent1. Po wyświetleniu formularza i ewentualnej zmianie wymiaru za pomocą Size, należy umieścić na formularzu okienka:
1.  ListBox - na samej górze , zmienić nazwę na lstProdukt.
2. TextBox - poniżej, nazwana txtNazwa o szerokości (size) 300
3. TextBox  - obok, nazwana txtEnz o szerokości 60
4. ListView - poniżej, zmienić nazwę na lstPokarm, wlaściwość Gridlines na true, FullRowSelect na true, View na detail. Następnie należy utworzyć kolumny,  poprzez pozycję Columns i kliknięcie w Collections.  Wyświetli się wtedy okno "ColumnHeader CollecionEditor". Po lewej stronie kliknąć w Add i w lewym okienku należy wpisać text: Rodzaj pokarmu i Width = 300. Po powtórnym kliknięciu w Add, zostanie utworzona nowa kolumna i nazwij tekst: Energia, TekstAlign na Center i Size na 60. Po kliknięciu zostanie utworzona tabela ListView nazwana tutaj lstPokarm.  Można oczywiście utworzyć dowolną ilość kolumn.
5. TextBox - poniżej, nazwa: txtNazwao
6. TextBox - obok, nazwa: txtEno
7. Button - umieścić obok txtEnz i nazwałem jego btnZapisn i text: Zapis. Następnie kliknąć dwa razy w tego buttona,  w celu utworzenia w programie kodu do obsługi zapisu nowego produktu do bazy.
8. Button - umieścić poniżej. Nazwa- btnKas i tekst: Kasowanie. Kliknąć w niego dwa razy, w celu otwarcia w programie kodu do kasowania zapisanego w bazie produktu.
9. Button. Nazwa: btnEnd i text: Zakończenie programu.
Następnie kliknąć dwa razy w formularz. Zostanie wyświetlony początek programu.
  
Public Class Form1
       Private sit As ListViewItem
       Private k, i As Integer                       ' Deklaracja zmiennych
       Private msg, tyt As String                 ' Deklaracja tekstu
       Private styl As MsgBoxStyle
       Private res As MsgBoxResult
       Private pEn, pEne As Decimal

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        FileOpen(1, "Pokarm", OpenMode.Append)               ' Otwarcie 
        FileClose(1)                                                                     ' Zamkniecie pliku
        Odczyt()                                                                           ' Wywołanie odczytu bazy
End Sub

Private Sub Odczyt()
    Dim Naz(1000), Enp(1000)                                                ' Deklaracja
    lstPokarm.Items.Clear()                                                    ' Kasowanie zawartości tabeli
    FileOpen(1, "Pokarm", OpenMode.Input)                     ' Otwarcie bazy do odczytu
      k = 0                                                                                ' Początek liczenia
      Do While Not EOF(1) = True                                        '  Początek pętli
            Input(1, Naz(k))                                                        ' Wpisane z bazy nazwy produktu
            Input(1, Enp(k))                                                        ' Wpisanie wielkości energii
            sit =  lstPokarm.Items.Add(Naz(k))                        ' Wpisanie nazwy do tabeli
            sit.SubItems.Add(Enp(k))
            lstProdukt.Items.Add(Naz(k))                                 ' Wpisanie nazwy do ListBox
          k = k + 1
      Loop                                                                               ' Zamknięcie pętli
     FileClose(1)                                                                     ' Zamknięcie bazy
          lstProdukt.Visible = False                                          ' Wygaszenie 
    End Sub


         

czwartek, 10 października 2013

Dlaczego Visual Basic 2005?

Żeby wyjaśnić dlaczego zajmuje się Basic, muszę opisać swoje początki. Otóż w latach 80-tych zainteresowałem się techniką komputerową. I zmontowałem komputer pod nazwą "Cobra". Był to komputer 8 - bitowy, opart na mikroprocesorze Z-80A. Płytę bez układów zakupiłem gotową (Coprespu) i do tego prosty system operacyjny. Części zaopatrywałem się na giełdach w Katowicach i w Krakowie. System operacyjny był wpisany w pamięci Eprom. Do tego był  dołączony Basic na taśmie magnetofonowej. Po zmontowaniu i po uruchomieniu ukazał się ekranie napis i zaczął się problem. To była tylko pusta maszyna. I zacząłem się uczyć języka programowania Basic. I też asemblera Z-80A. Po wciągnięciu w te bajki, zacząłem pisać proste programy w Basic-u. Zacząłem też tworzyć proste gry i mój syn miał wtedy pełno kolegów. Oczywiście syn jest teraz informatykiem. I tak została pasja programowania w tym języku. Potem był Qbasic i w końcu kupiłem w sklepie internetowym Visual Studio 2005.  Ponieważ Basic był już dla mnie znany, dlatego programuje w Visual Basic 2005. Też trochę podłapałem C#. Ponieważ póżniej zachorowałem na cukrzycę typu drugiego, dlatego zacząłem pisać programy dla cukrzyków. Zapomniałem dodać, że też po drodze był Visual Basic 6.0. Przepraszam za pisownie, ale byłem zawsze bardzo słaby w języku polskim (styl okropny), mimo, że zawsze dużo czytałem.

środa, 9 października 2013

Przeznaczenie

Ponieważ mam już 74 lat swojego życia, dlatego pragnę podzielić się swoimi doświadczeniami w programowaniu komputerowym w Visual Basic 2005. Nie chcę po prostu zabrać do grobu swojej wiedzy i przekazać ją dla początkujących programistów.  Moje programy można pobrać z mojej strony: Cukrzyca Seniora . Tutaj będę opisywał te programy.