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