Podobné dokumenty

1.2 Realizace èekání pomocí jednoduché programové smyèky Pøíklad 3: Chceme-li, aby dítì blikalo baterkou v co nejpøesnìjším intervalu, øekneme mu: Roz

VLASTNOSTI PLOŠNÝCH SPOJÙ

Skládaèka Obr 48 G15 VBP Co to dìlá: Naète vybraný obrázek (vybraný pomocí CommonDialog1), vytvoøí MxN komponent PictureBox obsahujících odpovídající


Vytváøení sí ového diagramu z databáze: pøíklad


0RW\O3LFWXUH%R[ 7LPHU7LPHU


11 Elektrické specifikace Mezní parametry* Okolní teplota pøi zapojeném napájení 40 C až +125 C Skladovací teplota 65 C až +150 C Napájecí napìtí na V

kap..2 Plochy (Surfaces) Plochy jsou rozšíøením NURBS køivek. Zatímco køivka NURBS používala jednorozmìrnou interpolaci (U), u ploch je navíc pøidán d

12 15 Instalace mikroturbíny v blokové plynové výtopnì " ZADÁNO: Instalace mikroturbíny v blokové plynové výtopnì Zjistìte: 1 Zda je ekonomicky výhodn

Spínaèe jsou elektrické pøístroje, které slouží k zapínání, pøepínání a vypínání elektrických obvodù a spotøebièù. Podle funkce, kterou vykonávají, je





:5$ =islv GDW V DOWHUQDFt QHMY\ããtKRELWX


3/ %,1'(& 83'1 &( &3 )XQNFH. + ; ; ; ; / ; ; + ; EH]H]PuQ\


Izolaèní zesilovaèe s IL300 Zapojení izolaèních zesilovaèù s IL300 se liší pøedevším režimem v nichž pracují interní fotodiody Podle toho zda interní




4 GUIDE nástroj pro interaktivní tvorbu grafického rozhraní Kapitola 3 byla vìnována ruèní tvorbì grafických objektù Všechny grafické objekty vaší apl



Programovací manuál [CZ] Domovník [ACU 100] Elektronický identifikaèní systém


PESexcl. PODPORA PRO VÝMÌNU DAT S APLIKACÍ MICROSOFT EXCEL s využitím DDE serveru PESdde




9. Harmonické proudy pulzních usměrňovačů

3.1 Útlum atmosférickými plyny Rezonance molekul nekondenzovaných plynù obsažených v atmosféøe zpùsobuje útlum šíøících se elektromagnetických vln. Ab





NOiYHVQLFH SVDFtKR VWURMH Í (Q Ï Á. (VF ) )SURJUDPRYDWHOQpNOiYHV\) ) 3VF 6F/ 3DX NRQWURON\ ,QV +RPH 3J8S 7DE 'HO (QG 3J'Q &DSV/ (QWHU Í 6KLIW

NULOROVÉ MODELY Spokojíme-li se pouze se základní analýzou elektronického obvodu s ideálními prvky, osvìdèuje se èasto užití nulorových modelù aktivní

Roman Neruda a Tomáš Holan C++ BUILDER V PØÍKLADECH Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnožo

CTR pro optoèlen s LED a tranzistorem:,& &75 = [%] U, CE = const ) Obvykle CTR urèíme pøi I F = 10 ma a U CE = 5 V. Hodnoty zjistíme z tabulky.,& &75










T-Mobile SpeedManager. Postup nastavení T-Mobile SpeedManager pro PC/notebook


PDWHULiO FS>-NJ ±. FS>NFDONJ ± ƒ& VW teur åhoh]r FtQ KOLQtN N HPtN. OHG DONRKRO ROHM FFD FFD SHWUROHM UWX YRGD Y]GXFK YRGQtSiUD KHOLXP



Kapitola 3 UNIPOLÁRNÍ TRNZISTORY 3.1 Obecný popis Unipolární tranzistory s pøechodovým hradlem (JFET) MOSFET MOSFET zvláštní k

]PHQãLWIRQW ]Y WãLWIRQW QDVWDYLWIRQW XORåLWVRXERU Y\WLVNQRXWVRXERU Y\WYR LWQRYêVRXERU

