background image

 

Samouczek C++ 

 

Programowanie zdarzeniowe 

Dr inż.Stanisław Lipski 

background image

Borland Builder 6.0 

• Jak sterować aplikacją za pomocą 

przycisków? 

• Jak tworzyć i wykorzystywać okno 

dialogowe TEdit?  

• Krok po kroku! 

background image

Wybierz: File - > New Application 
Uzyskasz pusty formularza Form1 

KR
OK 

1

 

background image

Krok 1a 

• Widzisz swoją formę Form1, Object TreeView 

oraz Object Inspector. 

• Object Inspector ma ono dwie zakładki: 

Properties i Events. 

• Wybierz arkusz Properties  
• Odszukaj własność Caption i w polu obok wpisz 

sobie nazwę Twojej własnej aplikacji. 

• Odszukaj własność Color i w polu obok ustaw 

sobie ulubiony kolor arkusza na którym chcesz 

dalej pracować. 

• W taki sposób tworzysz program nie wpisując ani 

jednej linijki kodu, ale możesz go podpatrywać w 

drugim oknie Unit1.cpp,które jest za Twoim 

arkuszem. 

• Wypróbuj inne własności arkusza.   

background image

Krok 2 - przyciski 

• Na pasku zadań są zakładki w których mieszka 

bardzo wiele możliwości. Zapoznaj się z nimi! 

• W zakładce standard masz możliwość wstawiania 

gotowego przycisku.  

• Wystarczy kliknąć na niego a potem na arkusz. 
• Zobaczysz gotowy przycisk z napisem Button1

Wystarczy wiedzieć do czego ma służyć i potem 

go opisać. 

• Wypróbuj co możesz zrobić myszą z tym 

przyciskiem!  

background image

Krok 3. Przeznaczenie przycisku 

• Naciśnięcie przycisku ma na celu 

zakończenie aplikacji 

• Co należy zrobić? 

 

• W tym celu należy: 
- Opisać przycisk na arkuszu  
- Wpisać kod polecenia w unit.cpp 

Jeśli Twój przycisk ma zamykać aplikację to

background image

Krok 3 – opis przycisku na arkuszu 

background image

Krok 3 – opis przycisku na arkuszu 

• Wykorzystujesz Object Inspector. 
• Wykorzystując własność Caption ustalasz 

nazwę arkusza 

• Wykorzystując własność Font ustalasz 

napis na przycisku 

• Możesz wykorzystać Label i wstawić tekst 

w sąsiedztwie. 

• Wypróbuj inne własności z Object 

Inspector dla tego arkusza. 

background image

Zdarzenie 

• Object Inspector ma dwie zakładki: Propertiwes i Events.  

• Upewnij się że wybrana jest Forma i przejdź do zakładki 

Events.  

• Tam masz wszystkie zdarzenia które obsługuje forma  

• W tym celu dla obsługi możesz wykorzystać zdarzenie 

OnClick.  

• Obsługę tego zdarzenia możesz zdefiniować w dwojaki 

sposób – poprzez dwukrotnie kliknięcie na przycisku lub 

wybranie w Object Inspector zakładki Events i dwukrotne 

kliknięcie na puste pole obok napisu OnClick.  

• Po wykonaniu jednej z wymienionych opcji zostanie 

wygenerowana procedura obsługi zdarzenia OnClick dla 

wybranego przycisku.  

• Wystarczy uzupełnić ją poleceniem powodującym 

wywołanie zaplanowanego zdarzenia.  

background image

10 

Krok 4 – polecenie 

• Jak klikniesz dwukrotnie w przycisk, 

zobaczysz taki kod: 
 
 
 
 
 

• Trzeba go uzupełnić! 

void __fastcall 

TForm1::Form1(TObject *Sender) 

 } 

//-------------------- 

background image

11 

Krok 4 – polecenie 

void __fastcall 

TForm1::Form1(TObject *Sender) 


 

Tutaj zrób trochę miejsca 

 } 
