12 października 2013 -------------------- Przygotować aplikację Windows Forms, w której na formie znajduje się pole edycyjne (TextBox), etykieta (Label) oraz przycisk (Button). Po kliknięciu przycisku należy obliczyć silnię liczby wpisanej w polu tekstowym. Do "parsowania" ciągu znaków do liczby należy użyć metody byte byte.Parse(String s); Metoda ta zgłasza wyjątek, jeżeli łańcuch nie zawiera poprawnej liczby typu byte. Należy obsłużyć ten wyjątek konstrukcją try..catch wyświetlając komunikat w razie błędu (MessageBox.Show). Wynik obliczeń wyświetlić na etykiecie (Label). 21 października 2013 -------------------- 1. W aplikacji Notatnik.NET przygotować pozycję menu, która zmienia kolor tła (korzystając z komponentu ColorDialog) oraz czcionkę używaną do wyświetlania (FontDialog). 2. W aplikacji Notatnik.NET Do menu dodać ikony. Można użyć obrazów dołączonych do Visual Studio w katalogu: C:\Program Files\Microsoft Visual Studio 11.0\Common7\VS2012ImageLibrary\1033 lub dostępnych pod adresami: http://www.fizyka.umk.pl/~jacek/dydaktyka/spdypl_net/winforms/zrodla/Notatnik_Ikony.zip http://www.famfamfam.com/lab/icons/silk/ 2. W aplikacji Notatnik.NET przygotować pasek narzędzi zawierający pozycje z menu Plik. 26 października 2013 -------------------- 1. W projekcie Notatnik.NET, zmodyfikować metodę printDocument1_PrintPage w taki sposób, żeby zmniejszyć o 4 liczbę linii drukowanych na stronie, a dostawić nagłówek i stopkę. Nagłówek powinien zawierać nazwę pliku, a stopka - numer strony. 2. Przygotować dwa rozszerzenia dla klasy TextBox (kontrolka Windows Forms), które pozwolą na wczytywanie i zapisywanie jej zawartości z pliku tekstowego (LoadFromFile i SaveToFile). 3. Do projektu RysowanieNaFormie, w którym rysowany jest gradient kolorów (plik 2013-10-26_c_RysowanieNaFormie_Gradient.zip), dodać dwa okna dialogowe pozwalające na wybór kolorów widocznych na formie. 4. Przygotuj klasę, która na podobieństwo przygotowywanej przez VS klasy Settings, umożliwi zapisywanie i odczytywanie do rejestrów położenia i wielkości okna (własności Left, Top, Width, Height) oraz jego etykiety (własność Text). Klasa powinna odczytywać ustawienia w konstruktorze, a zapisywać po wywołaniu metody Save. 16 listopada 2013 ----------------- 1. Do aplikacji Kolory (projekt z zajęć dostępny na stronie) dodać zapisywanie składowych RGB koloru (ustalonego za pomocą suwaków). W osobnych projektach wykorzystać do tego: a) ustawienia aplikacji (Settings), b) rejestr systemu Windows, c) plik XML. 2. Pobrać ze strony NBP aktualny kurs walut w pliku XML (zob. http://www.nbp.pl/home.aspx?f=/kursy/instrukcja_pobierania_kursow_walut.html). Następnie przygotować aplikację Windows Forms o nazwie Kantor, która zawiera: a) klasę KursyWalutNBP odczytującą z pobranego pliku XML oficjalne kursy walut NBP i udostępniającą własności pozwlające odczytać kursy dla dolara amerykańskiego (USD) i euro, b) klasę KursyWalutKantoru, która pozwlala na przeliczanie zł <-> euro i zł <->USD na podstawie odczytanych w poprzedniej klasie kursach NBP przy ustalonych "widełkach" (procent "widełek" jest argumentem konstruktora klasy KursyWalutKantoru), c) podstawowe testy jednostkowe dla obu klas, d) interfejs Windows Forms, który pozwala na obsługę kupna i sprzedaży USD i euro przez kantor. 3. Projekt AutoSumowanie/AsystentSklepowy: a) Przygotować klasę o nazwie AutoSumowanie zawierającą pole suma typu decimal i udostępniającą je własność tylko do odczytu. Klasa powinna zawierać także metodę void Dodaj(decimal kwota) zwiększającą sumę o podaną w argumencie kwotę. b) Klasę AutoSumowanie umieścić w bibliotece DLL lub PCL. c) Przygotować testy jednostkowe sprawdzające własność Suma oraz metodę Dodaj tej klasy. d) Przygotowa aplikację Windows Forms o nazwie AsystentSklepowy z jednym oknem zawierającym kontrolki Label, TextBox i Button. Po kliknięciu przycisku kwota wpisana do pola tekstowego powinna być dodawana do sumy wyświetlanej w kontrolce Label (to zadanie powinna realizować klasa Autosumowanie). 23 listopada 2013 ----------------- Do aplikacji Windows Forms dodać bazę danych Microsoft Access o nazwie BazaDanych.accdb z jedną tabelą Osoby. Aby dodać bazę danych należy użyć polecenia Add Existing Item... z menu Project, zmienić w oknie dialogowym filtr na Data Files i wskazać plik. Plik tej bazy dostępny jest pod adresem: http://www.fizyka.umk.pl/~jacek/dydaktyka/spdypl_net/winforms/zasoby/ Do projektu dodać źródło danych DataSet (menu Project, polecenie Add New Data Source) udostępniające wszystkie pola tabeli Osoby. Następnie za pomocą podokna Data Sources (menu View, Other Windows), przeciągając myszką pola tabeli zaprojektować formularz prezentujący dane z tej tabeli (na wzór aplikacji z zajęć). Na formie umieścić przycisk i w jego metodzie zdarzeniowej za pomocą zapytań LINQ to DataSet pobrać z tabeli Osoba wszystkie osoby pełnoletnie posortowane według wieku. 30 listopada 2013 ----------------- 1. Do projektu aplikacji pokazującej zawartość pliku XML w kontrolce TreeView dodaj menu z pozycjami pozwalającymi na wskazanie pliku do wczytania (przez OpenFileDialog) oraz adresu, z którego plik powinien być pobrany. To drugie powinno korzystać z drugiej formy, która uruchamiana jest modalnie i zawiera pole tekstowe umożliwiające wpisanie adresu. 2. [Master-details] Do projektu zawierającego bazę danych z dwoma tabelami Osoby i Rozmowy (plik 2013-11-30_e_AplikacjaZBazaDanych_LinqToSql_DwieTabele_ProcedurySkladowane_Widok.zip) dodać źródło danych reprezentujące tylko tabelę Osoby. W oknie Data Sources oprócz pól tej tabeli widoczny będzie też Rozmowies. Korzystając z możliwości projektowania interfjesu myszką stwórz dwie kontrolki DataGridView dla Osoby (master) i Osoby.Rozmowies (details). Zmiana osoby w pierwszej tabeli spowoduje zmianę zestawu rozmów z drugiej tabeli. Rozwiązanie w pliku: 2013-11-30_f_AplikacjaZBazaDanych_LinqToSql_DwieTabele_Master-Details.zip 2. Stworzyć projekt z dowolną bazą danych SQL Server zawierającą jedną tabelę. Korzystając z odpowiednich narzędzi utworzyć klasy LINQ to SQL. Wykorzystać te klasy (bez użycia źródeł danych - data sources) do prezentacji zawartości tabeli w kontrolce DataGridView i innych kontrolach (TextBox, NumericUpDown i ComboBox). 14 grudnia 2013 --------------- 1. Przygotuj projekt biblioteki DLL z zaprojektowaną przez siebie kontrolką (projekt typu Windows Forms Control Library) wyświetlającą bieżącą datę i godzinę, aktualizowaną domyślnie co pół sekundy. Do wyświetlania daty użyj kontrolki Label, a do cyklicznego odświeżania komponentu Timer. Przygotuj własność typu int pozwalającą na określenie co ile czas ma być zmieniany oraz zdarzenie informujące o pełnych godzinach. W aplikacji testującej wykorzystaj to zdarzenie do odtworzenia jakiegoś dźwięku. 2. Zmodyfikuj poprzednią kontrolkę w taki sposób, żeby oprócz kontrolki Label wyświetlającej tym razem tylko datę (bez godziny), na kontrolce widoczny był zegar analogowy z dwoma lub trzema wskazówkami. Można go łatwo przygotować korzystając ze zdarzenia Paint i dostępnego w nim obiektu e.Graphics (analogicznie jak rysowanie na obszarze klienta formy). 3. W kontrolce FileListBox zdefiniować zdarzenie informujące o zmianie przez użytkownika katalogu, którego zawartość ta kontrolka prezentuje. Ale tylko zmianę za pomocą dwukrotnego kliknięcia myszą. 11 stycznia 2014 ---------------- 1. W projekcie korzystającym z Entity Framework wywołać metodę klasy BazaDanychEntities udostępniającą procedurę składową ListaOsobPelnoletnich. Wyniki pokazać za pomocą MessageBox. 2. Za pomocą MessageBox pokazać listę osób pełnoletnich udostępnianą przez widok OsobyPelnoletnie dostępny w klasie BazaDanychEntities. 3. W klasie BazaDanychEntities oprócz metody SaveChanges jest również metoda asynchroniczna SaveChangesAsync. Użyj jej w projekcie z zajęć, korzystając z operatora await. Jak zabezpieczyć się przed próbą zamknięcia aplikacji w trakcie zapisywania danych do bazy.