Metodyka programowania Edytor tekstu. Specyfikacja
Edytor tekstu wersja podstawowa Elementy obowiązkowe (2,0) Edytor na bazie komponentu TextBox (RichTextBox), wyposażony w pasek menu (MenuStrip); Powinien obsługiwać polecenia menu: - Plik Nowy, Otwórz, Zapisz jako, Zamknij - Edycja Cofnij, Kopiuj, Wytnij, Wklej, Zaznacz wszystko Powinien używać okien dialogowych w poleceniach Otwórz (OpenFileDialog) oraz Zapisz jako (SaveFileDialog)
Edytor tekstu wersja podstawowa Polecenia menu Plik: Nowy wyczyszczenie zawartości Memo Otwórz wyświetlenie okna dialogowego OpenFileDialog; wczytanie pliku jeżeli kliknięto Otwórz Zapisz jako wyświetlenie okna dialogowego SaveFileDialog; zapisanie pliku jeżeli kliknięto Zapisz Zamknij Zamknięcie programu
Edytor tekstu wersja podstawowa Polecenia menu Edycja Cofnij, Kopiuj, Wytnij, Wklej, Zaznacz wszystko Wykonanie poleceń menu plik: Nowy, Otwórz, Zapisz jako - powinno dodatkowo czyścić pamięć operacji Cofnij
Edytor tekstu udoskonalenia Edytor na bazie TextBox (0,5) Pasek narzędzi (podstawowy) (1,0) Czcionka i jej atrybuty oraz atrybuty paragrafu (1,0) Zapisywanie i odczytywanie konfiguracji - rozmiar i położenie okna, - opcje typu zawijanie wierszy, - atrybuty czcionki i paragrafu
Edytor tekstu udoskonalenia Edytor na bazie RichTextBox (1,5) Czcionka i jej atrybuty oraz atrybuty akapitu, ze sprzężeniem zwrotnym (1,0) Zapisywanie i odczytywanie konfiguracji - rozmiar i położenie okna, - opcje w rodzaju zawijanie wierszy (1,0) Pasek narzędzi zaawansowany (ze sprzężeniem zwrotnym) (0,5) Sprzężenie zwrotne w menu Edycja (Kopiuj, Wytnij, Wklej) (0,5) Menu kontekstowe
Edytor tekstu udoskonalenia Niezależnie od wyboru TextBox / RichTextBox (0,5) Ukrywanie paska narzędzi (0,5) Zawijanie wierszy (0,5) Czcionka i kolor tekstu Blokada zamknięcia programu - (1,5) Inteligentna (Yes/No/Cancel) - (1,0) Pół-inteligentna (Yes/No) - (0,5) Ćwierć-inteligentna (Ok)
Pasek narzędzi - podstawowy Pasek narzędzi, udostępniający podstawowe polecenia menu; Stan przycisków nie zależy od aktualnej sytuacji. Plik Nowy, Otwórz, Zapisz jako Edycja Cofnij, Wytnij, Kopiuj, Wklej UWAGI - Nie należy tworzyć nowych funkcji obsługi zdarzeń, a jedynie wskazać istniejącą funkcję (stworzoną wcześniej dla menu) w oknie Properties - Realizując inne rozszerzenia edytora należy uzupełniać pasek narzędzi
Pasek narzędzi zaawansowany Pasek narzędzi, udostępniający podstawowe polecenia menu; Stan przycisków zależy od sytuacji (np. dostępność poleceń Wytnij i Kopiuj zależy od tego, czy zaznaczono tekst). Plik Nowy, Otwórz, Zapisz jako Edycja Cofnij, Wytnij, Kopiuj, Wklej UWAGI - Nie należy tworzyć nowych funkcji obsługi zdarzeń, a jedynie wskazać istniejącą funkcję (stworzoną wcześniej dla menu) w oknie Properties - Realizując inne rozszerzenia edytora należy uzupełniać pasek narzędzi
Czcionka Dodatkowe grupa poleceń w menu, Format Czcionka Kolor tekstu - Wyświetlenie okna dialogowego FontDialog albo ColorDialog oraz zastosowanie ustawień czcionki do całego dokumentu (TextBox) albo obszaru zaznaczenia (RichTextBox), jeżeli użytkownik potwierdzi zmiany
Atrybuty czcionki (TextBox) Pasek narzędzi udostępnia podstawowe atrybuty czcionki (pogrubienie, kursywa, kolor) oraz wyrównanie tekstu Przyciski B (pogrubienie) oraz I (kursywa) powinny działać jak pola wyboru (CheckBox) Przyciski wyrównania tekstu powinny działać jak przyciski radiowe (RadioButton) Kolor jest wybierany przez okno dialogowe ColorDialog
Atrybuty czcionki (RichTextBox) Pasek narzędzi udostępnia podstawowe atrybuty czcionki (pogrubienie, kursywa, kolor) oraz paragrafu wyrównanie tekstu oraz wypunktowanie Działanie przycisków jak dla Memo Dodatkowo zrealizowane jest sprzężenie zwrotne: stan przycisków czcionki i paragrafu zmienia się wraz ze zmianą położenia kursora
Zawijanie wierszy Dodatkowe polecenie w menu: Widok / Zawijanie wierszy Element menu Zawijanie wierszy powinien działać jak przełącznik: - w stanie włączonym widoczny jest symbol zaznaczenia w menu, włączone jest zawijanie wierszy oraz włączony pasek przewijania pionowego; - w stanie wyłączonym brak symbolu zaznaczenia, wyłączone zawijanie, włączone paski przewijania pionowy i poziomy Jeżeli edytor ma pasek narzędzi, polecenie powinno być również w nim dostępne
Ukrywanie paska narzędzi Dodatkowe polecenie w menu: Widok / Pasek narzędzi Element menu Pasek narzędzi powinien działać jak przełącznik: - w stanie włączonym widoczny jest symbol zaznaczenia w menu oraz widoczny jest pasek narzędzi; - w stanie wyłączonym brak symbolu zaznaczenia, pasek narzędzi niewidoczny Pasek narzędzi wyposażony jest w menu kontekstowe (ContextMenuStrip), realizujące jego ukrywanie
Blokada zamknięcia programu Zamknięcie programu możliwe przyczyny Polecenie Plik/Zakończ Kliknięcie x na pasku tytułu Skrót klawiaturowy [Alt]+[F4] Zamknięcie systemu Niezależnie od przyczyny, system wysyła do aplikacji komunikat, nakazujący zakończenie działania. Objawia się to wystąpieniem dwóch zdarzeń.
Blokada zamknięcia programu Zamknięcie programu - skutek Zdarzenie OnFormClosing (pytanie czy aplikacja może zostać zamknięta) Zdarzenie OnFormClosed (informacja że aplikacja jest zamykana) Jeżeli aplikacja odmawia zamknięcia, to zdarzenie OnFormClosed nie wystąpi, FormClosing(object sender, FormClosingEventArgs e) { if ( ) { e.cancel = true; } }
Blokada zamknięcia programu Zamknięcie programu - skutek Zdarzenie OnFormClosing (pytanie czy aplikacja może zostać zamknięta) Zdarzenie OnFormClosed (informacja że aplikacja jest zamykana) - Jeżeli aplikacja odmawia zamknięcia (w tym celu należy ustawić właściwość Cancel argumentu zdarzenia na true, jak poniżej), to zdarzenie OnFormClosed nie wystąpi, FormClosing(object sender, FormClosingEventArgs e) { if ( ) { e.cancel = true; } }
Blokada zamknięcia programu Od czego zależy decyzja programu edytora: Czy dokument został zmodyfikowany od czasu utworzenia/otwarcia/zapisania właściwość Modified komponentu TextBox (RichTextBox) Czy dokument posiada nazwę dodatkowa zmienna, ustawiana po wykonaniu poleceń nowy/otwórz/zapisz jako Decyzje użytkownika okno dialogowe MessageBox (co robić dajej?) okno dialogowe SaveFileDialog (czy i gdzie zapisać plik?)
Blokada zamknięcia programu Trzy stopnie trudności: (1,5) profesjonalnie (jw.) (1,0) bez zapamiętywania nazwy pliku (0,5) bez zapisywania UWAGA Oprócz blokady zamknięcia programu, podobne działania należy realizować przy obsłudze poleceń Nowy i Otwórz
Blokada zamknięcia programu N Modified? T Zamknij N MsgBox? T Zamknij A Anuluj N Nazwa? T N SaveDlg? T SaveToFile Anuluj SaveToFile Zamknij Zamknij
Blokada zamknięcia programu N Modified? T Zamknij N MsgBox? T Zamknij N T SaveDlg? Anuluj SaveToFile Zamknij
Blokada zamknięcia programu N Zamknij Modified? T MsgBox OK Anuluj
Klasa MessageBox Wyświetlanie: DialogResult MessageBox.Show( String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defbutton) Przykład: DialogResult result; result = MessageBox.Show( "Czy chcesz zapisać zmiany", "Edytor", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
Klasa MessageBox MessageBoxButtons Zestaw przycisków, do wyboru: - Ok, YesNo, YesNoCancel, OkCancel MessageBoxIcon Rodzaj ikony wyświetlanej obok komunikatu, do wyboru: - Exclamation, Warning ostrzeżenie ("!"), - Stop, Error błąd ("x"), - Asterisk, Information informacja ("i") MessageBoxDefaultButton Przycisk domyslny, do wyboru: - Button1, Button2, Button3