• Nie Znaleziono Wyników

Ćwiczenie VB5.4_film_jpg Danych jest 8 zdj

N/A
N/A
Protected

Academic year: 2021

Share "Ćwiczenie VB5.4_film_jpg Danych jest 8 zdj"

Copied!
5
0
0

Pełen tekst

(1)

Ć wiczenie VB5.4_film_jpg

Danych jest 8 zdjęć pokladkowych o nazwach kolejno ren50.jpg, ren51.jpg do ren57.jpg.

Wykonać aplikację wyświetlającą te zdjęcia kolejno, posługując się obiektem Timer, imitując film. Polecenia wybierać za pomocą menu.. Propozycję formularza przedstawia rys. 1.

Rys. 1. Aplikacja w działaniu

Wykonanie

Obiekt menu rozwijalnego pobieramy z paska Toolbox, z grupy Menus & Toolbars, gdzie nazywa się MenuStrip. Jeśli przeniesiemy obiekt MenuStrip na formularz – efekt będzie jak na rys. 2.

Rys. 2. Rozpoczynamy tworzenie menu

(2)

Copyright © 2009, Janusz Bonarowski 2 (1) W oknie formularza, ale poza samym formularzem, dodany zostanie obiekt MenuStrip

o domyślnej nazwie MenuStrip1,

(2) Na formularzu dodany zostanie szablon menu rozwijalnego, do którego możemy wpisywać pozycje menu poziomów głównych i pozycje podmenu.

Dodawanie pozycji menu rozpoczynamy wpisując ich nazwy w okno z napisem Type Here (wpisz tutaj). Po kliknięciu tego okna – rozwinie się ono w dół i w prawo pozwalając wpisywać pozycje menu na tym samym poziomie jak i pozycje podmenu.

Proszę utworzyć menu jak na rys. 3.

Start Stop Ustawienia Koniec

Interval = 2000 Interval = 1000 Interval = 200 Rys. 3. Propozycja menu

Zmieńmy domyślne nazwy pozycji menu w sposób zaproponowany w tabeli 1.

Tabela 1.

Pozycja menu Nazwa

Start mnuStart

Stop mnuStop

Ustawienia mnuUstawienia Interval = 2000 mnuInterval2000 Interval = 1000 mnuInterval1000 Interval = 200 mnuInterval200 Koniec mnuKoniec

Obiekt Timer pobieramy z paska Toolbox, z grupy Components. Obiekt ten nie ma

właściwości „widoczny”, nie pojawi się zatem na formularzu lecz w zasobniku formularza u dołu ekranu.

Obiektem przeznaczonym do wyświetlania rysunków map bitowych, różnych typów, jest obiekt PictureBox, znajdujący się w Toolbox’ie, w grupie Common Controls. Pozostawmy nazwy obiektów takie jakie proponuje Visual Basic.

Tworzenie kodu aplikacji

Instrukcja wyświetlająca rysunek o nazwie np. ren50.jpg, znajdujący się w katalogu:

C:\tkm\gr1.01\VB5.4_film\rysunki\ ren50.jpg ma postać:

PictureBox1.Image = _

System.Drawing.Image.FromFile("C:\tkm\VB5.4_film\rysunki\ren50.jpg")

Planujemy wyświetlanie kolejno rysunków: ren50.jpg, ren51.jpg itf do ren57.jpg.

Podzielmy ścieżkę do pliku następująco:

• cześć początkowa ścieżki: "C:\tkm\VB5.4_film\rysunki\ren5"

• i jej końcow część ".jpg”.

Pomiędzy tymi częściami ma się zmieniać jedna cyfra przyjmując kolejno wartości 0, 1, … 7.

Część początkową ścieżki nazwiemy poczatek, zmieniający się numer rysunku nazwiemy nr i wtedy polecenie wyświetlania kolejnego rysunku w obiekcie PictureBox1 przyjmie postać:

PictureBox1.Image = _

System.Drawing.Image.FromFile(poczatek & "ren5" & _ nr.ToString & ".jpg")

(3)

Przy każdym zdarzeniu Tick Timera zmienna nr będzie zwiękaszła swoją wartość o 1 i kolejne zdjęcie zostanie wyświetlone w PictureBox1.

Procedura obsługi zdarzenia Tick dla Timera będzie miała postać:

Private Sub Timer1_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timer1.Tick Try

nr = nr + 1

If nr = 8 Then nr = 0 PictureBox1.Image = _

System.Drawing.Image.FromFile(poczatek & _ "ren5" & nr.ToString & ".jpg") Catch ex As Exception

Timer1.Stop()

mnuStop.Enabled = False mnuStart.Enabled = True If Err.Number = 53 Then

MsgBox("Na wskazanej ścieżce: " & vbCrLf & _ poczatek & vbCrLf & _

"brak odpowiednich zdjęć.") Else

MsgBox("Błąd nr: " & Err.Number & vbCrLf & _ "Opis: " & Err.Description)

End If End Try End Sub

Ponieważ może się zdarzyć, że aplikacja nie odnajdzie rysunku i może ulec awarii z powodu nie obsłużonego błędu – wykonajmy własną obsługę błędów posługując się obiektem Err, którego właściwość Number zwraca numer błędu, a właściwość Description jego opis, patrz kod powyżej.

Jeśli dojdzie do błędu należy ponownie udostępnić menu Start i „wyszarzyć” menu Stop.

(4)

Copyright © 2009, Janusz Bonarowski 4 Pełny kod aplikacji

Dim nr As Integer = 0

