Komponenty v tomto vývojom prostredí majú tú vlastnosť, že najlepšie ich spoznáte osobne a budete sa s každým hrať pár desiatok minút a skúšať všetky jeho vlastnosti a možnosti. Takže nemá veľký význam popisovať učebnicovo ich funkcie a použitie. Prejdeme teda k spomínaným príkladom.
1. Menový konvertor
Tento program demonštruje množstvo vecí, ktoré má mať user-friendly program. Ide o konvertor medzi neobmedzeným počtom mien. Meny a kurzy sa ukladajú do súboru, ktorý je vždy pri štarte automaticky načítaný do programu. Kurzy a meny je možné upravovať, pridávať a meniť pohodlne v programe. Taktiež je výpočtový algoritmus prispôsobený tak, že ľahko môžete spraviť prevod medzi akýmikoľvek menami zo zoznamu navzájom. Kurzy sú zadávané vo formáte: skratka meny MEDZERA aktuálny kurz voči slovenskej korune, napríklad: USD 29.358
#includeVýpočet kurzu:#pragma hdrstop #include
#include "Unit1.h"
//---------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
class kurzy{ //trieda kurzy obsahuje informácie, ktoré
// bude každá mena obsahovať
public:
float hodnota;
char meno[20];
};
kurzy *nove; //vytvorenie pointeru typu kurzy
vysl = (suma * nove[cb1].hodnota) / nove[cb2].hodnota;
suma - reprezentuje užívateľom zadaný údaj – čsumu v zvolenej mene (nove[cb1].hodnota). Keďže sú kurzy v zozname písané voči slovenskej koruna, tak aby bolo možné robiť konverzie medzi akýmikoľvek dvoma zvolenými menami je nutné spraviť vždy najprv konverziu na slovenské koruny a následne na výslednú menu.
vysl - je hodnota vypísaná do programu ako výsledok tejto operácie.
cb1 a cb2 – sú pomocné premenné typu int, a reprezentujú zvolený prvok, v komponente ComboBox a tak určujú o ktorý objekt poľa objektov mien a kurzov ide.
nove[cb1] a nove[cb2]- sú to objekty poľa. Tieto objekty boli deklarované dynamicky ako objekty typu trieda.
Zistenie počtu prvkov v zdrojovom súbore a dynamická alokácia
//-- zistenie počtu riadkov/prvkov v zdrojovom súbore - začiatok--//
a = fgetc(f);
while( a != EOF){ //podmienka-AK sa char a nerovná hodnote EOF
fgets(pom,49,f); //načítanie celého riadku
a = fgetc(f); //načítanie jedného znaku, slúžiaceho ako
//indikátor EOF
i++; // int i reprezentuje počet prvkov/riadkov nájdených v súbore
}
//-- zistenie poctu riadkov/prvkov v zdrojovom súbore - koniec--//
//--------- "previnutie" súboru na začiatok-------//
rewind(f);
nove = new kurzy[i]; //dynamická alokácia poľa objektov typu
V hore uvedenom kóde je asi najväčšou špecialitou zisťovanie počtu riadkov/prvkov v súbore kurzy.txt, ktorý slúži ako zdrojový a je už vopred vytvorený. Funkcia funguje tak, že načítava po riadku a po tomto načítaní prevedie ešte načítanie jedného znaku. A práve na tom je postavená podmienka-> AK sa tento znak nerovná hodnote EOF – koniec súboru, načítavanie pokračuje. Premenná int i sa zvyšuje po každom úspešnom načítaní riadka a slúži ako parameter pri dynamickej alokácii nášho poľa objektov, do ktorého budeme funkciou načítavania ukladať jednotlivé informácie o kurzoch.
Funkcia načítavania je jednoduchá a nepotrebuje veľký komentár.
for(b = 0; b <= i-1;b++){
fscanf(f,"%s",nove[b].meno); //funkcia načítania do prvkov poľa
//--------vloženie názvov mien do komponentov ComboBox---------//
Form1->ComboBox1->Items->Add(nove[b].meno);
Form1->ComboBox2->Items->Add(nove[b].meno);
fscanf(f,"%f",&nove[b].hodnota);
}
fclose(f);
Ešte zaujímavým prvkom v tomto programe je, ako je riešené upravovanie zdrojových dát. Vo formulári je komponent Memo, ale zo začiatku je neviditeľný a formulár je príliš malý aby sa tam zmestil tento komponent celý. A tak po stlačení záložky Upraviť kurzy v menu sa formulár zväčší a u komponentu Memo sa zmení vlastnosť Visible na true a násldne sú do neho načítané zdrojové dáta. Zvolil som asi trošku neštandardný postup, pretože lepšie by bolo spraviť práve túto časť programu pomocou dynamickej deklarácie komponentu Memo.
Stiahnuť kompletný program – zdrojové kódy + preložený program.
2. Hra „Klikli na kruh”
Tento program je určite malým rozptýlením, pretože ide o niečo ako hru, alebo testovanie pozornosti. Program zobrazuje červený kruh v malých časových intervaloch, ktorý následne zmizne a na náhodnom mieste sa objaví. Vašou úlohou je kliknúť na kruh. Za každé kliknutie na tento kruh dostane 1 bod. Program sa skladá z dvoch prvkov – vykresľovania a overovania, či ste klikli na kruh. V tomto projekte je použitá komponent Timer. Timer generuje príkazy vo svojom tele s frekvenciou opakovania sa, ktorá sa nastavuje. Tiež je tu použitý generátor náhodných čísel. O generátoroch náhodných čísel si budeme hovoriť v neskorších pokračovaniach C++ programovania, kde si aj vytvoríme vlastný. Stačí nám zatiaľ vedieť, že generátor náhodných čísel random (n) generuje náhodné čísla od 0 po n-1.
Globálne premenné
TCanvas *g;
int x,y,body = 0;
Vykresľovanie
DoubleBuffered = true; //ošetrenie blikania obrazu
//priradenie premenným int X a Y náhodné hodnoty funkciou random()
int X = random(Image1->Width-40),Y = random(Image1->Height-40);
x = X;
y = Y;
g = Image1->Canvas;
g->Brush->Color = clWhite; //priradenie farby výplne na bielu
g->FillRect(Image1->ClientRect); //vyfarbenie plochy Image1 nabielo
g->Brush->Color = clRed; //zmena farby výplne na červenú
g->Ellipse(x,y,x+40,y+40); //vykreslenie kruhu s náhodnou pozíciou
Overovanie podmienky
// táto udalosť kliknutie myši na komponent Image obsahuje dve
//premenné, X a Y, ktoré určujú súradnice kliknutia na komponente
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(X >= x && X <= x + 40 && Y >= y && Y <= y+40){
body++; //prirátanie jedného bodu pri slnení podmienky
}
Label1->Caption = body; //výpis počtu bodov
}
Stiahnuť kompletný program – zdrojové kódy + preložený program.
3. Štvorec, ktorý sa bojí kurzoru
Posledný zo série programov, ktorý má demonštrovať niektoré funkcie je trošku hračkou. Je to obyčajný štvorec, ktorý sa vždy uhne na opačnú stranu, akou sa k nej priblíži kurzor.
Nemá zmysel ukazovať zdrojový kód, pretože ide o ekvivalentu 2. spomínaného programu len s oveľa širšími podmienkami.
Stiahnuť kompletný program – zdrojové kódy + preložený program.
V budúcej časti tohto seriálu budeme hovoriť o hlavičkovom súbore string.h.