KOMUNIKAÈNÍ DDE SERVER PRO AUTOMATY MICROPEL VERZE 2.3 POPIS ROZHRANÍ A OVLÁDÁNÍ


Øízený pøeklad - make

Obsah. ÈÁST I Vývojové prostøedí Visio





PESprint. TISKOVÁ BRÁNA SYSTÉMU PES aplikace pro komunikaèní procesor - PES-CP24/PRINT

Tabulka pro zaèáteèníky. Tabulka. zaèáteèníky. Zaèínáme s poèítaèem. Windows pro zaèáteèníky. Windows pro pokroèilé. Text pro zaèáteèníky

Skener MUSTEK SCANEXPRESS 1200UB+

4x kombinovaný analogový vstup s vysokou pøesností (0..10V, R, C)

OHGHQ ~QRU E H]HQ GXEHQ NY WHQ þhuyhq. SROROHWt


2 PARALELNÍ ROZHRANÍ Paralelní rozhraní realizuje pøenos dat mezi vnitøní sbìrnicí øídicího systému a vnìjším prostøedím po znacích, neboli po slabiká



nažhavováním elektronek, takže nedochází k neúmìrnému pøetìžování filtraèních kondenzátorù pøi nábìhu anodového proudu. Polovodièový usmìròovaè vytvoø

PESpro KOMPLEXNÍ VÝVOJOVÉ PROSTØEDÍ NA TVORBU A LADÌNÍ APLIKACÍ PRO AUTOMATY SYSTÉMU PES 02/2001

2 Deset jednoduchých zkušebních a indikaèních zapojení Na následujících stranách je vidìt, že i velmi jednoduchá zapojení se svìtelnými diodami mohou


