background image

1

Samouczek C++

Samouczek C++

Programowanie zdarzeniowe

Programowanie zdarzeniowe

Dr inż.Stanisław Lipski

Dr inż.Stanisław Lipski

background image

2

Borland Builder 6.0

Borland Builder 6.0

• Jak sterować aplikacją za pomocą 

przycisków?

• Jak tworzyć i wykorzystywać okno 

dialogowe TEdit? 

• Krok po kroku!

background image

3

Wybierz: File - > New Application

Uzyskasz pusty formularza Form1

K

R

O

K

 1

background image

4

Krok 1a

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

5

Krok 2 - przyciski

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

6

Krok 3. Przeznaczenie przycisku

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

7

Krok 3 – opis przycisku na arkuszu

Krok 3 – opis przycisku na arkuszu

background image

8

Krok 3 – opis przycisku na arkuszu

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

9

Zdarzenie

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

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

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

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

Krok 4 – polecenie

background image

14

Zadanie 1 do samodzielnego wykonania

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

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

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

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:

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

Zadanie 4

• Zaprojektuj formularz o przedstawionym poniżej 

wyglądzie:

background image

22

Rozwiązanie zad. 4.

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.

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 

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 

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

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

Dziękuję za zainteresowanie

• stlipski@gmail.com


Document Outline