Programowanie Windows (2019) Rozwiązania konkursów są dostępne pod adresem http://fizyka.umk.pl/~jacek/dydaktyka/winprog_v2/zrodla/2019Z/konkursy/ 2019-10-02 ---------- 1. Przygotować aplikację z kontrolką TextBox, która w kontrolce TextBlock prezentuje statystyki dla wprowadzonego tekstu (liczba znaków, liczba liter, liczba wyrazów, liczba zdań, liczby występowania poszczególnych liter itp.). 2. Kod odpowiedzialny za obliczanie statystyki tekstu należy przenieść do osobnej klasy w osobnej bibliotece. W projekcie z zajęć: 3. Użyć mechanizmu ustawień do przechowania i odtworzenia stanu aplikacji (ustawienia działają tak samo, jak w Windows Forms). 4. Zrobić wersję aplikacji dla liczb zespolonych (z System.Numerics.dll). 5. Dodatkowe: Przygotować testy jednostkowe dla klasy RozwiązywaczTestówJednostkowych 2019-10-09 ---------- 6. W projekcie 2019-10-09_ZdarzeniaTrasowane_Zadanie.zip do metody Button_Click dodać kod dodający zagnieżdżone przyciski w przycisku. Kliknięcie nowego przycisku powinno dodać kolejny przycisk zagnieżdżony i zmienić kolor (Background) jego rodziców. 7. W projekcie drag&drop dodać trzecią kontrolkę ListBox i włączyć ją do mechanizmu drag&drop. Konkurs (+1/2 do oceny dla dwóch pierwszych rozwiązań): W aplikacji drag & drop (kod z zajęć grupy z godziny 10:00) po przeniesieniu elementu z pierwszej listy na koniec drugiej, a potem przycisku z drugiej na pierwszą listę zostaje pusty obszar. Zdiagnozować i rozwiązać problem. Laureat: Maciej Świechowicz (291594) "Zagnieżdżenie buttona w tagu ListBoxItem rozwiązuje cały problem. Nie zostają już wolne przestrzenie i obiekt przenosi oraz kopiuje się bez problemu." 2019-10-16 ---------- brak zadań 2019-10-23 ---------- 8. Zaimportować funkcję ShellExecute i z jej pomocą uruchomić domyślny edytor dla przykładowego pliku *.bmp. 9. Wysłać (np. do bieżącego okna) komunikat WM_SYSCOMMAND (0x0112) z parametrem wParam równym SC_SCREENSAVE (0xF140). Konkurs dla grupy z g. 8:00 dotyczący przerobienia kodu Windows Forms na WPF (+1/4 do oceny) Laureaci: Kacper Stodolak Maciej Świechowicz (w rozwiązaniach nadal używane są klasy Windows Forms) 2019-11-06 ---------- W projekcie RownaniaKwadratowe z zajęć: 10. Użyć mechanizmu do zmiany zdarzeń na zdarzenia do tego, aby szukać rozwiązań równania od razu po zmianie współczynników w polach edycyjnych (TextBox) i usunąć przycisk. 11. Obłożyć testami jednostkowymi model, model widoku, polecenia i konwertery. Przykład testu jednostkowego dla modelu widoku: ModelWidoku.ModelWidokuDlaRozwiązywaczaRównańKwadratowych mw = new ModelWidoku.ModelWidokuDlaRozwiązywaczaRównańKwadratowych(); mw.Rozwiąż.Execute(new ModelWidoku.WspółczynnikiRównaniaKwadratowego() { A = 1, B = -2, C = 1 }); Assert.AreEqual(1, mw.X1); Assert.AreEqual(1, mw.X2); 12. Zdefiniować w modelu widoku własność Status i związać z kontrolką TextBlock tbStatus. Kontrolka powinna wyświetlać stan analogiczny, jak w oryginalnej aplikacji opartej na zdarzeniach. 2019-11-13 ---------- 13. W projektach PierwszaAplikacjaMvvm i DrugaAplikacjaMvvm uzupełnić zapisywanie stanu do ustawień aplikacji. 14. W obu projektach obłożyć model widoku testami jednostkowymi. 15. W obu projektach użyć mechanizmu zmiany zdarzeń na polecenia, aby zapisać ustawienia przy zamykaniu okna aplikacji. 16. W projekcie DrugaAplikacjaMvvm dodać TextBlock wyświetlający długość wprowadzonego tekstu. Użyć wiązania z konwerterem. 2019-11-20 ---------- 17. Do projektu zachowania doczepianego przygotowanego w trakcie zajęć dodać drugą własność doczepianą ustalającą kolor, na jakie zmieniane jest tło kontrolki. 18. Zdefiniować zachowanie dla paska postępu, który automatycznie zmienia jego kolor w zależności od wartości własności Value co 20 procent (Black-Naby-Blue-Cyan-White). 2019-11-27 ---------- 19. Odtworzyć projekty 'PierwszaAplikacjaMvvm' i 'DrugaAplikacjaMvvm' (z zachowaniami) w UWP. 20. W aplikacji Zegar (dla WPF) dodać czerwoną wskazówkę Alarmu i opracować sposób ustawiania czasu alarmu. Alarm powinien być przechowywany trwale (model?). W chwili osiągnięcia czasu alarmu cały zegar powinien robić się czerwony (ale z cieniowaniem). 2019-12-04 ---------- 21. W "pierwszej" i "drugiej" aplikacji (w WPF) dodaj efekty cienia do kontrolek. 22. Przygotuj efekt z shaderem pikseli, który odtwarza LinearGradient ze zmianą koloru od zielonego po lewej do niebieskiego po prawej. 23. Do efektu z poprzedniego zadania dodaj własności pozwalające na ustalenie dwóch granicznych kolorów i kierunku zmiany.