([FHQWULFLWD 6WUPRVW

Rezervaèní systém pro restaurace

Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox

2.4 Cykly 2. ZÁKLADY JAZYKA C

KBD-SFTCFG Software pro digitální klávesnice øady IntuiKey. Návod k instalaci



Prostředí Microstationu a jeho nastavení. Nastavení výkresu

Plc Calculator. Nástroj pro automatizovaný návrh aplikace s automaty MICROPEL





UniLog-D. v1.01 návod k obsluze software. Strana 1



/2*,.$ 5(6(7 Ë=(1Ë +$/7 *(1(5È ',129é & 6./ $/8. ' /,ý. ýë7$ý 5(*,675 5(*, é. 6e5,29é 5(*,675 * $.808/È725 5:0. %8',ý(/ 45(*,675 5(*

Tepelné èerpadlo vzduch voda UŽIVATELSKÝ MANUÁL. urèeno pro sestavu LG:


Transkript:

Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby ètenáø vidìl, jakým zpùsobem je titul zpracován a mohl se také podle tohoto, jako jednoho z parametrù, rozhodnout, zda titul koupí èi ne). Z toho vyplývá, že není dovoleno tuto ukázku jakýmkoliv zpùsobem dále šíøit, veøejnì èi neveøejnì napø. umis ováním na datová média, na jiné internetové stránky (ani prostøednictvím odkazù) apod. redakce nakladatelství BEN technická literatura redakce@ben.cz

První program v Kylixu Obr 1 Program u01 dpr Co to dìlá: Jak: Skoro nic, ale se vší parádou Menu File/New Application Menu Run/Run Vysvìtlení: Jednou z vlastností objektového programování je, že se nemusíme starat o vìci, které nás nezajímají Tedy že nezaèínáme programovat z prázdna, ale upravujeme to, co již existuje Vìtšina vìcí má nìjaké implicitní hodnoty nebo chování a my se o nì zaèneme starat pouze tehdy, když s tímto implicitním øešením nebudeme spokojeni Tato aplikace tedy pøedstavuje implicitní program, umí zobrazit své okno, umí nechat zmìnit svoji velikost i polohu a umí se i nechat zavøít èímž ukonèí bìh programu, uvolní pamì atd atd prostì udìlá všechny ty vìci, o které se vìtšinou nechceme zajímat a vyhovuje nám, že je to nìjakým standardním zpùsobem vyøešeno Poznámky: Okno má implicitní chování i implicitní vlastnosti velikost, název (Form1), nadpis, implicitní je i název programu (Project1) Programy v Kylixu potøebují ke svému bìhu celou øadu knihoven Nìkteré z nich se dají zaèlenit do výsledného programu (z menu Project/Options vyvoláme dialog, v nìmž zrušíme zaškrtnutí políèka Packages/Build with runtime Packages), nìkteré nikoli A ÚVOD PRVNÍ PROGRAM V KYLIXU 11

Pokud máte nainstalovaný Kylix a naše programy budete spouštìt pøímo z jeho integrovaného vývojového prostøedí (IDE), nebudete se o knihovny muset starat Pokud budete pouštìt programy sami z pøíkazové øádky shellu, budete muset nastavit cestu ke knihovnám do systémové promìnné LD_LIBRARY_PATH: LD_LIBRARY_PATH=/usr/local/kylix2/bin export LD_LIBRARY_PATH (za pøedpokladu standardní instalace Kylixu 2 do adresáøe /usr/local/kylix2) Pokud Kylix nemáte nainstalovaný a pouštíte si naše pøeložené programy, doporuèujeme nejprve spustit instalaèní shell-skript install sh (najdete ho na CD v adresáøi KvP), který zkopíruje resp nalinkuje potøebné soubory do adresáøe /tmp Promìnná LD_LIBRARY_PATH potom bude muset mít hodnotu /tmp/kvp/lib Pokud chcete správnì vidìt a používat èeskou diakritiku, budete si muset rovnìž nastavit promìnnou LANG: LANG=czech export LANG Ani to však nemusí staèit Kylix je totiž velmi citlivý na pøesné nastavení èeštiny v X Window a i ve zdánlivì stejných prostøedích se nám obèas programy chovaly jinak (napø nezobrazovaly menu s èeskými písmenky) Kylix vychází z jiného vývojového prostøedí firmy Borland urèeného pro platformu MS Windows, z Delphi Tato dvì prostøedí jsou si velmi podobná, nicménì jsou mezi nimi mírné odlišnosti Pokud na nì narazíme v našich pøíkladech, zmíníme se o tom v poznámce (Abychom byli zcela korektní, Delphi od verze 6 mají dvojí knihovny VCL a CLX pøièemž CLX je prakticky shodná s knihovnami Kylixu Budeme-li tedy nadále hovoøit o Delphi, budeme mít na mysli VCL knihovny ) A když už je øeè o verzích Zaèali jsme naše pokusy s verzí 1, ale v té bylo ještì dost chyb Proto jsme pøešli na verzi 2, jakmile byla uvolnìna První dva díly knihy jsme ladili s Open Kylixem (volnì šiøitelnou verzí), pro zbylé dva díly tato verze nepostaèuje Pøíklady jsme proto pøipravovali v tzv Trial Kylixu (èasovì omezené plné verzi), definitivní pøeklad pro úèely knihy jsme provedli neomezenou plnou verzí, kterou nám zapùjèila firma Borland (dìkujeme!) V dobì vydání knihy se objevila verze 3, zkusili jsme v ní pøeložit všechny pøíklady (pøípadné zmìny oproti verzi 2 jsou v poznámkách), nicménì pøíklady jsme ponechali ve verzi 2 Trial verze Kylixu 3 je souèástí CD pøiloženého ke knize 12 KYLIX V PØÍKLADECH LIBOR FORST, TOMÁŠ HOLAN A

Komponenty Obr 2 Program u02 dpr Co to dìlá: Jak: Poøád nic užiteèného, ale vypadá to už opravdu opravdovì V horní èásti obrazovky, v hlavním oknì Kylixu (pokud jste si ho nepøemístili), leží Paleta komponent (pokud jste ji neschovali skoro všechno se dá zmìnit, takže budeme mluvit o standardním nastavení a standardních hodnotách a ta slova pokud si doplòujte sami) Obr 3 Paleta komponent Jednotlivé ikony na jednotlivých stránkách Palety komponent pøedstavují stavební prvky programù v Kylixu Jsou to objekty sloužící jako ovládací prvky nebo provádìjící nìjakou specializovanou èinnost, mohou být viditelné i neviditelné a jejich umístìním do okna Návrháøe formuláøe (Form designer, viz obr 4) øíkáme, že mají být obsaženy v oknì výsledného programu Umístìné komponenty potom, jakožto objekty, už mají své vlastnosti (property zajímavá vìc, pozdìji prozatím nìco jako promìnná), metody (souhrnné oznaèení pro A ÚVOD KOMPONENTY 13

Obr 4 Návrháø formuláøe procedury a funkce) a umí reagovat na nìkteré události (events) Napøíklad když jsme v Návrháøi formuláøe do svého okna umístili komponentu Edit1 typu TEdit, tato komponenta umí reagovat na události související s editací textu dovolí uživateli psát, vybírat úseky textu i používat schránku (clipboard) Podobnì je tomu s ostatními komponentami Vysvìtlení: Programování pod X Window je programování øízené událostmi Typický program se totiž v tomto prostøedí nechová tak, že nejdøíve naète veškerá vstupní data (a nepøestane, dokud je nedostane), pak provede výpoèet a pak data vytiskne Uživatel mùže aplikaci ovládat rùznými asynchronními zásahy (pohne myší, stiskne klávesu) a program musí umìt reagovat na tyto události Události pøitom mohou být jednoduché, odpovídající elementárním vstupním jevùm (tøeba právì stisk klávesy nebo pohyb myši) i složité (vnitøní pøíkazy, zprávy) a programy potom pracují tak, že jen pøijímají a zpracovávají události Napø nìkolik událostí pohybu a klikání myší v místech, kde je menu programu, vyústí ve složitìjší událost odpovídající položce z menu (tøeba naèíst data ze souboru), na tuto událost reaguje program tím, že skuteènì pøeète data ze souboru a uloží si je do svých promìnných, další klikání nebo stisky kláves mohou vyvolat událost provést výpoèet (souèástí zpracování této události by mìla být i kontrola, zda již byla naètena data) Takže programy obvykle v nìjaké smyèce èekají na událost, potom ji zpracují a èekají dál a mezi tím mohou totéž dìlat ostatní programy pracující na stejném poèítaèi Psaní takových programù tedy obvykle sestává z popisu reakcí na události 14 KYLIX V PØÍKLADECH LIBOR FORST, TOMÁŠ HOLAN A

Vlastnosti komponent Obr 5 Program u03 dpr Co to dìlá: Stále nic, ale komponenty mají nastaveny nìkteré vlastnosti Jak: Inspektorem objektù lze prohlížet i mìnit vlastnosti vybrané komponenty nebo okna Obr 6 Inspektor objektù vlastnosti A ÚVOD VLASTNOSTI KOMPONENT 15

Seznam vlastností, metod nebo událostí lze nalézt v nápovìdì (vybereme komponentu a stiskneme F1) Obr 7 Nápovìda v Kylixu Poznámky: Pokud se vám v posledních pøíkladech komponenty nevešly do okna, máte nastaveno jiné rozlišení obrazovky, než bylo na poèítaèi, kde se program vytváøel Formuláø hlavního okna si totiž pamatuje pùvodní rozlišení (vlastnost PixelsPerInch) a pøitom má nastavenu vlastnost Scaled, která øíká, že se pøi bìhu má program pokusit pøizpùsobit aktuálnímu rozlišení U oken s grafickými prvky to ale vìtšinou není žádoucí, jelikož se tím mìní proporce celého okna kromì obrázkù Napøíštì proto budeme tuto vlastnost nastavovat na FALSE Souèasnì je ovšem nutno nastavit na FALSE rovnìž vlastnost ParentFont, aby do (nezvìtšeného) okna nebyly umístìny (zvìtšené) fonty X Window Pokud byste si pøáli, aby se okno jinému rozlišení pøizpùsobovalo, ponechali byste obì vlastnosti nastaveny na TRUE, ale museli byste podle aktuálního rozlišení pøizpùsobovat velikost okna Rovnìž nìkteré další vlastnosti okna (minimální a maximální rozmìr, tvar a ovládací prvky okraje, umístìní pøi startu aj ) lze nastavit pomocí vlastností hlavního formuláøe Ovšem napø pøesný tvar okraje a jeho ovládacích prvkù závisí na používaném X Window Manageru Ten rovnìž mùže nìkteré funkce zakázat (napø maximalizaci okna pøi startu) 16 KYLIX V PØÍKLADECH LIBOR FORST, TOMÁŠ HOLAN A

Prùmìrný obrázek Obr 72 Program g33 dpr Co to dìlá: Barvy bodù výsledného obrázku jsou (váženým) prùmìrem odpovídajících bodù dvou výchozích obrázkù Jak: Do komponent Image1 a Image2 vložíme obrázky, bitovou mapu pro komponentu Image3 pøipravíme ve FormCreate (tak jako jsme to doteï dìlali pro Image2) Do formuláøe umístíme komponentu TrackBar1 ze záložky Common Controls a pøiøadíme jí obslužnou metodu pro událost Change procedure TForm1 TrackBar1Change(Sender: TObject); var x, y: Integer; p, q, t: Real; P1, P2, P3: PByteArray; 118 KYLIX V PØÍKLADECH LIBOR FORST, TOMÁŠ HOLAN A

begin for y := 0 to Image1 Height-1 do begin P1 := Image1 Picture Bitmap ScanLine[y]; P2 := Image2 Picture Bitmap ScanLine[y]; P3 := Image3 Picture Bitmap ScanLine[y]; for x := 0 to Image1 Width-1 do begin q := x/(image1 Width-1); p := TrackBar1 Position/TrackBar1 Max; t := p*q+(1-p)*(1-q); setrgb( P3, x, Round( t*getrgb( P1, x ) r +(1-t)*getRGB( P2, x ) r ), Round( t*getrgb( P1, x ) g +(1-t)*getRGB( P2, x ) g ), Round( t*getrgb( P1, x ) b +(1-t)*getRGB( P2, x ) b ) ); Image3 Repaint; Vysvìtlení: Ovládací prvek je komponenta typu TTrackBar, její chování i obsluha jsou analogické komponentì typu TScrollBar Nastavením ovládacího prvku mùžeme volit rùzné možnosti prolínání (od zleva doprava pøes všude stejnì až po zprava doleva ) Promìnná t urèuje pomìr zastoupení barev pùvodních obrázkù ve výsledku Poèítá se z relativní polohy jezdce ovládacího prvku (promìnná p) a z relativní pozice právì zobrazovaného sloupeèku obrázku (promìnná q) A GRAFIKA PRÙMÌRNÝ OBRÁZEK 119

Zvìtšenina Obr 73 Program g34 dpr Co to dìlá: Jak: Po stisku tlaèítka myši vytvoøí zvìtšený výøez se støedem v místì stisku Nemìní barvu, ale mìní souøadnice Jako vzor pro bod [x2, y2] se bere bod [x1, y1] procedure TForm1 Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var x1, y1, x2, y2: Integer; P1, P2: PByteArray; begin { stred vyrezu nesmi byt moc blizko u okraje } if X < Image1 Width div 4 then X := Image1 Width div 4; if X > 3*(Image1 Width div 4) then X := 3*(Image1 Width div 4); if Y < Image1 Height div 4 then Y := Image1 Height div 4; if Y > 3*(Image1 Height div 4) then Y := 3*(Image1 Height div 4); 120 KYLIX V PØÍKLADECH LIBOR FORST, TOMÁŠ HOLAN A

for y2 := 0 to Image2 Height-1 do begin y1 := Y+((y2-(Image1 Height div 2)) div 2); P1 := Image1 Picture Bitmap ScanLine[y1]; P2 := Image2 Picture Bitmap ScanLine[y2]; for x2 := 0 to Image2 Width-1 do begin x1 := X+((x2-(Image1 Width div 2)) div 2); getrgb( P2, x2 )^ := getrgb( P1, x1 )^; Image2 Repaint; Vysvìtlení: Napsání správného vzorce pro výpoèet x1 z x2 (a též pro y1 z y2) je ponìkud obtížné, protože namísto vymýšlení, kam se který bod zobrazí, si musíme pøedstavit, který bod je vzorem pro právì zpracovávaný bod V tomto pøíkladu musíme vzít vzdálenost od støedu obrázku (x2 polovina šíøky), tu vydìlit dvìma (protože dìláme detail) a pøièíst k souøadnici støedu výøezu A GRAFIKA ZVÌTŠENINA 121