-
Nejjednodu╣╣φ zp∙sob zobrazenφ zprßvy pro u╛ivatele je pou╛itφ okna zprßv,
kterΘ zobrazφme funkcφ ShowMessage. Ukß╛eme si to na nßsledujφcφ
aplikaci: Vytvo°φme nov² projekt a na formulß° umφstφme tlaΦφtko. Do obsluhy
udßlosti OnClick tlaΦφtka zapφ╣eme nßsledujφcφ k≤d:
ShowMessage("C++
Builder vßs zdravφ");
Aplikaci spustφme a po stisku tlaΦφtka je zobrazeno okno zprßv se zadan²m
textem.
-
Metoda MessageDlg zobrazuje okno zprßv uprost°ed obrazovky. Toto
okno zprßv zobrazuje text zprßvy, titulek, ikonu a tlaΦφtka. Metoda mß
Φty°i parametry: Prvnφ parametr urΦuje text zprßvy, druh² typ okna (titulek
a ikonu okna), t°etφ zobrazenß tlaΦφtka v okn∞ a poslednφ kontext nßpov∞dy
(co bude zobrazeno p°i stisku tlaΦφtka Help nebo klßvesy F1).
Druh² parametr je v²ΦtovΘho typu a mo╛nΘ hodnoty jsou: mtWarning
(varovßnφ), mtError (chyba), mtInformation (informace), mtConfirmation
(potvrzenφ) a mtCustom (u╛ivatelsk² typ). Tyto hodnoty urΦujφ typ
okna, tj. titulek a ikonu okna. T°etφ parametr (pou╛itß tlaΦφtka) je mno╛ina
typu TMsgDlgButtons s mo╛n²mi hodnotami: mbYes, mbNo,
mbOK,
mbCancel,
mbHelp,
mbAbort,
mbRetry,
mbIgnore
a mbAll. Jestli╛e nechceme pou╛φvat kontext nßpov∞dy, pak poslednφ
parametr bude mφt nulovou hodnotu.
Pou╛itφ si ukß╛eme na nßsledujφcφm p°φkladu. Vytvo°φme novou aplikaci
s tlaΦφtkem. Obsluha stisku tlaΦφtka bude tvo°ena p°φkazem:
MessageDlg("Jsi tam?",
mtConfirmation,
TMsgDlgButtons() << mbYes << mbNo, 0);
Aplikace je hotova a m∙╛eme ji vyzkou╣et. Vyzkou╣ejte, jak se projevφ
zm∞na druhΘho parametru na vzhledu okna zprßv. Pokuste se takΘ zm∞nit zobrazenß
tlaΦφtka.
-
Ve v∞t╣in∞ p°φpad∙ ale budeme chtφt zjistit, kter²m tlaΦφtkem bylo okno
uzav°eno (je mo╛no zjistit z vrßcenΘ hodnoty). Mo╛nΘ vrßcenΘ hodnoty jsou:
mrNone,
mrAbort,
mrYes,
mrNo,
mrOK,
mrRetry,
mrCancel,
mrIgnore
a mrAll. Ukß╛eme si to na p°φkladu. V p°edchozφm zadßmφ zm∞nφme
obsluhu stisku tlaΦφtka takto:
switch (MessageDlg("Chce╣
ukonΦit aplikaci?", mtConfirmation,
TMsgDlgButtons() << mbYes << mbNo, 0)){
case mrYes:
MessageDlg("UkonΦenφ aplikace.", mtInformation,
TMsgDlgButtons() << mbOK, 0);
Close();
break;
case mrNo:
MessageDlg("Aplikace pokraΦuje v prßci.", mtInformation,
TMsgDlgButtons() << mbOK, 0);
}
Vyzkou╣ejte.
-
Existuje takΘ metoda MessageDlgPos, kterß se od MessageDlg
li╣φ pouze tφm, ╛e mß o dva parametry vφce. Tyto parametry (jsou poslednφ)
urΦujφ sou°adnice zobrazenφ okna zprßv.
-
Na nßsledujφcφ aplikaci si ukß╛eme, jak C++ Builder pou╛φvß jednotky formulß°∙.
Vytvo°φme jednoduchou aplikaci, kterß zobrazφ druhΘ okno, kdy╛ stiskneme
tlaΦφtko. ZaΦneme vytvß°et novou aplikaci volbou File | New Aplication.
U formulß°e zm∞nφme vlastnost Name na HlavniFormular a vlastnost
Caption
na Testovacφ program s vφce formulß°i. Ulo╛φme projekt (jednotku
nazveme Hlavni a projekt ViceForm). Na formulß° nynφ umφstφme
tlaΦφtko. Zm∞nφme jeho Name na ZobrazForm2 a Caption
na Zobraz druh² formulß°.
K vytvo°enφ novΘho formulß°e zvolφme File | New Form. Nov² formulß°
je umφst∞n nad na╣im p∙vodnφm formulß°em (mß stejnΘ rozm∞ry). My ale budeme
pot°ebovat men╣φ formulß°. Zmen╣φme tedy jeho rozm∞ry asi na polovinu a
umφstφme jej doprost°ed hlavnφho formulß°e. U novΘho formulß°e zm∞nφme
vlastnost Name na DruhyForm a vlastnost Caption na
Druh²
formulß°. Zvolφme File | Save a ulo╛φme druh² formulß° pod jmΘnem
Druhy.
Na druh² formulß° umφstφme doprost°ed je╣t∞ komponentu Label.
U tΘto komponenty zm∞nφme vlastnost Caption na Toto je druh²
formulß° a tento text nechßme zobrazovat v∞t╣φm a barevn²m pφsmem.
Klikneme na hlavnφ formulß° a dvojit∞ klikneme na tlaΦφtko (budeme
vytvß°et jeho obsluhu). Obsluha tlaΦφtka bude tvo°ena p°φkazem:
DruhyForm->ShowModal();
Kdy╛ nynφ spustφme program, pak p°ekladaΦ nßm oznamuje, ╛e nalezl nedefinovan²
symbol DruhyForm. Toto je ale nß╣ druh² formulß°. Mßme nynφ dva
zdrojovΘ soubory, ka╛d² s hlaviΦkov²m souborem. ProblΘm je ten, ╛e jednotka
Hlavni
nevidφ deklaraci (hlaviΦkov² soubor) jednotky Druhy. Kdy╛ se podφvßme
na zaΦßtek jednotky Hlavni, pak vidφme tyto °ßdky:
#include <vcl.h>
#pragma hdrstop
#include "Hlavni.h"
//--------------------------------------------------------------
Vidφme zde pou╛itφ #include
"Hlavni.h", ale nikde nevklßdßme hlaviΦkov² soubor Druhy.h.
Je zapot°ebφ zvolit File | Include Unit Hdr, Φφm╛ zobrazφme dialogovΘ
okno Include Unit. V okn∞ vidφme seznam dostupn²ch jednotek. V tomto
dialogovΘm okn∞ se zobrazujφ pouze jednotky, kterΘ existujφ v projektu
a nejsou je╣t∞ vlo╛eny do aktußlnφ jednotky. Ji╛ vlo╛enΘ jednotky zde nejsou
uvßd∞ny. V na╣em p°φpad∞ je zde pouze jednotka Druhy. Vybereme ji
a stiskneme OK. Kdy╛ se podφvßme na zaΦßtek jednotky Hlavni,
pak zde vidφme:
#include <vcl.h>
#pragma hdrstop
#include "Hlavni.h"
#include "Druhy.h"
//--------------------------------------------------------------
Nynφ je ji╛ v╣e v po°ßdku, aplikaci m∙╛eme vyzkou╣et. Projekt si ulo╛te,
budeme jej je╣t∞ pot°ebovat.
P°i prßci s vφce formulß°i je pouze zapot°ebφ pomocφ volby File
| Include Unit Hdr zajistit vlo╛enφ hlaviΦkov²ch soubor∙ jednotek na
kterΘ se odkazujeme do zdrojov²ch jednotek formulß°e, ze kter²ch se odkazujeme.
-
Dßle se budeme zab²vat p°ekladem a sestavovßnφm projekt∙
v C++ Builderu. P°i ka╛dΘ volb∞ Run | Run C++ Builder p°eklßdß a
sestavuje nß╣ program. Nejsou ale p°eklßdßny v╣echny jednotky projektu,
ale pouze ty z nich, kterΘ byly zm∞n∞ny od poslednφho p°ekladu. Toto zkracuje
dobu trvßnφ p°ekladu. Informace o tom, kterΘ jednotky byly zm∞n∞ny jsou
udr╛ovßny automaticky C++ Builderem. Ne v╛dy ale chceme program spou╣t∞t.
Nap°. m∙╛eme chtφt program pouze p°elo╛it, abychom v∞d∞li, zda v n∞m nejsou
chyby. C++ Builder mß v nabφdce Project t°i volby (Compile Unit,
Make
a
Build), kterΘ lze pou╛φt pro p°eklad programu (jsou zde dal╣φ
volby pro p°eklad skupiny projekt∙, ale t∞mi se zatφm nebudeme zab²vat).
Volba Project | Compile Unit zp∙sobφ p°eklad jednotky
prßv∞ zobrazenΘ v Editoru k≤du a v²pis v╣ech chyb a varovßnφ. Je to nejrychlej╣φ
zp∙sob testovßnφ na╣eho programu na chyby. Provßdφ se pouze p°eklad (bez
sestavovßnφ). Volba Project | Make p°eklßdß v╣echny jednotky zm∞n∞nΘ
od poslednφho p°ekladu a takΘ sestavuje cel² projekt. Prvnφ sestavenφ projektu
trvß dΘle ne╛ dal╣φ sestavenφ. To proto, ╛e inkrementaΦnφ sestavovacφ program
vytvß°φ v╣echny pot°ebnΘ soubory, kterΘ jsou pak pou╛φvßny pro zkrßcenφ
dal╣φch sestavovßnφ. Volba Project | Build trvß nejdΘle. Jsou p°elo╛eny
v╣echny jednotky projektu. Po p°ekladu v╣ech jednotek je cel² projekt sestaven.
Tento p°φkaz je pou╛φvßn pouze v²jimeΦn∞, nap°. po editaci vytvß°ecφho
souboru projektu. Je vhodnΘ jej takΘ pou╛φt p°i v²skytu r∙zn²ch nedefinovan²ch
chyb.
-
Formulß°e m∙╛eme rozd∞lit do n∞kolika skupin. Formulß°e jsou
hlavnφmi vytvß°ecφmi bloky aplikacφ C++ Builderu. Ka╛dß aplikace GUI mß
alespo≥ jeden formulß°, kter² slou╛φ jako hlavnφ okno. Hlavnφ okno m∙╛e
b²t prßzdnΘ, m∙╛e b²t zapln∞no ovladaΦi nebo m∙╛e mφt na sob∞ zobrazenou
bitovou mapu. Hlavnφ okno b²vß v∞t╣inou vybaveno nabφdkou a m∙╛e mφt takΘ
stavov² °ßdek a paletu nßstroj∙. Hlavnφ okna r∙zn²ch aplikacφ se mohou
velmi li╣it.
-
R∙znß dialogovß okna pou╛φvanß v aplikacφch C++ Builderu
jsou takΘ formulß°e. Dialogovß okna se obvykle od normßlnφch oken v n∞kter²ch
v∞cech li╣φ:
-
Obvykle nenφ mo╛no m∞nit rozm∞ry dialogov²ch oken. Provßd∞jφ
specifickΘ funkce a zm∞na jejich velikosti nenφ vhodnß.
-
Dialogovß okna v∞t╣inou majφ tlaΦφtko OK. N∞kterß
dialogovß okna mohou mφt jinΘ tlaΦφtko, nap°. Close, Save
nebo Open, kterΘ mß stejn² v²znam jako OK. Jednoduchß dialogovß
okna obvykle majφ pouze tlaΦφtko OK.
-
Dialogovß okna mohou mφt takΘ tlaΦφtko Cancel a tlaΦφtko
Help.
-
Dialogovß okna obvykle majφ na titulnφm °ßdku pouze systΘmovΘ
tlaΦφtko k uzav°enφ okna (nenφ je mo╛no minimalizovat nebo maximalizovat).
-
N∞kterß dialogovß okna mohou mφt n∞kolik strßnek, mezi nimi╛
u╛ivatel m∙╛e volit. Kliknutφm na zßlo╛ku strßnky je p°φslu╣nß strßnka
zobrazena a je mo╛no ji pou╛φvat.
-
Pomocφ klßvesy Tab je mo╛no se p°esunout z jednoho ovladaΦe
na dal╣φ.
Dialogovß okna v C++ Builderu se li╣φ od dialogov²ch oken
v jin²ch programovacφch prost°edφch. V jin²ch programovacφch prost°edφch
jsou dialogovß okna vytvß°ena Editorem dialogov²ch oken. V mnoha p°φpadech
Editor dialogov²ch oken je vizußlnφ nßstroj, kter² pracuje podobn∞ jako
Nßvrhov² formulß° C++ Builderu. Vytvo°enΘ dialogovΘ okno je zde definovßno
skriptem souboru zdroj∙.
Dialogovß okna v C++ Builderu jsou normßlnφ formulß°e.
K zabrßn∞nφ zm∞ny velikosti okna zm∞nφme vlastnost BorderStyle na
bsDialog
nebo bsSingle. Pokud pou╛ijeme bsDialog, pak dialogovΘ okno
bude mφt na titulnφm °ßdku pouze uzavφracφ tlaΦφtko. V╣echny formulß°e
C++ Builderu majφ podporu pro p°echod na dal╣φ ovladaΦ p°i stisku klßvesy
Tab.
Dialogovß okna C++ Builderu mohou b²t modßlnφ nebo nemodßlnφ.
Modßlnφ dialogovΘ okno musφ b²t uzav°eno d°φve, ne╛ u╛ivatel m∙╛e pokraΦovat
v pou╛φvßnφ aplikace (pokud je modßlnφ okno otev°eno, pak zb²vajφcφ Φßst
aplikace je nefunkΦnφ). P°i nemodßlnφm dialogovΘm oknu, je mo╛no pracovat
v tomto okn∞ a takΘ ve zb²vajφcφ Φßsti aplikace. To zda dialogovΘ okno
se bude chovat jako modßlnφ nebo nemodßlnφ je urΦeno tφm, zda okno je zobrazeno
metodou ShowModal (modßlnφ) nebo Show (nemodßlnφ).
-
Nynφ se vrßtφme k na╣emu projektu ViceForm (zobrazovßnφ druhΘho
formulß°e). K tomuto projektu p°idßme okno O aplikaci. Pokud tento
projekt ji╛ nemßme otev°en, pak jej otev°eme volbou File | Open Project.
K otev°enφ lze takΘ pou╛φt volbu File | Reopen (zobrazφme seznam
nejposledn∞ji pou╛φvan²ch projekt∙ a soubor∙, ze kterΘho si m∙╛eme otevφran²
projekt vybrat; seznam mß dv∞ Φßsti, v hornφ Φßsti jsou projekty, ve spodnφ
soubory). Nejprve na hlavnφ formulß° p°idßme tlaΦφtko pro zobrazovßnφ vytvß°enΘho
dialogovΘho okna. Zm∞nφme jeho vlastnosti Name na OAplTlacitko
a
vlastnost Caption na O aplikaci. Obsluha stisku tohoto tlaΦφtka
bude tvo°ena p°φkazem:
OknoOApl->ShowModal();
Dßle budeme pokraΦovat v²vojem na╣eho dialogovΘho okna. Vytvo°φme nov²
formulß° (volba File | New Form) a jeho rozm∞ry zmen╣φme asi na
polovinu. Vlastnost Name zm∞nφme na OknoOApl, vlastnost Caption
na O aplikaci a vlastnost BorderStyle na bsDialog.
Do okna p°idßme komponenty Label podle nßsledujφcφho obrßzku.
Znak pro oznaΦenφ autorsk²ch prßv (c v krou╛ku) mß k≤d 169 a je mo╛no
jej zadat pomocφ klßvesy Alt (Alt + 0169). Na formulß° dßle p°idßme obrßzek
ikony. Na formulß° vlo╛φme komponentu Image a umφstφme ji podle
dal╣φho obrßzku. Vlastnost
AutoSize u nφ zm∞nφme na true
a dvojit∞ klikneme na hodnotu vlastnosti Picture. V zobrazenΘm okn∞
editoru stiskneme tlaΦφtko
Load, p°ejdeme do adresß°e
Program
Files\Common Files\Borland Shared\Images\Icons a vybereme zde n∞jakou
ikonu.
Do spodnφ Φßsti formulß°e umφstφme komponentu BitBtn a vodorovn∞
ji vycentrujeme pomocφ Palety zarovnßvßnφ. Vlastnost Kind u nφ nastavφme
na bkOK. Tφm je vytvß°enφ tlaΦφtka hotovo. TlaΦφtko obsahuje k≤d
k uzav°enφ okna.
Okolo text∙ umφstφme je╣t∞ rßmeΦek. Ten je tvo°en komponentou Bevel.
Vybereme tuto komponentu a namφsto kliknutφ na formulß°i, tßhneme my╣φ
rßmeΦek okolo text∙ na formulß°i. Dßle u komponenty Bevel zm∞nφme
vlastnost Shape na bsFrame.
Nynφ ji╛ m∙╛eme formulß° dialogovΘho okna ulo╛it (volba File | Save)
a dßme mu jmΘno OAplikaci. Je╣t∞ je zapot°ebφ do jednotky hlavnφho
formulß°e vlo╛it hlaviΦkov² soubor vytvo°enΘho dialogovΘho okna. P°ejdeme
do Editoru k≤du (stiskem F12) a vybereme strßnku Hlavni.cpp. Zvolφme
File
| Include Unit Hdr, vybereme jednotku OAplikaci a stiskneme
OK.
Nynφ ji╛ program m∙╛eme vyzkou╣et.
T°φdy spoleΦn²ch dialogov²ch oken (TOpenDialog, TSaveDialog,
apod) nejsou vytvo°eny jako formulß°e. Windows poskytuje tato dialogovß
okna jako mno╛inu oken, kterou je mo╛no pou╛φvat ve v╣ech Windowsovsk²ch
aplikacφch (jejich definice je ulo╛ena v souboru COMDLG32.DLL). T°φdy dialogov²ch
oken VCL zaobalujφ tato okna a usnad≥ujφ jejich pou╛φvßnφ.
-
Sekundßrnφ okno je formulß°, kter² je zobrazovßn z hlavnφho
okna. V C++ Builderu nenφ rozdφl mezi sekundßrnφm oknem a dialogov²m oknem.
V jin²ch programovacφch prost°edφch musφme specifikovat, zda se jednß o
sekundßrnφ nebo dialogovΘ okno.
-
Zatφm jsme se zab²vali pouze SDI (Single Document Interface)
aplikacemi. SDI aplikace majφ jedno hlavnφ okno a obvykle podle pot°eby
zobrazujφ dialogovß okna, ale nezobrazujφ pod°φzenß okna. N∞kterΘ programy
pou╛φvajφ model MDI (Multiple Document Interface). MDI aplikace obsahujφ
hlavnφ okno a pod°φzenß okna. P°φkladem MDI aplikace je textov² editor
Word (m∙╛e zde b²t souΦasn∞ otev°eno vφce dokument∙). Pod°φzenß okna je
mo╛no p°emis╗ovat pouze uvnit° hlavnφho okna. MDI aplikace obvykle majφ
v nabφdce volbu Window (Okno) s volbami, kterΘ umo╛≥ujφ pod°φzenß
okna rozmis╗ovat a urΦovat aktivnφ pod°φzenΘ okno. P°i minimalizaci pod°φzenΘho
okna, je ikona okna obsa╛ena v hlavnφm okn∞. MDI aplikacemi se budeme zab²vat
pozd∞ji.
-
V dal╣φm p°φkladu si ukß╛eme pou╛itφ ╣ablony dialogovΘho okna. Vytvo°φme
nov² prßzdn² projekt, zvolφme File | New, na strßnce Dialogs
zvolφme PasswordDialog a stiskneme OK. Tφm jsme k na╣emu
projektu p°idali dal╣φ formulß° (formulß° pro zadßvßnφ hesla). Zobrazte
tento p°idan² formulß° (╣ablonu) a vyberte v nφ editaΦnφ komponentu. Podφvejte
se na vlastnost PasswordChar tΘto komponenty. Hodnota vlastnosti
je *. Kdy╛ u╛ivatel bude zapisovat do tΘto komponenty n∞jak² text, bude
namφsto ka╛dΘho zapsanΘho znaku zobrazen znak hv∞zdiΦky. Tyto Φinnosti
jsou ji╛ nadefinovanΘ v pou╛itΘ ╣ablon∞.
Na nß╣ p∙vodnφ formulß° p°idßme tlaΦφtko a vygenerujeme obsluhu stisku
tohoto tlaΦφtka. Do obsluhy vlo╛φme p°φkaz:
PasswordDlg->ShowModal();
Do jednotky hlavnφho formulß°e je je╣t∞ nutno vlo╛it hlaviΦkov² soubor
dialogovΘho okna. Nynφ ji╛ aplikaci m∙╛eme spustit a vyzkou╣et zadßvßnφ
hesla. V tomto p°φklad∞ jsme si ukßzali pou╛itφ ╣ablon, tj. ji╛ d°φve vytvo°en²ch
formulß°∙, ve kter²ch m∙╛eme i n∞co dod∞lat.
-
V dob∞ nßvrhu jsou dialogovß okna normßlnφ formulß°e. P°i b∞hu aplikace
mohou b²t modßlnφ nebo nemodßlnφ. V∞t╣ina dialogov²ch oken je modßlnφch.
P°i nemodßlnφm spu╣t∞nφ m∙╛e u╛ivatel pou╛φvat libovoln² formulß° na obrazovce.
M∙╛eme nap°. vytvo°it nemodßlnφ formulß° k zobrazovßnφ stavov²ch informacφ.
Pokud po╛adujeme, aby nemodßlnφ okno bylo stßle zobrazeno nad ostatnφmi
okny, nastavφme jeho vlastnost
FormStyle na hodnotu fsStayOnTop.
Vytvo°φme nov² prßzdn² projekt, na formulß° p°idßme tlaΦφtko a vytvo°φme
obsluhu stisku tohoto tlaΦφtka s k≤dem:
AboutBox->Show();
K projektu p°idßme dßle ze zßsobnφku formulß°∙ okno About (zvolφme
File
| New a na strßnce Forms vybereme About Box) a
volbou File | Include File Hdr p°idßme k Unit1 hlaviΦkov²
soubor
Unit2. Nynφ ji╛ aplikaci m∙╛eme spustit a vyzkou╣et si chovßnφ
nemodßlnφho dialogovΘho okna (okno About nelze uzav°φt). M∙╛ete
takΘ vyzkou╣et zm∞nu chovßnφ kdy╛ vlastnost FormStyle okna About
zm∞nφme na hodnotu fsStayOnTop.
-
Pokud v na╣φ aplikaci zm∞nφme obsluhu tlaΦφtka na
AboutBox->ShowModal();
pak okno bude zobrazeno v modßlnφm stavu. Vyzkou╣ejte chovßnφ modßlnφho
okna. Zp∙sob zobrazenφ neovliv≥uje vzhled okna.
-
T°φda TForm mß mnoho vlastnostφ. N∞kterΘ z t∞chto
vlastnostφ jsou zastaralΘ a z°φdka pou╛φvanΘ, jinΘ se pou╛φvajφ Φasto.
Nynφ se seznßmφme s Φasto pou╛φvan²mi vlastnostmi. Vynechßme p°itom vlastnosti,
kterΘ nßm jsou ji╛ znßmΘ (Color, Left, Top, Width
a Height). Nejprve se budeme zab²vat vlastnostmi pou╛iteln²mi jak
p°i nßvrhu, tak i p°i b∞hu aplikace.
-
Vlastnost ActiveControl je pou╛φvßna k urΦenφ ovladaΦe,
kter² mß b²t aktivnφ (mß zaost°enφ) p°i aktivovßnφ formulß°e. Nap°. m∙╛eme
po╛adovat, aby jist² editaΦnφ ovladaΦ m∞l zaost°enφ p°i zobrazenφ dialogovΘho
okna. Hodnota tΘto vlastnosti m∙╛e b²t n∞kterß komponenta formulß°e.
-
Vlastnosti AutoScroll, HorizScrollBar a VertScrollBar
°φdφ posuvnφky formulß°e. Pokud AutoScroll je nastaven na true
(implicitn∞), pak posuvnφky jsou zobrazeny automaticky, kdy╛ v╣echny ovladaΦe
se nevejdou na zobrazenou Φßst formulß°e. Dal╣φ dv∞ vlastnosti °φdφ zobrazovßnφ
vodorovnΘho resp. svislΘho posuvnφku formulß°e.
-
Vlastnost BorderStyle urΦuje typ rßmu formulß°e. Implicitnφ
hodnota
bsSizeable vytvß°φ okno, u n∞ho╛ je mo╛no m∞nit velikost.
-
Pomocφ vlastnostφ ClientWidth a ClientHeight
m∙╛eme specifikovat rozm∞ry klientskΘ oblasti (vnit°ku) formulß°e. Nastavenφm
t∞chto vlastnostφ se automaticky zm∞nφ vlastnosti Width a Height.
-
Vlastnost Font specifikuje pφsmo, kterΘ formulß° pou╛φvß.
Je d∙le╛itΘ pochopit, ╛e pφsmo formulß°e je d∞d∞no v╣emi komponentami vlo╛en²mi
na formulß°. To takΘ znamenß, ╛e m∙╛eme zm∞nit pφsmo v╣ech komponent formulß°e
zm∞nou hodnoty vlastnosti pφsma formulß°e. Pokud pφsma jednotliv²ch ovladaΦ∙
zm∞nφme, pak nejsou pφsmem formulß°e ovliv≥ovßny.
-
Vlastnost FormStyle je obvykle nastavena na fsNormal.
Pokud po╛adujeme, aby formulß° byl stßle zobrazovßn nad ostatnφmi okny,
pak tuto vlastnost nastavφme na fsStayOnTop. Hlavnφ formulß°e MDI
musφ zde mφt hodnotu fsMDIForm a pod°φzenß okna MDI hodnotu fsMDIChild.
-
Vlastnost HelpContext je pou╛ita k nastavenφ identifikace
kontextu nßpov∞dy pro formulß°. Pokud je kontextovß nßpov∞da pro formulß°
povolena, pak nßpov∞dn² systΘm je aktivovßn p°i stisku klßvesy F1. Identifikace
kontextu pak urΦuje zobrazenou strßnku nßpov∞dy.
-
Vlastnost Icon urΦuje ikonu pou╛itou na titulnφm °ßdku
okna a p°i minimalizovanΘm formulß°i. V n∞kter²ch p°φpadech nastavenφ tΘto
vlastnosti nemß ╛ßdn² efekt. Nap°. kdy╛ FormStyle je nastaveno na
fsDialog,
pak vlastnost Icon je ignorovßna.
-
Vlastnost Position urΦuje velikost a pozici formulß°e
p°i jeho prvnφm zobrazenφ. Jsou zde mo╛nΘ t°i volby. Hodnota poDesigned
zp∙sobφ zobrazenφ formulß°e ve stejnΘ pozici jako byl navr╛en. P°i poDefault
urΦuje velikost a pozici okna Windows. Volba poScreenCenter zp∙sobuje
zobrazovßnφ formulß°e v╛dy uprost°ed obrazovky.
-
Vlastnost Visible urΦuje, zda formulß° je viditeln².
P°i nßvrhu tuto vlastnost asi pou╛φvat nebudeme, ale za b∞hu umo╛≥uje zjistit
viditelnost formulß°e. M∙╛eme ji takΘ pou╛φvat k ukrytφ nebo zobrazenφ
formulß°e.
-
Vlastnost WindowState m∙╛e b²t pou╛ita k zji╣t∞nφ
souΦasnΘho stavu formulß°e (minimalizovan², maximalizovan² nebo normßlnφ).
M∙╛e jφ takΘ urΦit, jak bude formulß° poprvΘ zobrazen. Mo╛nΘ hodnoty jsou:
wsMinimized,
wsMaximized
a wsNormal.
N∞kterΘ vlastnosti jsou p°φstupnΘ pouze za b∞hu prost°ednictvφm
k≤du. Nejd∙le╛it∞j╣φ z nich jsou tyto vlastnosti:
-
Vlastnost ActiveMDIChild obsahuje ukazatel na souΦasnΘ
aktivnφ pod°φzenΘ okno MDI. Tato vlastnost je urΦena pouze pro Φtenφ. Pokud
nenφ aktivnφ okno MDI nebo pokud se nejednß o aplikaci MDI, pak tato vlastnost
mß hodnotu NULL.
-
Vlastnost Canvas reprezentuje kreslφcφ plochu formulß°e.
Tato vlastnost umo╛≥uje p°istupovat na plßtno formulß°e, tzn. umo╛≥uje
zobrazovat bitovΘ mapy, kreslit Φßry, tvary apod. Umo╛≥uje takΘ uklßdat
obrßzek na disk.
-
Vlastnost ClientRect obsahuje hornφ, levou, pravou
a spodnφ sou°adnici klientskΘ oblasti formulß°e. Tato vlastnost je u╛iteΦnß
v r∙zn²ch situacφch. Nap°. umo╛≥uje zjistit v²╣ku a ╣φ°ku klientskΘ oblasti
pro umis╗ovßnφ bitovΘ mapy do st°edu formulß°e.
-
Vlastnost Handle vracφ madlo okna formulß°e (HWND).
Tuto vlastnost pou╛ijeme, kdy╛ pot°ebujeme madlo okna p°edat API funkci
Windows.
-
Vlastnost ModalResult pou╛φvßme k zjist∞nφ, jak byl
uzav°en modßlnφ formulß°. Pokud dialogovΘ okno mß tlaΦφtka OK a
Cancel
pak m∙╛eme nastavit ModalResult na mrOK, kdy╛ u╛ivatel stiskne
tlaΦφtko OK a na mrCancel, kdy╛ u╛ivatel stiskne Cancel.
Volajφcφ formulß° pak p°eΦtenφm ModalResult m∙╛e zjistit, kter²m
tlaΦφtkem bylo okno uzav°eno. Dal╣φ mo╛nΘ hodnoty jsou mrYes, mrNo
a mrAbort.
-
Vlastnost Owner je ukazatel na vlastnφka formulß°e.
Vlastnφk formulß°e je zodpov∞dn² za zru╣enφ formulß°e, pokud formulß° ji╛
nenφ zapot°ebφ. Vlastnost Parent je ukazatel na nad°φzen² formulß°
(formulß° nebo jinß komponenta, kterß je kontejnerem pro dal╣φ komponenty).
V p°φpad∞ hlavnφho formulß°e vlastnosti Owner a Parent jsou
ob∞ objekt aplikace. V p°φpad∞ komponenty, vlastnφk je formulß°, ale nad°φzenß
komponenta m∙╛e b²t nap°. panel.
-
Formulß°e jsou takΘ komponenty. Formulß°e majφ mnoho metod
spoleΦn²ch s komponentami. SpoleΦnΘ metody jsou nap°. Show, ShowModal
a Invalidate. Jsou ale metody, kterΘ existujφ pouze pro formulß°e.
Nßsleduje popis nejΦast∞ji pou╛φvan²ch metod formulß°e:
-
Metoda BringToFront zp∙sobφ p°esun formulß°e nad ostatnφ
formulß°e aplikace.
-
Metoda Close uzavφrß formulß°. Nejprve volß metodu
CloseQuery
k zji╣t∞nφ, zda formulß° m∙╛e b²t uzav°en. CloseQuery volß obsluhu
udßlosti OnCloseQuery. Pokud logickß prom∞nnß p°edanß obsluze udßlosti
OnCloseQuery
je nastavena na false, pak formulß° nem∙╛e b²t uzav°en. Obsluhu
udßlosti OnCloseQuery m∙╛eme pou╛φt k zobrazenφ dotazu, zda ulo╛it
soubory nebo provΘst n∞jakΘ jinΘ akce.
-
Metoda Print tiskne obsah formulß°e. Je ti╣t∞na pouze
klienskß oblast.
-
Metoda ScrollInView roluje formulß°em tak, aby specifikovanß
komponenta byla vidilelnß.
-
Metoda SetFocus aktivuje formulß° a p°esouvß jej nad
ostatnφ formulß°e. Pokud u formulß°e je specifikovßna vlastnost ActiveControl,
pak touto vlastnostφ urΦenß komponenta zφskß zaost°enφ.
-
Metody Show a ShowModal zobrazujφ formulß°
(nemodßln∞ nebo modßln∞).
-
Existuje n∞kolik metod pro MDI operace. Metoda ArrangeIcons
aran╛uje ikony minimalizovan²ch pod°φzen²ch oknen MDI v nad°φzenΘm okn∞.
Metoda
Cascade
upravuje rozmφst∞nφ v╣ech neminimalizovan²ch pod°φzen²ch
oken do kaskßdy. Metoda
Tile rozmφstφ pod°φzenß okna jako dla╛dice.
Metoda Next aktivuje nßsledujφcφ pod°φzenΘ okno a metoda Previous
p°edchozφ pod°φzenΘ okno. Tyto metody je mo╛no aplikovat pouze na nad°φzenΘ
okno MDI.
-
Formulß°e mohou reagovat na r∙znΘ udßlosti. Nßsleduje popis
nejΦast∞ji pou╛φvan²ch udßlostφ:
-
Udßlost OnActivate vznikne, kdy╛ formulß° je aktivovßn.
Formulß° je aktivovßn po vytvo°enφ nebo kdy╛ se u╛ivatel p°epne z jednoho
formulß°e do jinΘho. Object Application mß takΘ udßlost OnActivate,
kterß je generovßna p°i p°epnutφ z jednΘ aplikace do jinΘ.
-
P°i uzavφrßnφ aplikace je zaslßna udßlost OnClose.
OnClose
volß udßlost OnCloseQuery k zji╣t∞nφ, zda je formulß° mo╛no uzav°φt.
-
Udßlost OnCreate vznikß p°i vytvß°enφ formulß°e. Tato
udßlost pro jist² formulß° nastßvß pouze jednou. M∙╛eme ji vyu╛φt k provedenφ
nastavovacφch akcφ formulß°e, kterΘ je nutno v╛dy provΘst.
-
Udßlost OnDestroy je opakem OnCreate. Tuto
udßlost pou╛φvßme k ru╣enφ v╣eho, co formulß° alokoval dynamicky.
-
Udßlost OnDragDrop nastßvß p°i vlo╛enφ ta╛enΘho objektu
na formulß°. Pokud nß╣ formulß° podporuje ta╛enφ, pak musφme na tuto udßlost
reagovat.
-
Udßlosti OnMouseDown, OnMouseMove a OnMouseUp
nastßvajφ p°i stisku tlaΦφtka my╣i, p°esunu my╣i a uvoln∞nφ tlaΦφtka my╣i
na formulß°i.
-
Udßlost OnPaint nastßvß, kdy╛ formulß° pot°ebuje p°ekreslit.
To m∙╛e nastat z r∙zn²ch d∙vod∙. Obsluha tΘto udßlosti musφ provΘst op∞tovnΘ
nakreslenφ v╣eho, co jsme na formulß° nakreslili (komponenty se kreslφ
samy).
-
Udßlost OnResize vznikß p°i zm∞n∞ rozm∞r∙ formulß°e.
Na tuto udßlost m∙╛eme reagovat p°emφst∞nφm komponent nebo p°ekreslenφm
formulß°e.
-
Udßlost OnShow vznikne p°ed tφm, ne╛ se formulß° stane
viditeln²m. Tuto udßlost m∙╛eme pou╛φt k provedenφ n∞jak²ch akcφ, kterΘ
nß╣ formulß° pot°ebuje ud∞lat p°ed zobrazenφm.
P°i vytvß°enφ formulß°e je generovßno mnoho r∙zn²ch udßlostφ.
Je d∙le╛itΘ v∞d∞t v jakΘm po°adφ jsou tyto udßlosti generovßny. Toto po°adφ
je:
-
volßnφ konstruktoru formulß°e
-
OnCreate
-
OnShow
-
OnActivate
P°i ru╣enφ formulß°e jsou udßlosti generovßny v tomto po°adφ:
-
OnCloseQuery
-
OnClose
-
OnDestroy
-
volßnφ destruktoru formulß°e (je-li).
Toto po°adφ je v n∞kter²ch p°φpadech d∙le╛itΘ. Nenφ nap°.
mo╛no pou╛φvat v p°edchozφ obsluze udßlosti n∞jak² objekt, kter² bude vytvo°en
a╛ v dal╣φ udßlosti.
-
Prvnφ formulß°, kter² vytvo°φme se stßvß hlavnφm formulß°em projektu a
je prvnφm formulß°em vytvo°en²m po spu╣t∞nφ aplikace. M∙╛eme ale po╛adovat
jin² hlavnφ formulß°. Ke zm∞n∞ hlavnφho formulß°e projektu zvolφme Project
| Options, p°ejdeme na strßnku Forms a urΦφme nov² hlavnφ formulß°.
Na stejnΘ strßnce tohoto dialogovΘho okna m∙╛eme takΘ urΦit, kterΘ formulß°e
budou automaticky vytvß°eny po spu╣t∞nφ aplikace a po°adφ jejich vytvß°enφ
(vytvß°enΘ formulß°e jsou uvedeny v Φßsti Auto-Create Forms a jsou
vytvß°eny v uvedenΘm po°adφ).
-
Pou╛φvßnφ modßlnφch a nemodßlnφch formulß°∙ si ukß╛eme v dal╣φ aplikaci.
Hlavnφ formulß° bude obsahovat text (komponentu Label) ?Toto
je hlavnφ formulß° aplikace? a dv∞ tlaΦφtka: ?Otev°i
modßlnφ formulß°? a ?Otev°i nemodßlnφ formulß°?.
Po p°idßnφ dvou nov²ch formulß°∙ do projektu volbou File | New Form
(nazveme
je Modalni a Nemodalni; vlastnost Name formulß°e)
m∙╛eme napsat obsluhy stisku tlaΦφtek. Pro Otev°i modßlnφ formulß°
bude obsluha tvo°ena p°φkazy:
TModalni *Modal =
new TModalni(this);
Modal->ShowModal();
Modal->Free();
Pro druhΘ tlaΦφtko to jsou p°φkazy:
TNemodalni *Nemodal
= new TNemodalni(this);
Nemodal->Show();
Po zav°enφ modßlnφho formulß°e se ukonΦφ metoda ShowModal a
formulß° je uvoln∞n z pam∞ti. Metoda Show je ukonΦena okam╛it∞ a
formulß° z pam∞ti uvolnit nelze, nebo╗ je stßle zobrazen. Nemodßlnφ formulß°e
jsou z pam∞ti uvoln∞ny a╛ p°i uzav°enφ hlavnφho formulß°e. Nenφ to sice
nejlep╣φ °e╣enφ, ale zatφm jej pou╛ijeme. Oba na╣e dal╣φ formulß°e budou
obsahovat tlaΦφtko Zav°φt a text ?Modßlnφ
formulß° resp. ?Nemodßlnφ formulß°.
Obsluha stisku tlaΦφ?. Zav°φt je tvo°ena pouze volßnφm metody Close.
Modßlnφ formulß° bude mφt je╣t∞ tlaΦφtko ?Otev°i
dal╣φ modßlnφ formulß° pro vytvo°enφ dal╣φho (stejnΘho) modßlnφho
formulß°e (u nemodßlnφch formulß°∙ to nenφ zapot°ebφ, nebo╗ opakovan²m
stiskem tlaΦφtka na hlavnφm formulß°i lze vytvo°it vφce stejn²ch nemodßlnφch
formulß°∙). Obsluha stisku tohoto tlaΦφtka je tvo°ena p°φ?
TModalni *DalsiModal
= new TModalni(this);
DalsiModal->ShowModal();
DalsiModal->Free();
Hlavnφ formulß° pou╛φvß oba dal╣φ formulß°e a musφme tedy do Unit1
vlo╛it hlaviΦkovΘ soubory Unit2 a Unit3 (File | Include
Unit Hdr). Objekty dialogov²ch oken vytvß°φme sami (operßtorem new)
a m∙╛eme tedy odstranit k≤d, kter² Builder automaticky generuje pro definovßnφ
objektu formulß°e. V obou programov²ch jednotkßch t∞chto formulß°∙ tedy
musφme odstranit deklaraci TModalni
Modalni; resp. TNemodalni
Nemodalni; a je nutno zru╣it automatickΘ vytvß°enφ t∞chto
formulß°∙. V dialogovΘm okn∞ Project Options na strßnce Forms
p°esuneme jmΘna t∞chto dvou formulß°∙ z levΘho do pravΘho sloupce. Nynφ
ji╛ m∙╛eme na╣i aplikaci vyzkou╣et a vytvo°it n∞kolik modßlnφch a nemodßlnφch
formulß°∙ a zjistit, jak s nimi lze pracovat. Nenφ ale vhodnΘ t∞chto oken
vytvß°et mnoho (z d∙vodu spot°eby systΘmov²ch zdroj∙), maximßln∞ asi 10.
-
V zßvislosti na uva╛ovanΘm pou╛itφ dialogovΘho okna, je nutno
do okna umφstit tlaΦφtka (nap°. tlaΦφtko OK a Cancel). Nastavenφ
vlastnostφ komponent tlaΦφtek (vlastnosti Cancel a Default)
umo╛≥uje volat k≤d obsluhy udßlosti stisku tlaΦφtka, kdy╛ u╛ivatel stiskne
klßvesu
Esc nebo Enter. Nap°. kdy╛ formulß° obsahuje tlaΦφtko
s nastavenou vlastnostφ
Default na true, pak stisk klßvesy
Enter
spustφ k≤d obsluhy udßlosti
OnClick pro toto tlaΦφtko, pokud n∞kterΘ
jinΘ tlaΦφtko nenφ zaost°eno. Existuje-li jinΘ zaost°enΘ tlaΦφtko, pak
stisk klßvesy
Enter zp∙sobφ provedenφ obsluhy udßlosti OnClick
zaost°enΘho tlaΦφtka.
Modßlnφ okno bude automaticky uzav°eno, kdy╛ u╛ivatel
stiskne n∞kterΘ tlaΦφtko s nenulovou hodnotou vlastnostφ ModalResult.
R∙znΘ hodnoty tΘto vlastnosti takΘ umo╛≥ujφ urΦit, kter²m tlaΦφtkem bylo
okno uzav°eno. Nap°. mßme-li tlaΦφtko Cancel, nastavφme jeho vlastnost
ModalResult
na mrCancel a pokud nß╣ formulß° obsahuje dßle tlaΦφtko OK,
nastavφme jeho ModalResult na mrOK. Ob∞ tlaΦφtka lze nynφ
pou╛φt k uzav°enφ okna a hodnota vlastnosti ModalResult pou╛itΘho
tlaΦφtka je nßvratovß hodnota funkce ShowModal. Testovßnφm hodnoty
funkce ShowModal lze zjistit, kter²m tlaΦφtkem bylo okno uzav°eno.
V mnoha p°φpadech m∙╛eme vytvß°et tlaΦφtka pomocφ komponenty
BitBtn
pouh²m nastavenφm vlastnosti Kind (urΦφme tφm text zobrazen² na
tlaΦφtku a hodnotu vlastnosti ModalResult).