-
V dalÜφ aplikaci se budeme zab²vat pracφ se soubory. Z existujφcφho textovΘho
souboru se pokusφme vytvo°it nov² soubor s pozm∞n∞n²m obsahem. Program
nazvan² FILTR umφ p°evΘst vÜechny znaky textovΘho souboru na velkß pφsmena,
zv∞tÜit jen pφsmena ka₧dΘho prvnφho slova ve v∞t∞ nebo odstranit znaky
z druhΘ Φßsti tabulky ASCII (pφsmena s hßΦky a Φßrkami). Vytvo°φme formulß°
podle nßsledujφcφho obrßzku (je zde pou₧ita komponenta RadioGroup):
U₧ivatel m∙₧e zadat nßzvy vstupnφho a v²stupnφho souboru ve dvou editaΦnφch
ovladaΦφch nebo stisknutφm tlaΦφtka Zm∞nit otev°φt p°φsluÜnΘ dialogovΘ
okno pro v²b∞r souboru. U komponenty OpenDialog nastavφme Options
na [ofPathMustExist, ofFileMustExist] a u SaveDialog na [ofOverwritePrompt,
ofPathMustExist, ofCreatePrompt]. Vlastnosti Filter u obou dialogov²ch
oken nastavφme na Textov² soubor (*.txt). Obsluha stisku hornφho
tlaΦφtka Zm∞nit bude tvo°ena p°φkazem (pro spodnφ tlaΦφtko ji vytvo°te
sami):
if (OpenDialog1->Execute())
Edit1->Text = OpenDialog1->FileName;
Do soukromΘ Φßsti deklarace formulß°e vlo₧φme tyto deklarace:
FILE *VstSoubor,
*VystSoubor;
int DelkaSouboru;
void __fastcall PrevodVelka();
void __fastcall PrevodPrvniVelk();
void __fastcall PrevodSymb();
Obsluha stisku tlaΦφtka P°evΘst je tvo°ena p°φkazy (je zobrazeno
dialogovΘ okno, kterΘ bude popisovat proces p°evodu; tento dalÜφ formulß°
bude obsahovat pouze komponentu ProgressBar a BitBtn s textem
OK;
tlaΦφtko zakß₧eme a obsluha jeho stisknutφ bude tvo°ena p°φkazem
Close();):
if ((Edit1->Text
!= "")&&(Edit2->Text != "")) {
if ((VstSoubor
= fopen(Edit1->Text.c_str(), "rt")) == NULL){
ShowMessage("Nelze otev°φt vstupnφ soubor.");
return;
}
fseek(VstSoubor,
0L, SEEK_END);
DelkaSouboru
= ftell(VstSoubor);
fseek(VstSoubor,
0L, SEEK_SET);
if ((VystSoubor
= fopen(Edit2->Text.c_str(), "wt")) == NULL){
ShowMessage("Nelze otev°φt v²stupnφ soubor.");
return;
}
Form2->Show();
Form2->BitBtn1->Enabled
= false;
Button3->Enabled
= false;
switch (RadioGroup1->ItemIndex)
{
case 0: PrevodVelka(); break;
case 1: PrevodPrvniVelk(); break;
case 2: PrevodSymb(); break;
}
fclose(VstSoubor);
fclose(VystSoubor);
Form2->BitBtn1->Enabled
= true;
Button3->Enabled
= true;
}
else ShowMessage("Zadej
jmΘna soubor∙.");
Zb²vß jeÜt∞ vytvo°it t°i metody provßd∞jφcφ po₧adovan² p°evod. Nßsleduje
v²pis t∞chto metod (je zde i pomocnß funkce p°evßd∞jφcφ velkß pφsmena na
malß):
char __fastcall LowCase(char
Zn)
{
if ((Zn >=
'A') && (Zn <= 'Z')){return Zn - 'A' + 'a';}
else return
Zn;
}
void __fastcall TForm1::PrevodVelka()
{
int Pozice
= 0;
while (!feof(VstSoubor))
{
fputc(UpCase(fgetc(VstSoubor)), VystSoubor);
Pozice++;
Form2->ProgressBar1->Position = Pozice * 100 / DelkaSouboru;
Application->ProcessMessages();
}
}
void __fastcall TForm1::PrevodPrvniVelk()
{
int Pozice
= 0;
char Zn;
bool Tecka
= true;
while (!feof(VstSoubor))
{
Zn = fgetc(VstSoubor);
if ((Zn >= 'A') && (Zn <= 'Z')){
if (Tecka) {fputc(Zn, VystSoubor); Tecka = false;}
else {fputc(LowCase(Zn), VystSoubor); Tecka = false;}
}
else if ((Zn >= 'a') && (Zn <= 'z')){
if (Tecka) {fputc(UpCase(Zn), VystSoubor); Tecka = false;}
else {fputc(Zn, VystSoubor); Tecka = false;}
}
else if ((Zn == '.') || (Zn == '?') || (Zn == '!'))
{fputc(Zn, VystSoubor); Tecka = true;}
else {fputc(Zn, VystSoubor);}
Pozice++;
Form2->ProgressBar1->Position = Pozice * 100 / DelkaSouboru;
Application->ProcessMessages();
}
}
void __fastcall TForm1::PrevodSymb()
{
int Pozice
= 0;
int Zn;
while (!feof(VstSoubor))
{
Zn = fgetc(VstSoubor);
if (Zn < 128) fputc(Zn, VystSoubor);
Pozice++;
Form2->ProgressBar1->Position = Pozice * 100 / DelkaSouboru;
Application->ProcessMessages();
}
}
Tφm je naÜe aplikace hotova a m∙₧eme ji vyzkouÜet. Pokuste se pochopit
jak pracuje. V aplikaci se pracuje se soubory zp∙sobem pou₧φvan²m v C.
Pokuste se tuto aplikaci zm∞nit tak, aby byly pou₧ity souborovΘ datovΘ
proudy.
-
Vedle pou₧φvßnφ textov²ch soubor∙ m∙₧eme takΘ b∞₧n²m zp∙sobem pou₧φvat
binßrnφ soubory. Nejprve vytvo°φme aplikaci, kterß bude zobrazovat grafy
(seznßmφme se s komponentou Chartfx) a pozd∞ji k tΘto aplikaci p°idßme
mo₧nost uklßdat a naΦφtat zobrazenΘ hodnoty do a ze soubor∙. ZaΦneme s
v²vojem novΘ aplikace. Formulß° zv∞tÜφme a umφstφme na nφ komponentu Chartfx
(bude zabφrat asi hornφ dv∞ t°etiny formulß°e). Na zb²vajφcφ plochu formulß°e
umφstφme jeÜt∞ komponentu StringGrid (s p∞ti sloupci a Φty°mi °ßdky,
bez fixnφch °ßdk∙ a sloupc∙, bez posuvnφk∙ a k vlastnosti Options
p°idßme hodnotu goEditing), komponentu ComboBox (vlastnost
Style
nastavφme na csDropDownList a prvky seznamu nastavφme na 1 û
Lines, 2 û Bar, 3 û Spline, 4 û Mark, 5 û Pie, 6 û Area, 7 û Pareto, 8
û Scatter a 9 û HiLow) a tlaΦφtko s textem Aktualizuj. M°φ₧ku
°et∞zc∙ m∙₧eme editovat a aby p°ijφmala pouze celß Φφsla musφme obslou₧it
jejφ udßlost OnGetEditMask. Tuto obsluhu bude tvo°it p°φkaz:
Value = "!09";
Tφm mßme mo₧nost zadat do bun∞k m°φ₧ky jednomφstnΘ nebo dvojmφstnΘ
Φφslo. P°i vytvß°enφ formulß°e vyplnφme m°φ₧ku nßhodn²mi hodnotami a volßnφm
obsluhy stisku tlaΦφtka Aktualizuj tyto hodnoty zobrazφme v grafu.
Do ve°ejnΘ Φßsti deklarace formulß°e p°idßme:
bool Modifikovano;
AnsiString AktualniSoubor;
Obsluha OnActivate formulß°e bude tedy tvo°ena p°φkazy:
Randomize();
for (int I = 0; I
< 5; I++)
for (int J
= 0; J < 4; J++)
StringGrid1->Cells[I][J] = IntToStr(random(100));
Button1Click(this);
ComboBox1->ItemIndex
= Chartfx1->ChartType - 1;
Modifikovano = true;
AktualniSoubor =
"";
a obsluhu stisku tlaΦφtka Aktualizuj tvo°φ p°φkazy (nßpov∞du
k pou₧φvßnφ komponenty Chartfx vyvolßme stiskem F1 p°i vybranΘ komponent∞;
nßpov∞da je ale urΦena pro Delphi):
Chartfx1->OpenDataEx(COD_VALUES,5,4);
for (int I = 0; I
< 5; I++){
Chartfx1->ThisSerie
= I;
for (int J
= 0; J < 4; J++)
Chartfx1->Value[J] = StrToIntDef(StringGrid1->Cells[I][J], 0);
}
Chartfx1->CloseData(COD_VALUES);
Modifikovano = true;
Zb²vß jeÜt∞ vytvo°it obsluhu udßlosti OnChange kombinovanΘho
ovladaΦe. Tvo°φ ji p°φkazy:
Chartfx1->ChartType
= ComboBox1->ItemIndex + 1;
Modifikovano = true;
Tφm je tato Φßst aplikace hotova. VyzkouÜejte jak pracuje.
-
Aplikaci vytvo°enou v p°edchozφm zadßnφ rozÜφ°φme o mo₧nost uklßdßnφ zobrazovan²ch
dat do souboru. K aplikaci p°idßme nabφdku Soubor s volbami Otev°φt,
Ulo₧it
a Ulo₧it jako (m∙₧ete p°idat i volbu Konec) a p°idßme komponenty
OpenDialog
a SaveDialog (nastavφme vhodn∞ jejich vlastnosti). Obsluha volby
Otev°it
bude tvo°ena p°φkazy:
FILE *LoadFile;
if (OpenDialog1->Execute())
{
AktualniSoubor
= OpenDialog1->FileName;
Caption =
"Graf " + AktualniSoubor;
if ((LoadFile
= fopen(AktualniSoubor.c_str(), "rb")) == NULL){
ShowMessage("Nelze otev°φt soubor");
return;
}
int Hodnota;
for (int I
= 0; I < 5; I++)
for (int J = 0; J < 4; J++){
fread(&Hodnota, sizeof(Hodnota), 1, LoadFile);
StringGrid1->Cells[I][J] = IntToStr(Hodnota);
}
fread(&Hodnota,
sizeof(Hodnota), 1, LoadFile);
ComboBox1->ItemIndex
= Hodnota;
Modifikovano
= false;
fclose(LoadFile);
ComboBox1Change(this);
Button1Click(this);
}
Zb²vajφcφ obsluhy vytvo°te sami a aplikaci vyzkouÜejte. Nahra∩te op∞t
souborovΘ operace C souborov²mi datov²mi proudy.
-
V p°edchozφ aplikaci jsme se seznßmili s komponentou Chartfx. Nynφ
se touto komponentou budeme zab²vat podrobn∞ji.
Graf vytvß°φme stejn²m zp∙sobem, jako pou₧φvßme jinΘ komponenty. Umφstφme
komponentu na formulß° a nastavφme jejφ inicializaΦnφ vlastnosti.
Po vytvo°enφ grafu je nutno alespo≥ specifikovat data, kterß chceme
zobrazit (zatφm jsou zobrazovßna nßhodnß data). Pro specifikaci zobrazen²ch
dat musφme pou₧φt vlastnost Value, tj. vlastnost, kterß musφ b²t
pou₧ita jako pole vlastnostφ:
Chart1->Value[nPoint] = dValue;
Tento p°φkaz °φkß, ₧e hodnota dValue je hodnota bodu nPoint
v sΘrii urΦenΘ vlastnostφ ThisSerie. Nap°. nßsledujφcφ p°φkazy nastavujφ
bod 3 sΘrie 0 na hodnotu 10.5:
Chart1->ThisSerie = 0;
Chart1->Value[3] = 10.5;
P°ed pou₧itφm tΘto vlastnosti je nutno zajistit, ₧e komunikaΦnφ kanßl
ke komponent∞ je otev°en. To provedeme dvojicφ metod OpenDataEx
a CloseData. K≤d nastavujφcφ data tedy bude vypadat nap°. takto:
// Otev°enφ kanßlu hodnot specifikujφcφho
2 sΘrie a 7 bod∙
Chart1->OpenDataEx(COD_VALUES,2, 7);
// K≤d nastavujφcφ data
Chart1->ThisSerie = 0;
for (int i = 0; i < 7; i++)
Chart1->Value[i] = 9;
Chart1->ThisSerie = 1;
for (int i = 0; i < 7; i++)
Chart1->Value[i] = 15;
// Uzav°enφ kanßlu hodnot
Chart1->CloseData(COD_VALUES);
Tφmto zp∙sobem se nastavujφ zobrazovanß data. M∙₧eme si to nynφ vyzkouÜet.
ZaΦneme v²voj novΘ aplikace, na formulß° umφstφme komponentu ChartFX,
zm∞nφme jejφ jmΘno na Chart1, zv∞tÜφme jejφ velikost tak, aby zabφrala
v∞tÜinu plochy formulß°e a vytvo°φme obsluhu udßlosti OnActivate
formulß°e s tφmto k≤dem:
Chart1->OpenDataEx(COD_VALUES,2,8);
Chart1->ThisSerie = 0;
Chart1->Value[0] = 30;
Chart1->Value[1] = 20;
Chart1->Value[2] = 40;
Chart1->Value[3] = 60;
Chart1->Value[4] = 50;
Chart1->Value[5] = 15;
Chart1->Value[6] = 24;
Chart1->Value[7] = 35;
Chart1->ThisSerie = 1;
Chart1->Value[0] = 45;
Chart1->Value[1] = 60;
Chart1->Value[2] = 30;
Chart1->Value[3] = 60;
Chart1->Value[4] = 80;
Chart1->Value[5] = 45;
Chart1->Value[6] = 15;
Chart1->Value[7] = 45;
Chart1->CloseData(COD_VALUES);
Po spuÜt∞nφ aplikace jsou zde zadanß data zobrazena v grafu. VyzkouÜejte.
-
Nynφ se budeme zab²vat zm∞nou dat zobrazen²ch v grafu v p°edchozφm kroku.
Pro zm∞nu zobrazen²ch hodnot pou₧φvßme stejnΘ vlastnosti jako pro poΦßteΦnφ
zadßvßnφ dat.
Volßnφ OpenDataEx s nov²m poΦtem sΘriφ a bod∙ zruÜφ existujφcφ
data a p°ipravφ komunikaΦnφ kanßl k p°ijetφ nov²ch dat.
// Otevφrß kanßl hodnot specifikacφ 4 sΘriφ
a 8 bod∙
// Toto volßnφ zruÜφ existujφcφ data
Chart1->OpenDataEx(COD_VALUES,4, 8);
// K≤d nastavujφcφ data
for (int i = 0; i < 4; i++){
Chart1->ThisSerie = i;
for (int j = 0; j < 8; j++){
Chart1->Value[j] = 12;
}
}
// Uzav°enφ kanßlu hodnot
Chart1->CloseData(COD_VALUES);
Pokud pouze chceme zm∞nit hodnoty beze zm∞ny poΦtu bod∙ nebo sΘriφ,
pak m∙₧eme pou₧φt p°φznak COD_UNCHANGE, kter² znamenß, zachovßnφ star²ch
dat s v²jimkou t∞ch, kterΘ zm∞nφme ve vlastnosti Value:
// Otevφrß kanßl hodnot se zachovßnφm poΦtu
sΘriφ a bod∙
Chart1->OpenDataEx(COD_VALUES, COD_UNCHANGE,
COD_UNCHANGE);
// Modifikace po₧adovanΘho bodu
Chart1->ThisSerie = 1;
Chart1->Value[4] = 10.5;
// Uzav°enφ kanßlu hodnot
Chart1->CloseData(COD_VALUES);
Budeme pokraΦovat ve v²voji aplikace z p°edchozφho bodu. Na formulß°
p°idßme tlaΦφtko a vytvo°φme obsluhu jeho stisknutφ k≤dem:
void __fastcall TForm1::Button1Click(TObject
*Sender)
{
int i;
double d1[8],d2[8];
randomize();
for(i=0; i<7; i++){
d1[i] = random(100);
d2[i] = random(100);
}
NastavNoveHodnoty(d1, d2);
}
Dßle vytvo°φme soukromou metodu formulß°e:
void __fastcall TForm1::NastavNoveHodnoty(double
*d1, double *d2)
{
int i;
Chart1->OpenDataEx(COD_VALUES,2,8);
Chart1->ThisSerie = 0;
for (i=0; i<7; i++)
Chart1->Value[i] = d1[i];
Chart1->ThisSerie = 1;
for (i=0; i<7; i++)
Chart1->Value[i] = d2[i];
Chart1->CloseData(COD_VALUES);
}
Nynφ aplikaci m∙₧eme op∞t vyzkouÜet. V₧dy p°i stisku tlaΦφtka se zm∞nφ
zobrazenΘ hodnoty.
-
Dßle se struΦn∞ seznßmφme s titulky a legendami grafu. Ke zm∞n∞ titulk∙
grafu nastavφme vlastnost Title s k≤dem titulku v indexu na nov²
°et∞zec titulku, jak je ukßzßno dßle:
Chart1->Title[CHART_LEFTTIT] = "Vydaje";
Chart1->Title[CHART_BOTTOMTIT] = "Mesice";
Pro zm∞nu legendy grafu pou₧ijeme vlastnost Legend pro jednotlivΘ
body a vlastnost SerLeg pro jednotlivΘ sΘrie a k≤d zadßvajφcφ legendu
m∙₧e vypadat takto:
Chart1->Legend[0] = "Leden";
Chart1->Legend[1] = "Unor";
Chart1->Legend[2] = "Brezen";
Chart1->Legend[3] = "Duben";
Chart1->SerLeg[0] = "Prijmy";
Chart1->SerLeg[1] = "Vydaje";
P°ejdeme op∞t k naÜi aplikaci. P°idßnφ titulk∙ a legendy provedeme
p°idßnφm nßsledujφcφho k≤du na zßv∞r obsluhy udßlosti OnActivate
formulß°e:
Chart1->Title[CHART_LEFTTIT] = "Platby";
Chart1->Title[CHART_BOTTOMTIT] = "Mesice";
Chart1->Legend[0] = "Leden";
Chart1->Legend[1] = "┌nor";
Chart1->Legend[2] = "B°ezen";
Chart1->Legend[3] = "Duben";
Chart1->Legend[4] = "Kv∞ten";
Chart1->Legend[5] = "╚erven";
Chart1->Legend[6] = "╚ervene";
Chart1->Legend[7] = "Srpen";
Chart1->SerLeg[0] = "Prod A";
Chart1->SerLeg[1] = "Prod B";
Aplikaci vyzkouÜejte.
-
Dßle se budeme zab²vat zm∞nou vzhledu (zm∞nou vizußlnφch atribut∙) grafu.
Komponenta poskytuje 3 re₧imy zobrazenφ:
-
re₧im 2D
-
re₧im "plochΘho" 3D
-
re₧imy 3D (s rotacφ) nebo prohlφ₧enφ 3D
Implicitnφ re₧im vytvß°enφ grafu je re₧im 2D. Toto m∙₧eme p°epsat a nastavit
jako implicitnφ re₧im "plochΘho" 3D p°i nßvrhu nebo za b∞hu aplikace pou₧itφm
vlastnosti Chart3D takto:
Chart1->Chart3D = true;
K nastavenφ re₧imu prohlφ₧enφ 3D, musφ b²t graf v re₧imu "plochΘho"
3D a provedeme nßsledujφcφ volßnφ:
Chart1->Angles3D = MAKELONG(30,60);
Dßle se budeme zab²vat zm∞nou n∞kter²ch atribut∙, kterΘ definujφ zp∙sob
zobrazenφ grafu. VÜechny tyto atributy mohou b²t zm∞n∞ny koncov²m u₧ivatelem
prost°ednictvφm nabφdky a svßzan²ch dialog∙.
-
BarevnΘ schΘma: Popisuje jak graf kreslφ oznaΦovaΦe (sloupce, body,
kruhovΘ v²seΦe, apod.) a mohou b²t Solid (plnΘ barvy), BWPatterns
(ΦernobφlΘ vzory) a Patterns (barevnΘ vzory).
-
Rastr: Popisuje vodorovnΘ a svislΘ Φßry kreslenΘ v grafu.
-
Barvy pozadφ: Barvy pou₧itΘ k zobrazenφ r∙zn²ch pozadφ v grafu.
V nßsledujφcφm k≤du jsou pou₧ity vlastnosti, kterΘ umo₧≥ujφ m∞nit zobrazovacφ
atributy:
// nastavenφ barevnΘho schΘmatu
Chart1->Scheme = CHART_CSPATTERN;
// nastavenφ rastru
Chart1->Grid = CHART_HORZGRID;
// nastavenφ barev pozadφ
Chart1->RGBBk = RGB(0,255,0);
Chart1->RGB2DBk = RGB(200,20,90);
Chart1->RGB3DBk = RGB(200,20,90);
I kdy₧ graf pou₧φvß implicitn∞ 8-mi bodovΘ pφsmo Arial k zobrazenφ
titulk∙, legend a dalÜφch text∙ v grafu a programßtor m∙₧e m∞nit tato pφsma
pomocφ n∞kolika vlastnostφ Font.
Op∞t se vrßtφme k naÜi aplikaci. Na konec obsluhy udßlosti OnActivite
p°idßme p°φkazy:
Chart1->View3D = true;
Chart1->Angles3D = MAKELONG(30,60);
Chart1->Grid = CHART_HORZGRID;
Chart1->RGBBk = RGB(0,255,0);
Chart1->RGB2DBk = RGB(200,20,90);
Chart1->RGB3DBk = RGB(200,20,90);
VyzkouÜejte.
-
Dßle se budeme zab²vat vytvß°enφm nßstroj∙ a dalÜφch vizußlnφch prvk∙ v
grafech. Graf dßvß koncovΘmu u₧ivateli 4 nßstroje, kterΘ usnad≥ujφ zm∞nu
n∞kter²ch charakteristik grafu.
Nßstroj (vlastnost) |
Pou₧it k ... |
ToolBar |
Zm∞na typu grafu, rastru apod. |
LegendBar |
Zobrazuje legendu X a sΘriφ. |
PaletteBar |
M∞nφ barvy pomocφ techniky ta₧enφ. |
PatternBar |
M∞nφ v²pl≥ovΘ vzory pomocφ techniky ta₧enφ. |
Z pohledu programßtor∙ prßce t∞chto nßstroj∙ je pln∞ transparentnφ a
mohou b²t zobrazeny b∞hem nßvrhu nebo p°i b∞hu aplikace nastavenφm p°φsluÜnΘ
vlastnosti na true.
TChartfx mß zabudovan² k≤d k vytvß°enφ a zobrazovßnφ stavovΘho
°ßdku, k informovßnφ koncovΘho u₧ivatele o stavu programu. Nejsnadn∞jÜφm
zp∙sobem vytvß°enφ stavovΘho °ßdku je pou₧itφ metod OpenDataEx a
CloseData
ve spojenφ s metodou SetStatusItem.
Nßsleduje p°φklad k≤du vytvß°ejφcφho stavov² °ßdek:
// Otev°enφ komunikaΦnφho kanßlu
Chart1->OpenDataEx(COD_STATUSITEMS,4,0);
// Nastavenφ prvk∙
Chart1->SetStatusItem(0,true,IDM_TEXT1,true,100,50,4,CHART_STLEFT);
Chart1->SetStatusItem(1,true,IDM_TEXT2,true,80,80,5,CHART_STCENTER);
Chart1->SetStatusItem(2,false,NULL,true,40,40,10,NULL);
Chart1->SetStatusItem(3,true,IDM_TEXT3,true,50,30,2,CHART_STRIGHT);
// Uzav°enφ kanßlu prvk∙
Chart1->CloseData(COD_STATUSITEMS);
K≤d nutn² k zobrazenφ stavovΘho °ßdku je:
Chart1->ShowStatus = true;
a k≤d k zadßnφ textu prvku stavovΘho °ßdku je:
// wIdm je identifikace prvku pou₧itß p°i
jeho vytvß°enφ
Chart1->StatusText[wIdm] = "Nov² text";
Pou₧itφ t∞chto p°φkaz∙ pro vytvß°enφ nßstroj∙ a ovlßdßnφ stavovΘho
°ßdku si ukß₧eme op∞t na naÜi aplikaci. Nßsledujφcφ p°φkazy p°idßme op∞t
na zßv∞r obsluhy udßlostφ OnActivate:
Chart1->OpenDataEx(COD_STATUSITEMS,4,0);
Chart1->SetStatusItem(0, true, 101, true,
100, 50, 4, 0);
Chart1->SetStatusItem(1, true, 102, false,
80, 80, 5, 0);
Chart1->SetStatusItem(2, false, 0, true,
40, 40, 10, 0);
Chart1->SetStatusItem(3, false, 103, true,
50, 30, 4, 0);
Chart1->CloseData(COD_STATUSITEMS);
Chart1->StatusText[101] = "Text 1";
Chart1->StatusText[102] = "Text 2";
Chart1->StatusText[103] = "Text 3";
Chart1->ShowStatus = true;
Chart1->ToolBar = true;
Chart1->PaletteBar = true;
VyzkouÜejte.
-
Dßle se budeme zab²vat udßlostmi generovan²mi grafem a zpracovßnφm t∞chto
zprßv. P°φklady n∞kter²ch udßlostφ generovan²ch grafem jsou:
Udßlost |
Nastane kdy₧ |
LButtonDblClk |
U₧ivatel dvojit∞ klikne na n∞kterou Φßst grafu. |
RButtonDown |
U₧ivatel stiskne pravΘ tlaΦφtko myÜi na grafem. |
Destroy |
Graf bude zruÜen. |
ReadFile |
Mß b²t Φten soubor. |
Menu |
U₧ivatel zvolil u₧ivatelem definovan² prvek nabφdky. |
Obsluhy udßlostφ se pou₧φvajφ obvykl²m zp∙sobem. V naÜφ aplikaci vytvo°φme
obsluhu dvojitΘho klinutφ lev²m tlaΦφtkem myÜi. Tato obsluha je tvo°ena
p°φkazy:
if ((nSerie == -1) || (nPoint == -1))
ShowMessage("PrßzdnΘ dvojitΘ kliknutφ
X: "+AnsiString(x)+" Y: " + y);
else {
Chart1->ThisSerie = nSerie;
double Hodnota = Chart1->Value[nPoint];
if (Hodnota < 25) nRes = 1;
else
if (Hodnota < 50) Chart1->HText
= "Hodnota mezi 25 a 50";
}
VyzkouÜejte.
Komponenta TChartfx umo₧≥uje provßd∞t jeÜt∞ mnoho dalÜφch Φinnostφ.
Nebudeme se jimi ji₧ ale zab²vat.