//tutaj wpisz polecenie dla przycisku 

 

background image

12 

Krok 4 – polecenie 

• W tym konkretnym przypadku wystarczy 

Close (); 

• Następnie zapisz aplikację i uruchom 

kompilator 

• Jeśli wszystko wykonałeś bezbłędnie, 

uruchom aplikację 

• Zobaczysz swój przycisk który już jest 

aktywny. Teraz czas bardziej 

zawansowane programy! 

   

background image

13 

Krok 4 – polecenie 

background image

14 

Zadanie 1 do samodzielnego wykonania 

• Napisać program, w którym zostaną 

umieszczone 4 przyciski z napisami 

• 3 z nich Czerwony, Zielony, Niebieski mają 

spowodować, aby ich wciśnięcie 

skutkowało zmianą tła formularza 

odpowiednio na kolor czerwony, zielony i 

niebieski. 

• 4 – ma zamykać aplikację. 
• Wypróbuj zmianę koloru przyciski i napisu 

na nim.  
 

background image

15 

Zadanie 2 do samodzielnego wykonania 

• Utwórz nową aplikację, w której umieścisz komponent TLabel. W 

Inspektorze Obiektów ustaw dla niego własności: 

Caption=”Przyklad użycia komponentów z karty standard”, Font-

>Size=20.  

• Umieść na formularzu komponent TGroupBox, a następnie zmień 

jego własności: Caption=”Styl czcionki”, Font->Size=10.  

• Na komponencie TGroupBox umieść cztery komponenty 

TCheckBox. Zmień ich własności Caption odpowiednio na: 

- Pogrubiona, Pochylona, Podkreślona, Przekreślona.  

 

• Aplikacja będzie miała za zadanie zmieniać styl czcionki użytej w 

komponencie TLabel w zależności od zaznaczenia stosownej opcji. 

• Wskazówka: Wykorzystaj zdarzenie OnClick dla komponentu 

TCheckBox i jego własności State oraz Checked. Posłuż się 

własnością Font->Style komponentu Tlabel.  

• Ustaw odpowiednio styl na fsBold (pogrubiony), fsItalic 

(pochylony), fsUnderline (podkreślony), fsStrikeOut 

(przekreślony).  

• Przykład pochylania tekstu: 

if (CheckBox2->Checked) 

Label1->Font->Style=TFontStyles()<<fsItalic; 

background image

16 

Zadanie 3 

• Umieść na formularzu komponent TEdit.  

• Usuń dla niego napis z własności Text.  

• Następnie umieść przycisk (TButton) i ustaw jego 

własność Caption na “Zmien napis”.  

• Ustal działanie aplikacji tak aby naciśniecie 

przycisku powodowało przepisanie tekstu z pola 

edycyjnego do etykiety. 

background image

17 

Rozwiązanie zad. 3 

Wykorzystując okno dialogowe Edit chcę zmieniać napis tytułowy po 

naciśnięciu przypisku. 
Okno Edit ma pozostać aktywne i wprowadzenie nowego napisu i 

ponowne naciśniecie przycisku znów zmieni napis. 

background image

18 

Wskazówka: 

• Wykorzystaj zdarzenie OnClick dla 

przycisku: 

 

• void __fastcall 

TForm1::Button1Click(TObject *Sender) 

• { 
• Label1->Caption=Edit1->Text; 
• } 

 

background image

19 

background image

20 

Przed naciśnięciem 

przycisku 

Po naciśnięciu 

przycisku 

background image

21 

Zadanie 4 

• Zaprojektuj formularz o przedstawionym poniżej 

wyglądzie: 

background image

22 

Rozwiązanie zad. 4. 

• Na formularzu umieść komponent TPanel z zakładki Standard.  

• Usuń dla niego wartość własności Caption.  

• Następnie umieść trzy komponenty TTrackBar z zakładki Win32.  

• Dla każdego z suwaków ustaw własności: 

Min=0, Max=255, Frequency=5.  

