Instrukcja laboratoryjna nr.4

Podobne dokumenty
Instrukcja laboratoryjna cz.3

Programowanie obiektowe

Instrukcja laboratoryjna cz.6

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Platforma.NET laboratorium 1. Visual Basic.NET podstawowe elementy języka. Wykonanie warunkowe If End If

Wprowadzenie do projektu QualitySpy

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Instrukcja laboratoryjna

Programowanie obiektowe

Zadanie. Menu Plik niech posiada dwie pozycje: Tekstowy i Excel, a każda z nich niech posiada dwie pozycje Otwórz i Zapisz, patrz rys. 2.

Instrukcja laboratoryjna nr.2

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Programowanie Obiektowe GUI

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Programowanie w środowisku graficznym GUI

using System;... using System.Threading;

msgbox("akcja: Początek, argument: " + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox("akcja: Koniec"); return DateTime.Now.

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Programowanie zaawansowane

Ćwiczenie laboratoryjne. Oprogramowanie i badanie stosu lub kolejki w środowisku Visual Basic 2005

Użycie Visual Basic for Applications ("VBA")

Lokalizacja Oprogramowania

Klasa bazowa i klasy potomne - doskonalenie umiejtnoci projektowania i wykorzystania klas (45 min)

Aplikacje w środowisku VBA. Visual Basic for Aplications

Ten odcinek Akademii PC Kuriera poświęcony zostanie tworzeniu i wykorzystaniu funkcji i procedur w języku Visual Basic.NET.

Aplikacje geodezyjne

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Laboratorium 1 - Programowanie proceduralne i obiektowe

Programowanie obiektowe. Obiekt Klasa Składnia klasy: Interfejsy Składnia interfejsu: Metody Składnia instrukcji Sub: Składnia instrukcji function:

Aplikacje WWW - laboratorium

Działki Przygotowanie organizacyjne

Leszek Stasiak Zastosowanie technologii LINQ w

Instrukcja laboratoryjna cz.3

Programownie w technologii.net wykład 6 Element Binding i Data Binding

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Instrukcja projektowa cz. 2

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Zaawansowane aplikacje internetowe

Laboratorium 7 Blog: dodawanie i edycja wpisów

Programowanie obiektowe

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Platformy Programowania

Aplikacje w środowisku Java

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Zaawansowane aplikacje internetowe - laboratorium

Instrukcja laboratoryjna nr.3

Programowanie obiektowe

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Wykład 10 Kolekcje, pliki tekstowe, c.d. Przykład: Notatnik

Programowanie w Javie

Język Java część 2 (przykładowa aplikacja)

Laboratorium programowania urządzeń mobilnych

Visual Basic for Applications. Wstęp

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Visual Basic dla AutoCAD

Programowanie telefonów z Windows Phone 7, cz. 2

Class1.vb. _Dlugosc_stopnia = value End Set End Property Public Property Faza As Single Get Return _Faza End Get

Zadanie 5. Automatyzacja tworzenia kont użytkowników

Przygotowanie własnej procedury... 3 Instrukcja msgbox wyświetlanie informacji w oknie... 6 Sposoby uruchamiania makra... 8

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

SERWER AKTUALIZACJI UpServ

Zdarzenie Zachodzi gdy Kolejność zdarzeń Kolejność Zdarzenie Opis uwaga: CausesValidation True.

SERWER AKTUALIZACJI UpServ

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

PHP 5 język obiektowy

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

01 grid tablica grid. Copyright 2017, mgr inż. Janusz Bonarowski 1

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Programowanie obiektowe w VB cz 2

SERWER AKTUALIZACJI UpServ

Aplikacje w środowisku Java

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Palindromy. Przykładowe rozwiązanie

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

IBM SPSS Statistics Wersja 23. Konfigurowanie ułatwień dostępu

Tworzenie i wykorzystanie usług sieciowych

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Programowanie obiektowe

WPROWADZENIE DO INFORMATYKI

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

Wykład 7: Lazarus GUI

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

Zastanawiałeś się może, dlaczego Twój współpracownik,

Transkrypt:

Języki programowania na platformie.net cz.2 2016/17 Instrukcja laboratoryjna nr.4 Język Visual Basic for.net Prowadzący: Tomasz Goluch Wersja: 3.1

I. Współpraca Visual Basic z C# Cel: Wykorzystanie w kodzie Visual Basic biblioteki napisanej w C#. Uruchom Visual Studio 201X i utwórz nowy Class Library projekt (Visual C#). Stwórz dowolną klasę udostępniającą metodę getwords(). Metoda powinna zwracać przy pomocy return yield kolekcję stringów. Zwracane słowa pobierane są z pliku polish.txt reprezentującego słownik wyrazów polskich. Dodaj do klasy właściwość WordsCount reprezentującą liczbę słów z wczytywanego słownika. Liczba słów jest adekwatna liczbie linii wczytywanego pliku: File.ReadLines(path).Count(); W razie problemów z ustaleniem względnej ścieżki dostępu do pliku polish.txt, należy dodać plik do projektu i zaznaczyć jego właściwość: Copy to Output Directory na copy always. Podczas kompilacji będzie on kopiowany do folderu bin\debug lub bin\release. Dodaj do solution nowy WPF Application projekt (Visual Basic). Stwórz prosty GUI składający się z dwóch przycisków, pola tekstowego i etykiety. Dodaj obsługę zdarzenia Click pierwszego przycisku wyświetlającą w polu tekstowym kolekcję słów zwracanych poprzez metodę getwords() biblioteki. Jeżeli program działa zbyt długo (efekt zamrożenia GUI) można zmniejszyć liczbę wyrazów w słowniku odpowiednio edytując plik polish.txt. 1

Dla osób biegłych w składni języka C# pomocny może się okazać darmowy konwerter online firmy Telerik. II. Metody rozszerzeń w Visual Basic Cel: Zapoznanie z implementacją nowych metod dla istniejących typów. Do projektu VPF VB dodaj moduł StringExtensions rozszerzający typ String o metodę sprawdzającą czy dane słowo jest palindromem. Module StringExtensions <Extension()> Public Function IsPalindrome(ByVal input As String) As Boolean IsPalindrome = End Function End Module Zaktualizuj kod obsługi kliknięcia pierwszego przycisku tak aby w oknie tekstowym wyświetlane były jedynie palindromy. 2

III. Asynchronizm w Visual Basic Cel: Zapoznanie z funkcjonalnością słów kluczowych Async i Await. Jako obsługę zdarzenia Click drugiego przycisku dodaj identyczną funkcjonalność (wyświetlanie palindromów) jak przycisku pierwszego ale wykonywaną w trybie asynchronicznym. Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs) Handles Button2.Click Dim wordtab As List(Of String) Dim res As Task(Of List(Of String)) = filloutputtextboxasync() TextBox1.Text = "czekaj" wordtab = Await res End Sub Private Async Function filloutputtextboxasync() As Task(Of List(Of String)) Await Task.Run(Sub 1 () End Sub) End Function Aby zaobserwować różnice zachowania się programu w trybie asynchronicznym można spowolnić dzianie biblioteki przy pomocy metody Sleep(). Thread.Sleep(1); IV. Zdarzenia w Visual Basic Cel: Zapoznanie z funkcjonalnością słów kluczowych WithEvent i Handles. Dodaj do obiektu słownika biblioteki C# kod generujący zdarzenie wywoływane po wczytaniu kolejnych stu słów z pliku polish.txt. W tym celu należy zadeklarować zdarzenie: public event EventHandler NextHundredWordsLoaded; które wywołujemy po każdych 100 wczytanych wyrazach: NextHundredWordsLoaded.Invoke(this, EventArgs.Empty); Przy pomocy słowa kluczowego WithEvents oznacz, że obiekt słownika 2 może generować zdarzenia. Dim WithEvents dict As New PlWrdDict 1 Jeśli chcemy zwrócić wynik z procedury anonimowej należy zamiast jej wykorzystać funkcję Function. 2 W poniższym przykładzie jest to obiekt dict klasy PlWrdDict generujący zdarzenie NextHundredWords. 3

