Zasady Programowania (Projektowanie) – C++
Transkrypt
Zasady Programowania (Projektowanie) – C++
Zasady Programowania (Projektowanie) – C++ - część 1 1/6 Programowanie Wizualno Obiektowe Zasady Programowania (Projektowanie) C++ – część 4 Temat: Programowanie Wizualno Obiektowe. Komponenty podstawowe – część 2, projektowanie menu, okna dialogowe wyboru pliku do odczytu/zapisu, okienko edycyjne wielolinijkowe Memo. Zadanie: Należy napisać aplikację, która będzie umożliwiała edycje plików tekstowych. Wczytanie plików i zapis należy wykonać wykorzystując menu główne, menu przycisków szybkiego dostępu, standardowe okna dialogowe do otwierania i zapisywania plików, oraz komponent TMemo. Informację o pliku należy wyświetlać na etykiecie (etykietach). Wyjście z programu zrealizować poprzez okno dialogowe. Dodatkowo: • dodac skróty klawiszowe do każdej z opcji menu • dodac filtry do okien dialogowych do otwierania i zapisywnia plików • czyścić pole TMemo przy pomocy PopUpMenu • dodać podpowiedź do każdego z komponentów wizualnych 1. Otwieramy nową aplikację File>NewApplication 2. Zapisujemy projekt przy pomocy File>Save All w katalogu gdzie będzie kompilowany nasz projekt 3. Tworzymy interfejs Rysunek 1. Interfejs programu Przygotował: mgr inż. Jakub Filip Możaryn 2007-03-05 e-mail: [email protected], WWW: http://grafit.mchtr.pw.edu.pl/~mozaryn Zasady Programowania (Projektowanie) – C++ - część 1 2/6 Programowanie Wizualno Obiektowe Dodajemy odpowiednie komponenty w kolejności 1 pole edycyjne Memo (paleta Standard) o nazwie (własność Name): • memTresc 4 etykiety Label (paleta Standard), z których dwie będą miały nazwy • lblNazwaOtworzPlik • lblNazwaZamknijPlik 1 komponent MainMenu (paleta Standard). 1 komponent OpenDialog (paleta Dialogs) 1 komponent SaveDialog (paleta Dialogs) 4. Ustawienie własności formularza W celu wyświetlania nazwy programu należy wpisać ją w pole Caption Formularza. Przykładowo może byc to nazwa 'Program Edytor v.1'. 5. Projektowanie menu głównego. Po kliknięciu na komponent MainMenu otworzy się tzw. Menu Designer służący do zaprojektowania głównego menu tekstowego. Z każdą opcją można skojarzyć odpowiednią kombinacje klawiszy która ją wywołuje. Skróty klawiszowe można dodać do każdego elementu menu zmieniając jego własność ShortCut->Skrót. Należy zaprojektować menu główne tak, aby miało następujące funkcje - Plik - Otwórz Plik (skrót Ctrl+L) - Zapisz do Pliku (skrót Ctrl+S) - Koniec (skrót Ctrl+Q) Rysunek 2. Projektowanie głównego menu 6. Piszemy odpowiednie procedury do wczytywania danych z plików tekstowych do pola edycyjnego Memo (memTresc), oraz do zapisu danych do plików tekstowych z pola edycyjnego Memo (memTresc). Wykorzystane zostaną komponenty OpenDialog i SaveDialog. Przygotował: mgr inż. Jakub Filip Możaryn 2007-03-05 e-mail: [email protected], WWW: http://grafit.mchtr.pw.edu.pl/~mozaryn Zasady Programowania (Projektowanie) – C++ - część 1 3/6 Programowanie Wizualno Obiektowe 6.1 Wczytywanie pliku tekstowego do pola memTresc. Aby zrealizować tą opcję, należy skorzystać ze standardowego okna dialogowego służącego do otwierania plików OpenDialog. We własnościach komponentu OpenDialog określić pliki, które mogą być wyświetlane wybierając własność Filter i definiując filtry do wyboru odpowiednich plików wykorzystując tzw. edytor filtrów FilterEditor i modyfikując pola: Filter Name – nazwa odpowiedniego filtru np. ‘plik tekstowy’, Filter - możliwe do otwierania rozszerzenia np. ‘*.txt’. Rysunek 3. Dodawanie filtrów do okna dialogowego OpenDialog Wczytywanie pliku tekstowego z wykorzystaniem okienka dialogowego jest wykonywane poprzez obsługę zdarzenia OnClick odpowiedniego elementu głównego menu. Informacja o otwartym pliku będzie wyświetlania na etykiecie lblNazwa. Otwarcie okna dialogowego do wyboru otwieranego pliku OpenDialog wykonuje się poprzez wywołanie metody tego okna Execute(). Powoduje to otwarcie okna dialogowego w trybie modalnym (bez możliwości przełączania pomiędzy oknami programu). Po wybraniu odpowiedniego pliku, jego nazwa przechowywana jest w zmiennej OpenDialog.FileName. Wpisanie zawartości pliku testowego wykonuje metoda LoadFromFile(nazwa_pliku) klasy TLines. Obiektem tej klasy jest własność Lines klasy TMemo. Przygotował: mgr inż. Jakub Filip Możaryn 2007-03-05 e-mail: [email protected], WWW: http://grafit.mchtr.pw.edu.pl/~mozaryn Zasady Programowania (Projektowanie) – C++ - część 1 4/6 Programowanie Wizualno Obiektowe Komponent Memo realizuje prostą kontrolkę edycji wielowierszowej. Podstawowe właściwości: - Przechowuje tekst stanowiący zawartość komponentu, klasa TStrings. - Określa, które paski przewijania powinny być wyświetlane. Lines ScrollBars Podstawowe metody: (Lines - klasa TStrings) Add (const AnsiString) – dodawanie nowej linii do pola tekstowego Np. this->Memo1->Lines->Add("tekst"); (const AnsiString FileName) – wczytywanie danych z pliku tekstowego o nazwie FileName. Np. this->Memo1->Lines->LoadFromFile ("plik.txt"); LoadFromFile SaveToFile (const AnsiString FileName) – wczytywanie danych do pliku tekstowego o nazwie FileName, jeśli plik nie istnieje to zostanie utworzony, jeśli plik istnieje to informacje wcześniej w nim zapisane zostaną utracone. Podstawowe zdarzenia: OnChange OnEnter OnExit - zmiana zawartości pola edycyjnego - znalezienie się w polu edycyjnym, uaktywnienie pola edycyjnego - opuszczenie pola edycyjnego void __fastcall TForm1::Otworz1Click(TObject *Sender) { if (this->OpenDialog1->Execute()==true){ this->MemTresc->Lines->LoadFromFile(this->OpenDialog1->FileName); this->LblNazwaOtworzPlik->Caption=this->OpenDialog1->FileName; } } //----------------------------------------------------------------------- W przypadku okien dialogowych do wyboru plików zmodyfikować należy dodatkowe pola, automatycznie ustawiające rozszerzenie i miejsce wybieranego pliku InitialDir FilterIndex DefaultExt – Określa katalog w którym wybierane są pliki. – Określa która opcja z listy filtrów jest wybrana (licznik od 1). – Określa rozszerzenie pliku które jest automatycznie ustawiane (jeśli znajduje się na liście filtrów rozszerzeń), np. txt. Przygotował: mgr inż. Jakub Filip Możaryn 2007-03-05 e-mail: [email protected], WWW: http://grafit.mchtr.pw.edu.pl/~mozaryn Zasady Programowania (Projektowanie) – C++ - część 1 5/6 Programowanie Wizualno Obiektowe 6.2 Zapisywanie informacji z pola memTresc do pliku tekstowego Aby zrealizować tą opcję, należy skorzystać ze standardowego okna dialogowego służącego do zapisywania plików SaveDialog. Właściwości tego komponentu zmienia się analogiczne jak właściwości komponentu OpenDialog. Rysunek 3. Dodawanie filtrów do okna dialogowego SaveDialog void __fastcall TForm1::Zapisz1Click(TObject *Sender) { if (this->SaveDialog1->Execute()==true){ this->MemTresc->Lines->SaveToFile(this->SaveDialog1->FileName); this->LblNazwaZapisPlik->Caption=this->SaveDialog1->FileName; } } //----------------------------------------------------------------------- 6.3. Procedura zamykania aplikacji Dodać procedurę zamykającą aplikację. Procedura ma być wykonywana w momencie wybrania w menu głównym MainMenu elementu ‘Koniec’. void __fastcall TForm1::Koniec1Click(TObject *Sender) { this->Close(); } Przygotował: mgr inż. Jakub Filip Możaryn 2007-03-05 e-mail: [email protected], WWW: http://grafit.mchtr.pw.edu.pl/~mozaryn Zasady Programowania (Projektowanie) – C++ - część 1 6/6 Programowanie Wizualno Obiektowe 7. Dodanie podpowiedzi do widocznych komponentów. Podpowiedź można dodać do każdego z widocznych komponentów ustawiając odpowiednio własność Hint dla każdego z tych komponentów, oraz ustawiając własność ShowHint na True. Będzie ona widoczna po pewnym czasie od najechania na komponent kursorem (strzałką). Elementy w napisanym programie dla których powinno się ustawić podpowiedzi to np. kolejne przyciski szybkiego dostępu, pole edycyjne, etykieta. Jednym z alternaywnych zastosowań może byc wyświetlanie tekstu który nie mieści się na etykiecie. Przykłady: this->LblNazwaOtworzPlik->Hint=this->OpenDialog1->FileName; this->LblNazwaZapisPlik->Hint=this->SaveDialog1->FileName; Przygotował: mgr inż. Jakub Filip Możaryn 2007-03-05 e-mail: [email protected], WWW: http://grafit.mchtr.pw.edu.pl/~mozaryn