• W kolejnym kroku umieść trzy etykiety (komponent TLabel z 

zakładki Standard) opisujące za pomocą liter R, G, B kolory jakie 

reprezentują suwaki.  

• Dla każdej z etykiet ustaw własności: 

Font=Arial, Size=20, Style=fsBold,  

• Następnie zmodyfikuj stosownie ich kolor tak aby R było napisane 

kolorem czerwonym, G – zielonym, a B –niebieskim.  

• Dla suwaka reprezentującego kolor czerwony obsłuż zdarzenie 

OnChange wywoływane w momencie zmiany położenia wskaźnika 

suwaka. 

• Wykorzystaj funkcję RGB zwracającą na podstawie trzech 

podanych wartości  kolorów barwę wynikową. 

• Do pobrania aktualnej pozycji wskaźników suwaka wykorzystaj 

własność Position.  

background image

Rozwiązanie zad. 4 cd. 

• Dla wygenerowania podglądu uzyskanej barwy 

ustaw własność kolor panela. Posłuż się kodem:  

Panel1->Color=(TColor) RGB(TrackBar1->Position, 

TrackBar2->Position, TrackBar3->Position); 

 

• Dla pozostałych dwóch suwaków zdefiniuj tak 

zdarzenie OnChange, aby wywoływała się ta 

sama funkcja co dla suwaka obsługującego kolor 

czerwony. 

• Ustaw tytuł okna na “Mieszacz kolorów”.  

• Dołącz przycisk zamykający aplikację. 

• Uruchom i przetestuj aplikację. 

 

23 

background image

24 

background image

25 

background image

26 

Uzupełnienie  

• Spowoduj aby nastawy suwaków uwidaczniały się 

wewnątrz barwnego panela. Niech się tam pokaże 

tekst “(100,100,100)” opisujący wartości trzech 

barw składowych.  

• Wykorzystaj: 
 

Panel1->Caption= "("+AnsiString(TrackBar1-> 

Position)+","+ 

AnsiString(TrackBar2->Position)+","+ 
AnsiString(TrackBar3->Position)+")"; 

background image

27 

Uzupełnienie  

• Dodaj do formularza checkbox z opisem “Heksadecymalnie” 

decydujący czy współrzędne mają się pokazać w systemie 

szesnastkowym.  

• Posłuż się funkcją IntToHex zamieniającą liczbę dziesiętną 

na napis w systemie heksadecymalnym.  

• Ponieważ ten sam kod byłby wykorzystywany zarówno w 

przy zmianie stanu checkboxa jak i przy zmianie położenia 

suwaka dlatego też zdefiniuj funkcję “Napis”.  

• W tym celu otwórz plik nagłówkowy (naciśnij prawy klawisz 

myszy na zakładce z nazwą otwartego pliku cpp i wybierz 

Open Source/Header File).  

• W części prywatnej klasy formularza zadeklaruj funkcję: 

void Napis(); 

 

background image

28 

Uzupełnienie 

• Wróć do pliku cpp i zdefiniuj ciało funkcji: 

void TForm1::Napis() 

if(CheckBox1->Checked) 

Panel1->Caption="("+IntToHex(TrackBar1->Position,2)+ 

","+IntToHex(TrackBar2->Position,2)+","+ 

IntToHex(TrackBar3->Position,2)+")"; 

else 

Panel1->Caption="("+AnsiString(TrackBar1->Position)+","+ 

AnsiString(TrackBar2->Position)+","+ 

AnsiString(TrackBar3->Position)+")"; 

• Następnie wywołaj ją w funkcji obsługi zdarzenia OnChange 

dla suwaków oraz w funkcji obsługującej zdarzenie OnClick 

dla chceckboxu. 

background image

29 

Praca domowa. 

Napisać samodzielnie program dla 

aplikacji rozwiązującej dowolne równania kwadratowe.

 

background image

30 

Dziękuję za zainteresowanie 

• stlipski@gmail.com