W oknie edytora VS wybierz obsługę tego zdarzenia. Spowoduje to wygenerowanie pustej procedury obsługi zdarzenia 3 Private Sub dict_nexthundredwords(sender As Object, e As EventArgs) Handles dict.nexthundredwords licz += 100 Dispatcher.Invoke(New Action(Sub() Label1.Content = )) End Sub Uaktualniaj zawartości etykiety (właściwość Content) zwiększając wyświetlana liczbę przetworzonych wyrazów ze słownika o 100. W przypadku braku dostępu wątku obsługi zdarzenia do GUI przydatnym może okazać się skorzystanie z metody Invoke klasy Dispatcher. Dispatcher.Invoke(New Action(Sub() Label1.Content = licz.tostring())) Przykład działającego programu: V. Binding danych w Visual Basic Cel: Zapoznanie z bindingiem danych pomiędzy właściwością i kontrolką ProgressBar. W projekcie Visual Basic dodaj dwie właściwości. Pierwsza zwraca liczbę wszystkich wyczytanych słów. Pamiętaj, że ta wartość jest już udostępniana przez właściwość WordsCount klasy C# z pierwszego punktu. 3 Podobnie jak ma to miejsce w przypadku obsługi zdarzenia kliknięcia przycisku po dwukrotnym kliknięciu przycisku w GUI. 4

Druga ma przechowywać liczbę czytanych dotychczas wyrazów, będzie aktualizowana poprzez zdarzenie oprogramowane w pkt. IV zdarzenie. Dodaj do GUI kontrolkę ProgressBar. W kodzie XAML GUI ustal binding danych pomiędzy atrybutami Value i Maximum dodanej kontrolki a dodanymi właściwościami. Przykład: <ProgressBar Value="{Binding LoadedWordsCount}" Maximum="{Binding TotalWordsCount}"/> Musimy jeszcze oprogramować odpowiednie zdarzenie informujące o tym, że wartość naszej właściwości uległa zmianie. Służy do tego interfejs INotifyPropertyChanged, który powinna implementować nasza klasa MainWindow. Wymaga on dodania do klasy zdarzenia: Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Oraz wywołania zdarzenia po każdej zmianie wartości naszej właściwiści: RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("<nazwa property>")) Przykład działającego programu: W przypadku problemów z kontekstem danych można ustawić go bezpośrednio w XAML u: <Window x:class="mainwindow" x:name="root"> <ProgressBar Value="{Binding Proggress, Value="{Binding LoadedWordsCount, ElementName=Root }" Maximum="{Binding TotalWordsCount, ElementName=Root }"/> 5