Dim poczatek As String = "C:\tkm\gr1.01\VB5.4_film\rysunki\"

Private Sub mnuStart_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles mnuStart.Click mnuStart.Enabled = False

mnuStop.Enabled = True Timer1.Enabled = True End Sub

Private Sub mnuStop_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles mnuStop.Click mnuStop.Enabled = False

mnuStart.Enabled = True Timer1.Enabled = False End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Timer1.Tick ' Proszę zadeklarować zmienną nr w tym miejscu

' i sprawdzić jak zachowa się aplikacja.

' Które zdjęcia zostaną wyświetlone i dlaczego o takim numerze?

'Dim nr As Integer Try

nr = nr + 1

If nr = 8 Then nr = 0 PictureBox1.Image = _

System.Drawing.Image.FromFile(poczatek & "ren5" & _ nr.ToString & ".jpg") Catch ex As Exception

Timer1.Stop()

mnuStop.Enabled = False mnuStart.Enabled = True If Err.Number = 53 Then

MsgBox("Na wskazanej ścieżce: " & vbCrLf & poczatek & _ vbCrLf & "brak odpowiednich zdjęć.")

Else

MsgBox("Błąd nr: " & Err.Number & vbCrLf & _ "Opis: " & Err.Description)

End If End Try End Sub

Private Sub mnuInterval1000_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles mnuInterval1000.Click Timer1.Interval = 1000

End Sub

Private Sub mnuInterval200_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles mnuInterval200.Click Timer1.Interval = 200

End Sub

Private Sub mnuInterval2000_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles mnuInterval2000.Click Timer1.Interval = 2000

End Sub

Private Sub mnuKoniec_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles mnuKoniec.Click Dim Odp As Integer

Odp = MsgBox("Czy rzeczywiście zamknmąć aplikację", _ MsgBoxStyle.Question + MsgBoxStyle.YesNo, _ "Zamknięcie aplikacji")

If Odp = vbYes Then Application.Exit() End If

End Sub

(5)

Proszę zwrócić uwagę na dwie pierwsze linijki kodu. Znajdują się one poza wszystkimi procedurami i deklarują dwie zmienne: nr i poczatek.

Fakt deklarowania tych zmiennych w tym miejscu związany jest z zagadnieniem tzw.

„okresu życia zmiennej” czyli jej dostępności przez inne procedury formularza czy szerzej aplikacji i stanu wartość w niej przechowywanej.

Mówimy, że zmienna, np. Odp w procedurze zamykającej aplikację, „żyje” tak długo jak długo trwa (działa, wykonuje się) procedura, w której została zadeklarowana. Oznacza to, że gdy rozpocznie działanie procedura Private Sub mnuKoniec_Click – zmienna Odp w tej procedurze ma określoną wartość i można tę wartość zmieniać lub testować, np.

instrukcją warunkową. Lecz gdy procedura ta zostanie ukończona (osiągnie instrukcję End Sub) - zmienna Odp przestaje istnieć i nie znana będzie zatem jej wartość, którą przechowywała jeszcze przed chwilą.

Gdyby taka sytuacja zaistniała dla zmiennej nr (tzn. gdyby zmienna nr była zadeklarowana w procedurze Private Sub Timer1_Tick (tak jak to wpisano w zakomentowanym kodzie) to po wykonaniu instrukcji

nr = nr + 1

zmienna nr (z wartości 0, jaką mają w VB wszystkie zmienne po zadeklarowaniu)

osiągnęłaby wartość 1, zdjęcie ren51.jpg umieszczone zostałoby w PictureBox1 i procedura zakończyłaby pracę. Przy następnym jej wywołaniu ponownie zmienna z zera zmieniłaby wartość na 1 i ponownie wyświetlone zostałoby zdjęcie ren51.jpg.

Aby przechować wartość w zmiennej, a także by udostępnić tę wartość innym procedurom, deklarujemy zmienne w pierwszych instrukcjach kodu poza wszystkimi procedurami.

Cytaty

Powiązane dokumenty

- małe ciężarki albo inne małe cosie, których masę znacie albo możecie zmierzyć (może mama ma wagę kuchenną i pozwoli zważyć te cosie?).

Samodzielnie przeczytaj tekst ‘Ludzie jak ptaki” s.25 i odpowiedz ustnie na pytania znajdujące się pod tekstem. A teraz czas na pracę w ćwiczeniach

Zmodyfikuj ten przykład i podaj funkcję, której zbiorem punktów nieciągłości jest Q..

Na ten tydzień proponujemy ćwiczenia rozwijające twórcze myślenie. Zachęcamy do wykonania zadań i uruchomienia wyobraźni:) Jeśli ktoś będzie chciał pokazać co zrobił, to

Rozwiązanie 2 (geometryczne): Kąty ^ABC i ^CDA są oparte na tym samym łuku AC, a więc mają taką samą miarę, Rys.. Zauważmy, że powyższe rozumowanie daje jeszcze dalej

Zadanie 13. Oba gazy przereagowały całkowicie. Napisz równanie reakcji i oblicz liczbę cząsteczek otrzymanego produktu z dokładnością do drugiego miejsca po

W dalszych etapach badań związanych z tym typem sieci neuronowych, jest stworzenie systemu wieloagentowych sieci neuronowych typu Fuzzy-Flip-Flops, pomiędzy którymi następowała

mieczem’, to jedna z trzech powieści historycznych składająca się na trylogię Henryka Sienkiewicza, w której , co prawda, autor mija się miejscami z historyczną prawdą,