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
czwartek, 31 października 2013
ś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ń.
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
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
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
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
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.
Subskrybuj:
Posty (Atom)