SADA OVLÁDACÍCH PRVKŮ PRO WPF
|
|
- Milan Dvořák
- před 7 lety
- Počet zobrazení:
Transkript
1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA SADA OVLÁDACÍCH PRVKŮ PRO WPF BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR ONDŘEJ VRŠAN BRNO 2012
2 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA SADA OVLÁDACÍCH PRVKŮ PRO WPF WPF CONTROL LIBRARY BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR ONDŘEJ VRŠAN Ing. RUDOLF KAJAN BRNO 2012
3 Abstrakt Tato práce se zabývá vytvářením znovupoužitelných ovládacích prvků pro WPF. Srovnává dostupné ovládací prvky na trhu a open source projekty. Popisuje vytvoření vlastní sady ovládacích prvků pro technicky zaměřené aplikace. Součástí práce je demonstrační program, který prezentuje možnosti vytvořených ovládacích prvků. Výsledný projekt je zveřejněn na portálu Codeplex.com Abstract This thesis is focused on design reusable WPF user control library. It compares the available control library on the market and open source projects. Describes creating user control library for the technically oriented applications. Part of this work is demonstration program presenting possibilities of developed controls. Project is published on the Codeplex.com portal. Klíčová slova WPF, XAML, C,.NET framework, Sada ovládacích prvků, Tech4WPF, Knob Control, Gauge Control, Chart Control Keywords WPF, XAML, C,.NET framework, User Control Library, Tech4WPF, Knob Control, Gauge Control, Chart Control Citace Ondřej Vršan: Sada ovládacích prvků pro WPF, bakalářská práce, Brno, FIT VUT v Brně, 2012
4 Sada ovládacích prvků pro WPF Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana Ing. Rudolfa Kajana. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal Ondřej Vršan 16. května 2012 Poděkování Děkuji svému vedoucímu, panu Ing. Rudolfu Kajanovi, za vedení mé práce, inspirace pro návrh ovládacích prvků a užitečné rady. c Ondřej Vršan, Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.
5 Obsah 1 Přístup k vytváření prvků GUI Počátky GUI Aplikace s GUI Technologie WPF a jazyk XAML WPF Windows Presentation Foundation XAML extensible Application Markup Language Triviální přístup versus Model-View-ViewModel Přehled současného stavu ovládacích prvků pro WPF Komerční produkty Open Source a Free produkty Zhodnocení Tech4WPF Architektura Namespace Tech4WPF.Common Namespace Tech4WPF.GaugeControl Namespace Tech4WPF.KnobControl Namespace Tech4WPF.ChartControl Dokumentace Demonstrační aplikace Závěr 30 A Obsah CD 33 1
6 Úvod Tato práce se zabývá vytvářením znovupoužitelných vizuálních komponent pro návrh GUI 1 aplikací pomocí technologie WPF 2 firmy Microsoft. Kapitola 1 podává shrnutí přístupu k vytváření GUI a požadavků na jeho vývoj v minulosti. Představuje dnešní technologe a návrhový vzor Model-View-ViewModel. Kapitola 2 obsahuje přehled současného stavu, komerční produkty dostupné na trhu, open source produkty a jejich zhodnocení. Kapitola 3 zdůvodňuje výběr ovládacích prvků pro implementaci a popisuje jejich vytvoření. Jednotlivé prvky následně představuje demonstrační aplikace. V závěru práce jsou zhodnoceny dosažené výsledky a navrhnuty možnosti dalšího pokračování projektu. 1 Graphical User Interface Grafické uživatelské rozhraní 2 Windows Presentation Foundation 2
7 Kapitola 1 Přístup k vytváření prvků GUI Tato kapitola pojednává o dnešním přístupu k vytváření prvků GUI a představuje technologii WPF. Nejdříve si ale ukážeme, jaká vedla cesta k jejímu vzniku. 1.1 Počátky GUI Na Standford Research Institute vznikl v 60. letech 20. století On-Line System (NLS). Tento systém byl vytvořen v rámci projektu Douglase Engelbarta Augmentation of Human Intellect a pracoval s hypertextem pomocí myší ovládaného kurzoru a prací ve více oknech. Engelbartova práce inspirovala pracovníky z výzkumného centra Xerox PARC. V roce 1974[11] Xerox PARC vyvinul osobní počítač Alto. Ten měl bitmapovou obrazovku a byl prvním počítačem, který zavedl metaforu pracovní plochy a pojem grafické uživatelské rozhraní (GUI). Alto nebyl komerčním produktem, přesto se ho vyrobilo několik tisíc kusů a byl po mnoho let používán v Xerox PARC, také v ostatních sídlech firmy a na některých univerzitách. V roce 1981 představil Xerox počítač Star. Ačkoli nebyl komerčně úspěšný, významně ovlivnil budoucí vývoj např. počítačů Apple[6], Microsoft a Sun Microsystems[14]. Rozšířit GUI ke koncovým uživatelům se podařilo až firmě Apple s počítačem Lisa (vydán roku 1983, cena cca $10.000[11]) a především s cenově dostupnějším následovníkem Macintosh (vydán roku 1984, cena cca $2.500[6]). Na vývoji GUI také pracovalo několik členů původního týmu Xerox PARC. Počítače Apple byly první komerčně úspěšné produkty používající víceokenní grafické uživatelské rozhraní. Soubory byly graficky znázorněny jako list papíru a adresáře vypadaly jako složky (viz obr. 1.1/str. 4). Oproti GUI Xerox přidal Apple funkci přesouvání ikon pomocí tažení myši mezi adresáři (funkce Drag and Drop) a rozbalovací nabídky.[11]. Grafické uživatelské rozhraní bylo důležitým faktorem popularity počítačů Apple Lisa a Macintosh. Na to reagovala firma Microsoft vývojem svého vlastního GUI a roku 1985 vydáním operačního systému Windows verze 1.0. Windows byl nástavbou nad systémem MS-DOS, která zprostředkovávala speciálně napsaným programům využívat menu, ikony a okna[1]. Za zmínku stojí, že na rozdíl od GUI systému Apple se okna v systému Windows 1.0 nemohla překrývat. Překrývání oken přinesl až Windows 2.0[2]. Operační systémy s GUI firmy Apple nebo Microsoft samozřejmě nebyly na trhu samotné. Vedle nich existovaly další operační systémy s grafickým rozhraním od jiných společností, které se však z mnohých důvodů neujaly (např. pro ně nebyly dostupné aplikace nebo je z trhu vytlačila silnější konkurence) a jejich dnešní verze již na trhu nejsou, případně jsou zastoupeny minoritně. Pro úplnost alespoň vyjmenujme některé z nich jako např. 3
8 Obrázek 1.1: Plocha počítače Apple Macintosh[14] Graphical Environment Manager (GEM), Amiga Workbench, NeXTSTEP nebo OS/2 [14]. I tyto systémy však používaly principy známé od Apple a Microsoftu, které byly již definovány týmem Xerox PARC jako WIMP pradigma Window, Icon, Menu, Pointing device 1. Dále také můžeme zmínit X Window typické pro Unix-like systémy (také označováno i jako X11 nebo X ), které je zajímavé tím, že využívá model klient-server. Na systému X Window běží také dnešní GUI operačního systému MacOS X firmy Apple[12]. S příchodem barevných CRT obrazovek se začala objevovat barevná GUI. Příliš mnoho nových principů však nepřibývá, vývoj se přizpůsobuje novým technologiím a aplikačnímu potenciálu počítačů. Vzhled GUI se postupně modernizuje a s narůstajícím výkonem počítačů přibývá animací, zvuků a jiných efektů, které mají za úkol tvořit zpětnou vazbu pro různé akce provedené uživatelem, usnadnit některé úkony nebo indikovat stav právě prováděné operace[4]. 1.2 Aplikace s GUI V době, kdy operační systém s GUI nebyl samozřejmostí, existovaly aplikace, které si grafické rozhraní vykreslily kompletně samy, bez podpory operačního systému. Jako příklad můžeme uvést Deluxe Paint nebo Adobe Acrobat Reader. Zajímavostí aplikace Acrobat Reader je, že byla schopna běžet jak v grafickém prostředí Windows 3.x, tak v prostředí příkazové řádky MS-DOS. V případě, že aplikace byla spuštěna z příkazové řádky, vykreslila si vlastní rozhraní; pokud byla spuštěna pod Windows, použila GUI tohoto systému[14]. Implementace grafického rozhraní aplikace (uspořádání ovládacích prvků, jejich vzájemná interakce, barvy apod.) mnohdy představuje více než polovinu práce na programovém vybavení. V počátcích tvorby aplikací s grafickým uživatelským rozhraním nebyl kód 1 Okno, Ikona, Menu, Polohovací zařízení 4
9 s vizuální podobou aplikace nijak oddělen od výkonného kódu, který prováděl vlastní činnost, pro kterou byla aplikace vytvořena. Protože neexistovaly specializované nástroje pro popis uživatelského rozhraní, bylo GUI naprogramováno ve stejném jazyku, jako byl programovací jazyk aplikace. Tedy například v jazycích FORTRAN, Pascal, C, nebo i jazyk symbolických adres Assembler[18]. Tento přístup však vyžadoval velkou míru pracnosti a byl neefektivní. Případná úprava celkového designu rozhraní byla pak časově velmi náročná, změna vzhledu podle požadavku trhu či dokonce dle libosti uživatele byla téměř nemožná. Kód, který obstarával vzhled aplikace, byl úzce svázán s jejím výkonným kódem a daty. Proto kterákoliv změna GUI vyžadovala úpravu aplikace. Protože GUI i samotný výkonný kód měl na starosti jeden člověk, byla tato situace únosná. S rozvojem IT technologií, robustností a komplexností programů, se zvyšoval i počet osob pracujících v týmu na jednom programu. Tým obsahoval odborníky jak na aplikaci samotnou (a problém, který aplikace řeší), tak odborníky na GUI a jeho design. Zde už míra svázanosti kódu pro popis vzhledu aplikace a kódu aplikační logiky, spolu s kódem obstarávajícím manipulaci s daty, nebyla dále únosná. S příchodem objektově orientovaného programování bylo možno navrhnout architekturu aplikace tak, aby popis vzhledu mohl být od aplikačního kódu oddělen a vyvíjen i v jiném programovacím jazyku. 1.3 Technologie WPF a jazyk XAML Moderní prostředek v oblasti tvorby uživatelského rozhraní je technologie WPF, která využívá k popisu vzhledu, vazeb a částečně i vizuálního chování jazyk XAML WPF Windows Presentation Foundation Technologie Windows Presentation Foundation (WPF) navazuje na technologii Windows Forms a je podmnožinou platformy.net Framework od verze 3.0. WPF používá značkovací jazyk XAML pro vytvoření uživatelsky bohatého rozhraní (RUI 2 ) bohatého svou komplexností, vyspělé, obsahující multimédia, vysoce interaktivní. Díky jazyku XAML jsou od sebe odděleny funkčnost a vzhled aplikace. WPF si klade za cíl sjednotit poutavé uživatelské rozhraní, 2D a 3D grafiku, vektorovou a rastrovou grafiku, animace, data binding a audio a video. Vlastnosti technologie WPF[9] Nezávislost na zobrazovacím zařízení Velikosti všech prvků jsou definovány v nezávislých jednotkách tzv. dip (angl. device independent pixel). Velikost jednotky je definována jako 1 device independent pixel = 1/96 palce Pokud bychom tedy chtěli vědět, jakou výšku v pixelech bude mít prvek o výšce 96 dip (tedy 1 palec), musíme tuto hodnotu vynásobit nastavením DPI 3 daného zobrazovacího zařízení (u monitorů většinou 96 DPI, lze se setkat i se 120 DPI, u tiskáren 300 DPI i více). Pro monitor s nastavením 96 DPI bude tedy prvek vysoký 96 dip 2 Rich User Interface 3 Dots Per Inch počet bodů na palec 5
10 zabírat přesně 96 pixelů, u monitoru s nastavením 120 DPI 120 pixelů a na tiskárně s 300 DPI bude vysoký 300 pixelů. Výška prvku v pixelech se bude měnit dle zobrazovacího zařízení tak, aby byla vždy 1 palec. Vylepšená přesnost Pro pozici bodu v souřadném systému i hodnoty transformací a průhlednosti je použit datový typ double. WPF podporuje wide color gamut scrgb 4 a má integrovanou podporu vstupu barev v různých formátech barevného prostoru. Pokročilá grafika a podpora animací WPF zjednodušuje vývoj grafických scén s animacemi. Programátor se nemusí starat o zpracování scény, renderovací smyčky či bilineární interpolaci. Hardwarová akcelerace Přes vrstvu DirectX se provádí vektorové vykreslování přes grafický adaptér. Pokud schází technické vybavení, provádí se vykreslování procesorem XAML extensible Application Markup Language XAML je deklarativní značkovací jazyk, který popisuje uživatelské rozhraní v aplikacích postavených na technologii společnosti Microsoft, jako strom souvisejících prvků. Tento jazyk mohou využívat různé nástroje pro návrh UI 5, např. nástroj pro tvorbu vizuálních komponent Microsoft Expression Blend. Kromě nástrojů od firmy Microsoft také existují další, jako např. ZAM 3D, XAMLPad nebo KaXaml[7]. Jazykem XAML můžeme popsat vzhled aplikace a definovat návaznost na kód, který obsluhuje události. Vše, co lze napsat pomocí XAML lze napsat i poocí standardních.net jazyků C nebo Visual Basic.NET. Výhodou XAML je jednoduchost. XAML soubor lze také zkompilovat do binární podoby a použít jej jako resource v.net projektu[13]. 1.4 Triviální přístup versus Model-View-ViewModel Pokud tvoříme aplikaci, která je jednoúčelová, nejspíše sáhneme po nějakém triviálním přímočarém postupu, kdy vytvoříme design aplikace v návrhovém okně, pojmenujeme prvky, definujeme handlery a implementujeme chování aplikace (code behind). Je to nejspíše nejrychlejší přístup, jak dosáhnout požadovaného cíle. Tento triviální přístup má však následující nevýhody[8]: View (XAML) a code behind jsou silně svázány, tzn. že kód, který popisuje chování okna (code behind), odkazuje na pojmenované elementy definované v XAML, a tím je s nimi silně svázán. View se stává úložištěm dat, ačkoliv by se měl starat pouze o jejich zobrazení. Protože code behind odkazuje na pojmenované prvky View modelu, nelze jej samostatně otestovat při Unit testování. Velkou nevýhodou je nevyužití možností data binding. Proto pokud pracujeme na složitějším projektu a máme v plánu tento projekt dále rozšiřovat, je vhodné použít některý z návrhových vzorů pro prezentační vrstvu. 4 viz 5 User Interface uživatelské rozhraní 6
11 Model-View-ViewModel Obrázek 1.2: MVVM model[3] Tento návrhový vzor vychází z principu vzorů MVC 6, který navrhl architekt John Gossman. Odděluje vzhled (View) a logiku (ViewModel) od návaznosti na data (Model). Mezi výhody patří dobrá znovupoužitelnost, testovatelnost a udržovatelnost kódu. Představíme si jednotlivé části modelu[5]: Model obsahuje reference na zdroj dat. Může existovat i více modelů vedle sebe pro různé logické kontexty. View reprezentuje grafické rozhraní v jazyce XAML s trochou nezbyteného code behind. Zde se používa Data binding a obousměrný Data binding na ViewModel. View-Model přizpůsobuje Model pro View. K Modelu se neváže přímo, ale přes jeho rozhraní. Obsahuje kód logiky prezentační vrstvy. 6 Model View Controller 7
12 Kapitola 2 Přehled současného stavu ovládacích prvků pro WPF V současné době je možno k vytváření aplikací použít šablony předchystaných komplexních prvků uživatelského rozhraní, jako jsou např. součásti pro grafy, časové osy, tabulky, formuláře aj. 2.1 Komerční produkty Z komerčních produktů jsou na trhu dostupné produkty firem Telerik 1 a DevExpress 2. Tyto společnosti nabízí bohatou škálu ovládacích prvků jak pro technologii WPF, tak pro starší technologii WinForms. Na obrázku 2.1 na straně 9 je zobrazen ovládací prvek ChartView od firmy Telerik. Pokud bychom v naší aplikaci chtěli takový prvek použít, zaplatíme za rozsáhlou knihovnu ovládacích prvků pro WPF $999 (samostatný ovládací prvek si koupit nelze). U konkureční firmy DevExpress bychom za podobnou knihovnu zaplatili o $100 méně Open Source a Free produkty Z OpenSource produktů se můžeme setkat s Dynamic Data Display (neaktualizován od 4/2009) nebo WPF Toolkit (poslední aktualizace 2/2010). Z free produktů můžeme použít VisiBox Charts, který ale má ve této verzi vodoznak. 2.3 Zhodnocení Trh nabízí řadu komerčních produktů, které jsou kvalitní a disponují širokou škálou možností změn vzhledu a chování ovládacího prvku. Jejich cena ale není nízká. Pro vývojáře nekomerční aplikace není myslitelné nakoupit celou sadu ovládacích prvků pro vývoj programu negenerujícího zisk. Jako východisko se nejeví ani free produkt, který je často jen osekanou placenou verzí nebo je označen vodoznakem, který lze odstranit po zaplacení určitého poplatku. 1 viz 2 viz 3 aktuální ceny v květnu
13 Obrázek 2.1: Telerik ChartView Variantou zůstávají tedy open source produkty nebo vlastní vytvoření ovládacího prvku. Když nyní pomineme tvorbu vlastního, a podíváme se na open source produkty, zjistíme, že vývoj často stagnuje a prvky nenabízí mnoho možností. Pro technickou aplikaci, cílenou např. na měřící techniku propojenou s počítačem, nenalezneme téměř žádné open source ovládací prvky. Jediným hojně dostupným prvkem majícím využití v technické aplikaci, jsou grafy. Prvky jako otočné knoflíky nebo ručičkové indikátory hodnot nalezneme jen zřídka. Tyto nabízí např. sada Qwt - Qt Widgets for Technical Applications 4 (viz obr. 2.2/str. 10). Jak již název napovídá, jedná se o prvky pro aplikace napsané ve frameworku Qt. Pro.NET framework však takové prvky chybí. 4 viz 9
14 Obrázek 2.2: Ovládací prvky z knihovny Qwt 10
15 Kapitola 3 Tech4WPF V případě, že se rozhodneme vyvinout nekomerční technickou aplikaci, najdeme málo dostupných open source ovládacích prvků, které bychom mohli použít. Pro framework Qt existuje sada ovládacích prvků Qwt - Qt Widgets for Technical Applications 1. K této sadě je dostupný i port na.net framework open source projekt QWT for.net. Protože se ale jedná o port, není využito všech předností.net frameworku a možností WPF a Data Bindingu. Rozhodl jsem se tedy, že vytvořím open source projekt Tech4WPF, který si klade za cíl nabídnout ovládací prvky pro technické aplikace (podobně jako sada prvků Qwt) vyvíjené v.net framework, postavené na technologii WPF. Každá technická aplikace, která pracuje s měřícími přístroji, potřebuje pro komunikaci s uživatelem ovládací prvky, které indikují stav nějakého čidla. Tento stav může zprostředkovat buď ručičkový ukazatel, nebo graf. Uživatel také často potřebuje mít možnost nastavovat hodnoty vstupů, které mají přesně dané hranice. K těmto účelům může sloužit např. otočný knoflík. Proto jsem zvolil následující prvky jako základ sady ovládacích prvků Tech4WPF: Knob Control Otočný knoflík Chart Control Graf Gauge Control Ručičkový ukazatel 3.1 Architektura Knihovna ovládacích prvků Tech4WPF obsahuje čtyři základní prostory jmen: Tech4WPF.Common Tech4WPF.GaugeControl Tech4WPF.KnobControl Tech4WPF.ChartControl 1 viz 11
16 3.1.1 Namespace Tech4WPF.Common Tento prostor jmen obsahuje definice rozhraní, společnou implementaci částí pro prvky Knob Control a Gauge Control, a také pomocné metody, které jsou použity v implementaci jednotlivých ovládacích prvků. Rozhraní IRotatePointer a IRoundScale obsahují seznam vlastností, které musí splňovat otočný ukazatel a kruhová stupnice (viz obr. 3.1/str. 12). Obrázek 3.1: Rozhraní IRoundScale a IRotatePointer Ukazatele prvků Knob Control a Gague Control sdílí implementaci rozhraní ve třídě AbstractRotatePointer (viz obr. 3.2/str. 13). Zde se přímo nabízí, aby třída AbstractRotatePointer byla deklarována jako třída abstraktní. V případě, že máme několik tříd, které se zavázaly implementovat stejné rozhraní, a tato implementace rozhraní je společná (čili má stejný kód), je vhodné tento kód umístit do třídy nadřazené, ze které ostatní třídy tuto implementaci zdědí. Vyhneme se tak duplicitnímu kódu. Taková nadřazená třída ale zajisté neimplementuje ostatní detaily (ani nemůže), které odlišují jednotlivé třídy od sebe. Je pak ale správné mít možnost vytvořit instanci takové neúplné třídy? Zajisté ne. K těmto účelům je vhodné v C použít právě abstraktní třídu. U abstraktní třídy totiž nelze vytvořit její instanci. Dále nám také dovoluje deklarovat metody bez těla (ekvivalent k čistě virtuálním metodám z C++), jež třída, která dědí, musí implementovat. Nabízí se tedy deklarovat třídu AbstractRotatePointer jako abstraktní, která bude dědit od UserControl a ponese společnou implementaci rozhraní IRotatePointer. Následně z této abstraktní třídy dědit do tříd implementujících konkrétní prvek, jako je v případě Tech4WPF KnobPart nebo PointerPart. V XAML těchto prvků pak nahra- 12
17 Obrázek 3.2: Třídy AbstractRotatePointer a RoundScalePart 13
18 dit root tag <UserControl> za tag <my:abstractrotatepointer> (kde my je deklarované XML namespace, kde se vyskytuje třída AbstractRotatePointer). Tato architektura využívající abstraktní třídu má však jednu nevýhodu. Designer Visual Studia nám nebude schopen vykreslit náhled XAML zápisu prvku. Přesto, že nikde v kódu nevytváříme instanci abstraktní třídy, dostaneme chybovou hlášku Nelze vytvořit instanci abstraktní třídy. Designer Visual Studia totiž při vykreslení prvku potřebuje vytvořit instanci zděděné třídy. K změnám prováděným v XAML bychom tak neměli zpětnou vazbu. Přes to, že designer produkuje tuto chybu, lze aplikaci zkompilovat a spustit. Při běhu aplikace totiž není zapotřebí vytvářet instanci základní třídy (v tomto případě abstraktní). Nabízí se řešení pomocí preprocesoru 2, které se pokusím nastínit pomocí následujícího úryvku kódu: #if DEBUG public class MyBaseControl : UserControl { #else public abstract class MyBaseControl : UserControl { #endif //... #if DEBUG protected virtual void OverrideMe() { } #else protected abstract void OverrideMe(); #endif //... } Při kompilování debug verze (a tím i při vykreslování designeru) bude třída zkompilována bez klíčového slova abstract a abstraktní metody budou nahrazeny virtuálními. Při kompilování release verze bude zkompilována abstraktní třída s abstraktními metodami. Toto řešení se mi nejevilo jako nejvhodnější, protože je snížena přehlednost kódu (na první pohled není patrné, co je vlastně zamýšleno), a také protože při debugování se pracuje s jiným kódem, než který je zkompilován jako release verze. Proto jsem přistoupil k vlastnímu řešení, které nepoužívá makra preprocesoru. Třídu jsem deklaroval bez klíčového slova abstract. Bohužel konstruktor této třídy musí zůstat veřejně přístupný (tedy public) kvůli designeru, takže je zde riziko vytvoření instance této neúplné třídy. Považuji jej ale za menší nevýhodu, než v případě použití maker preprocesoru, která můžou při hojnějším použití (více abstraktních funkcí) zatemňovat kód a být zdrojem skrytých chyb (aplikace používá jiný kód v release než v debug verzi). Metody, které bylo vhodné v případě použití abstraktní třídy deklarovat také jako abstraktní, jsem deklaroval jako virtuální a do jejich těla jsem napsal kód, vyhazující výjimku s popisem, že tato metoda musí být předefinována. Metodu jsem doplnil i dokumentačním XML komentářem, který taktéž upozorňuje na nutnost ji předefinovat. Tím je zajištěna implementace této metody v dědící třídě. Zde je příklad tohoto způsobu náhrady abstraktní metody ve třídě AbstractRotatePointer: 2 viz b284d11a-1a9d-4ca5-b3cc-d58dd9e4f5cf/ 14
19 /// <summary> /// Updates the render angle of the pointer. Has to be overridden. /// </summary> protected virtual void updaterenderangle() { throw new NotImplementedException( "updaterenderangle() has to be overriden"); } Kruhová stupnice, kterou představuje třída RoundScalePart (viz obr. 3.2/str. 13), se skládá z vizuálních prvků Arc a Path. Prvky Path představují šablony značek stupnice (minor stamp a major stamp) a Arc stupnici samotnou. Šablony značek stupnice mají nastavenou pozici a střed pro rotační transformaci. Jejich vlastnost Visibility je však nastavena na hodnotu Hidden, protože neplní funkci značky, ale pouze šablony pro její vytvoření. Při skutečném vykreslování stupnice se následně pomocí jejích properties StartAngle, EndAngle, Minimum, Maximum, MinorStep a MajorStep vykreslí stupnice a dopočítají se počty značek a jejich umístění. Tyto značky se vytváří právě podle zmiňovaných šablon a nastavuje se jim transformační úhel, o který se pootočí na své místo. Dále jsou stupnici dopočítány a vykresleny hodnoty. Tato implementace je společná pro oba prvky Knob Control i Gauge Control. Třídy AbstractRotatePointer a RoundScalePart mají své veřejné property implementovány pomocí dependency property, které zajišťují callback volání metod pro kontrolu zadaných hodnot a vynucení překreslení prvku. Způsob vyvolávání události v knihovně Tech4WPF se liší od klasického postupu při vyvolání události. Ukážeme si příklad na události PropertyChanged třídy AbstractRoundPointer. Vyvolávání ostatních událostí v jiných třídách knihovny Tech4WPF se děje pak stejným způsobem. Často najdeme vyvolání události kódem podobným tomuto: protected void firepropertychanged(string property) { if (PropertyChanged!= null) { PropertyChanged(this, new PropertyChangedEventArgs(property)); } } Toto řešení je vhodné, ale při použití ve vícevláknové aplikaci může docházet k vyhození výjimky NullReferenceException. Pokud totiž po proběhnutí podmínky ověření nerovnosti s null dojde v jiném vlákně k odhlášení odběru události, vyvolání delegáta události PropertyChanged skončí výše zmíněnou výjimkou. Pokud si však zachováme lokální kopii delegáta, bude náš kód bezpečný 3. V případě, že by po otestování lokální kopie delegáta na null došlo k odhlášení odběru události PropertyChanged, nemá to vliv na tuto lokální kopii, protože ta byla vytvořena ještě před odhlášením odběru. Volání lokální kopie propertychanged je tedy bezpečné a neskončí výjimkou. Nevýhoda tohoto přístupu je, že handler události bude zavolán i po odhlášení jejího odběru. Přesto jsem toto řešení zvolil kvůli jeho bezpečnosti vzhledem k výjimce NullReferenceException. 3 viz 15
20 Obrázek 3.3: Třídy ScaleAngleConverter a TryAngleChangeEventArgs s delegátem TryAngleChangeHandler Způsob vyvolávání událostí v knihovně Tech4WPF ilustruje následující kód: protected void firepropertychanged(string property) { //Maintaining the temporary copy of event to avoid race condition propertychangedeventhandler propertychanged = PropertyChanged; if (propertychanged!= null) { propertychanged(this, new PropertyChangedEventArgs(property)); } } Třída ScaleAngleConverter (viz obr. 3.3/str. 16) implementuje rozhraní IValueConverter, tzn. poskytuje funkcionalitu konverze hodnot úhlu pro prvek RoundScalePart. Protože značky pro major stamp jsou vykreslovány pod vlastní kružnicovou výsečí a mají určitou tloušťku, v krajních hodnotách přesahují polovinou své tloušťky okraj kružnicové výseče. A jelikož ovládací prvek umožňuje nastavit rozdílné barvy kružnicové výseče stupnice (ScaleStroke property) a hlavních značek (MajorStampStroke property), bylo by toto přesahování viditelné a vizuálně rušivé. Proto je nutno počáteční a koncový úhel protáhnout o 1,8 v obou směrech, aby se kružnicová výseč vykreslila až po okraj značky major stamp. V závislosti na tom, zda se jedná o začátek či konec stupnice, je protažení přičítáno nebo odčítáno, v závislosti parametru parameter. Třída TryAngleChangeEventArgs dědí od RoutedEventArgs a poskytuje funkcionalitu při pokusu změnit úhel natočení. Je využívána pro prvek Knob Control, kde je při změně 16
21 úhlu natočení otočného knoflíku pomocí myši potřeba validovat, zda se na tento úhel může knoflík natočit (a neukazoval mimo stupnici). Property této třídy mají privátní setter, čímž je zajištěno bezpečné použití, tzn. že se nastaví pouze při vyvolání události pomocí konstruktoru a z venčí jsou pouze pro čtení. Jak můžeme vidět na obrázku 3.3 na straně 16, tato třída obsahuje pouze tři property informující o původním a novém úhlu a o tom, zda natočení na nový úhel bylo realizováno pomocí kolečka myši. Delegát TryAngleChangeHandler 3.3 deklaruje podobu metody, která obsluhuje událost s argumenty objektu TryAngleChangeEventArgs. Obrázek 3.4: Třída TechUtils Statická třída TechUtils (viz obr. 3.4/str. 17) poskytuje pomocné metody, které jsou využívané při implementaci jednotlivých ovládacích prvků. Protože se metody v této třídě mohou hodit i vývojářům používajícím ovládací prvky z knihovny Tech4WPF, rozhodl jsem se tuto třídu deklarovat jako public. Tato třída poskytuje metody pro převod úhlu mezi stupni a radiány, převod libovolného úhlu ve stupních ekvivalentní kladný úhel menší než 360 a metodu pro kontrolu hodnoty typu double a nahrazení hodnot Infinity nebo NaN nulou Namespace Tech4WPF.GaugeControl Třída PointerPart (viz obr. 3.5/str. 19) dědí od třídy AbstractRotatePointer implementaci rozhraní a přepisuje abstraktní callback metodu updaterenderangle() z nadřazené třídy (tato metoda překresluje natočení prvku). Třída představuje ručičku ukazatele pro stupnici. V XAML je definována vizuální podoba ukazatele, který na stupnici prvku Gauge Control ukazuje hodnotu. Design ukazatele byl vytvořen v prostředí Microsoft Expression Blend, ve kterém je možné kromě přímé editace XAML zápisu i vizuálně kreslit křivky, elipsy atd. Třída GaugeControl (viz obr. 3.5/str. 19) reprezentuje prvek Gauge Control. Skládá dohromady součásti RoundScalePart 4 a PointerPart, zapouzdřuje jejich property a při- 4 viz oddíl Namespace Tech4WPF.Common na straně 12 17
22 dává zobrazení aktuální ukazované hodnoty, snap mode a popisek prvku. Při změně ukazované hodnoty vyvolává událost ValueChanged. V konstruktoru jsou nastaveny handlery pro odběr událostí stupnice a ukazatele, zároveň je pro ukazatel nastaven úhel počátku stupnice (nastavena property OriginAngle). Třída GaugeControl implementuje rozhraní INotifyPropertyChanged, což umožňuje upozornit okolní objekty, že se změnila property objektu,- v tomto případě se jedná o upozornění změny property Value. Při použití v XAML je obsah mezi otevíracím a zavíracím tagem použita pro property Label (tedy popisek ovládacího prvku) a výchozí událostí je PropertyChanged. Toho je docíleno v deklaraci třídy GaugeControl pomocí atributů ContentProperty a DefaultEvent, které určují výchozí událost a použití obsahu mezi tagy Namespace Tech4WPF.KnobControl Třída KnobPart (viz obr. 3.6/str. 20), podobně jako třída PointerPart z namespace Tech4WPF.GaugeControl, dědí od třídy AbstractRotatePointer implementaci rozhraní a přepisuje abstraktní callback metodu updaterenderangle() z nadřazené třídy. Tato metoda překresluje natočení prvku. Třída představuje otočný knoflík, který má dané hranice svého natočení. V XAML je definována vizuální podoba knoflíku, který na stupnici prvku Knob Control ukazuje hodnotu. Design ukazatele byl vytvořen v prostředí Microsoft Expression Blend, jako tomu bylo u prvku PointerPart. Při překreslení natočení knoflíku není však otáčeno celým prvkem, ale pouze jeho ryskou arrow. Výsledný efekt vytváří dojem otáčení celého knoflíku. Třída KnobPart, narozdíl od třídy PointerPart, implementuje navíc obsluhu událostí klepnutí a tažení myši, dvojklik myší, rolování kolečkem a vyvolává událost TryAngleChange, která je vyvolána vždy, když dochází k pokusu změnit úhel natočení knoflíku. Obsluha událostí myši byla částečně převzata z [10]. Dalším rozdílem je přítomnost statického konstruktoru. Statický konstruktor se používá pro inicializaci statických dat a volá se automaticky vždy před prvním vytvořením instance třídy. Ve třídě KnobPart slouží statický konstruktor k přepsání zděděných statických dat. Dependency poperty má pro výplň ukazatele v nadřazené třídě výchozí hodnotu červenou, kdežto u knoflíku jsem požadoval výchozí hodnotu zelenou. Přepsání této výchozí hodnoty se děje právě ve statickém konstruktoru. Výhodou tohoto řešení je sdílená implementace dependency property. Kód se neduplikuje jen z důvodu jiných výchozích hodnot. Menší nevýhodou tohoto přístupu je, že designer Visual Studia nebere v potaz tento statický konstruktor a knoflík zobrazí s červenou výplní, zděděnou ze třídy AbstractRotatePointer. Při spuštění aplikace se však vše chová správně a knoflík má ve výchozím stavu zelenou výplň. Třída KnobControl (viz obr. 3.6/str. 20) reprezentuje prvek Knob Control. Podobně jako třída GaugeControl u prvku Gauge Control, skládá třída KnobControl dohromady části RoundScalePart 5 a KnobPart, zapouzdřuje jejich property a přidává snap mode a popisek prvku. Při změně hodnoty vyvolává prvek událost ValueChanged. V konstruktoru jsou nastaveny handlery pro odběr událostí stupnice a knoflíku, zároveň je také pro knoflík nastaven úhel počátku stupnice (nastavena property OriginAngle). Implementuje taktéž rozhraní INotifyPropertyChanged, aby mohla upozornit na změnu property Value. Třída KnobControl dále odebírá událost TryAngleChange třídy KnobPart. Při pokusu změnit úhel knoflíku se zjistí, zda hodnoty nepřekračují dané meze, nebo pokud je zapnut 5 viz oddíl Namespace Tech4WPF.Common na straně 12 18
23 Obrázek 3.5: Třídy PointerPart a GaugeControl 19
24 Obrázek 3.6: Třídy KnobPart a KnobControl 20
25 snap mode, zaokrouhlují se hodnoty k nejbližším major stamps. V případě překročení mezí je nastaveno minimum nebo maximum v závislosti na pozice myši či směru překročení hodnot. Při použití v XAML je stejně jako u prvku Gauge Control obsah mezi otevíracím a zavíracím tagem použita pro property Label (tedy popisek ovládacího prvku) a výchozí událostí je PropertyChanged. Toho je docíleno v deklaraci třídy GaugeControl pomocí atributů ContentProperty a DefaultEvent, které určují výchozí událost a použití obsahu mezi tagy Namespace Tech4WPF.ChartControl Implementace ovládacího prvku Chart Control je částečně převzata ze zdrojových kódů ke knize Practical WPF Charts and Graphics[17], konkrétně zdrojových kódů pro LineChart- Control. Převzata je implementace typů symbolů, jejich vykreslení, implementace grafu a legendy. Kód byl však značně refaktorován, dlouhé nepřehledné metody byly rozděleny do dílčích metod, a byla pozměněna hierarchie tříd. Dále byl přidán vykreslovací typ čáry Steps, symbol Bar pro vykreslení sloupcového grafu a také možnost nastavit výplň pod křivkou grafu. Při zkoumání kódu jsem zjistil, že na rozdíl od knihy která poměrně kvalitně pojednává o teorii transformačních matic, vykreslování 2D a 3D grafů je zdrojový kód kvalitativně horší. Při použití původního ovládacího prvku LineChartControl bylo nutno hlídat změnu rozměrů tohoto prvku a při této změně znova naplnit ovládací prvek daty, protože docházelo ke smazání původních dat. Toto mi přišlo z hlediska vývojáře, který má takový prvek použít, značně nepraktické. Způsob použití takového grafu by dle mého názoru měl být v tom, že se nastaví hodnoty a požadovaný styl vykreslení a graf je zobrazuje i při změnách rozměrů, dokud nejsou zadána jiná data. Dalším nedostatkem bylo, že po vložení dat (jednotlivých bodů grafu) byly tyto body pozměněny. V důsledku to tedy znamená, že pokud programátor nastavil, že se má vykreslit XY bod (1, 1), po vykreslení a znovu-přečtení tohoto bodu vloženého do ovládacího prvku nebyl tento bod (1, 1), ale úplně jiná hodnota (např. (110, 329)) přepočítaná tak, aby dávala smysl pro vnitřní funkci vykreslování grafu. Poroto také hodnoty byly při změně rozměrů prvku vymazány, protože je nebylo možno dále znovu přepočítat pro nový rozměr prvku. Hodnoty jako NaN nebo Infinity nebyly ošetřeny, takže vykreslení grafu s těmito hodnotami způsobovalo vyvolání výjimky. Testování rozměru canvasu grafu na hodnotu NaN probíhalo způsobem, který ilustruji kódem níže. V nižších verzích.net frameworku nebo v anglickém prostředí kód nejspíše fungoval, ale v nynější aktuální verzi 4.0 a jiném národním prostředí (česká verze Windows 7) tento kód nedělal to, co bylo zamýšleno. if (canvas.width.tostring() == "NaN") { canvas.width = 300; } Jak můžeme vidět, hodnota šířky canvasu (property Width) byla metodou ToString() převedena na řetězec a porovnána s řetězcem "NaN". Pomineme-li tento chybný přístup k testování na hodnotu NaN, zdá se, že by kód mohl fungovat. Lokalizované české prostředí však při volání metody ToString() na objekt double obsahujíci hodnotu NaN nevrací 21
26 "NaN", ale řetězec "Není číslo". Rovnost tedy platit nebude a kód, který se v případě hodnoty NaN měl vykonat, se přeskočí. Při opravě tohoto kódu jsem nejspíše narazil na to, co autora vedlo k řešení pomocí metody ToString(). Úprava kódu do následující podoby totiž nedávala očekávané výsledky. if (canvas.width == double.nan) { canvas.width = 300; } Přesto, že hodnota property Width je NaN, podmínka platit nebude. Nejdná se ale o chybu[15]. Konstanta double.nan slouží totiž pouze pro inicializaci výchozích hodnot, nikoliv pro porovnávání. Pro účely testování na hodnotu NaN slouží statická metoda double.isnan(double d), která vrací true, pokud má parametr hodnotu NaN. Správné řešení použité v prvku Chart Control tedy vypadá takto: if (double.isnan(canvas.width)) { canvas.width = 300; } Výše zmíněné nedostatky jsem tedy opravil a přepracoval. S body pro vykreslení grafu v ovládacím prvku Chart Control není manipulováno, takže přečtení bodů vložených pro vykreslení vrátí očekávané hodnoty (tedy nezměněné). Přepočítané hodnoty pro vykreslení grafu jsou uloženy interně v ovládacím prvku. To má mimo jiné tu výhodu, že při změně rozměrů grafu je možno z původních hodnot vypočítat nové interní hodnoty a graf znovu vykreslit bez zásahu zvenčí. Prvek Chart Control definuje výčtové typy pro volby stylu vykreslení čáry DrawType, typu symbolu SymbolType, vzoru čáry StrokePattern a pozice legendy LegendPosition (viz obr. 3.7/str. 23). Třída DataSeries (viz obr. 3.8/str. 24) reprezentuje data pro vykreslení grafem. Obsahuje property ChartStyle, která definuje styl vykreslení dat. Ten je reprezentován třídou ChartStyle, která zprostředkovává volby vykreslení. Třída DataSeries dále zprostředkovává metody pro vykreslení symbolu a křivky dle zvoleného nastaveného stylu. Třída Legend realizuje vykreslení legendy do grafu dle pozice definované v property LegendPosition. Třída ChartControl (viz obr. 3.9/str. 25) představuje ovládací prvek Chart Control. Definuje volby pro graf, jako je minimum a maximum os, popis grafu a další. Podobně jako u ostatních prvků knihovny Tech4WPF jsou property implementovány přes dependency property. 22
27 Obrázek 3.7: Výčty SymbolType, LegendPosition, DrawType a StrokePattern 23
28 Obrázek 3.8: Třídy DataSeries a ChartStyle 24
29 Obrázek 3.9: Třída ChartControl 25
30 3.2 Dokumentace Zdrojový kód je dokumentován XML komentáři. Protože Tech4WPF je open source projekt, jsou dokumentovány nejen veřejné i privátní (případně interní) třídy, rozhraní, property a metody. Tato dokumentace je automaticky součástí assembly, takže při použití těchto ovládacích prvků bude vývojovým prostředím zobrazována (např. prostřednictvím IntelliSense při psaní kódu). Z těchto komentářů byla vygenerována i samostatná vývojářská dokumentace pomocí nástroje Sandcastle resp. SandCastle Help File Builder 6 (SHFB). V solution Tech4WPF je obsažen projekt Tech4WPF Documentation, kterým je možno spustit kompilaci dokumentace. Ve Visual Studiu musí však být nainstalováno rozšíření SHFB a jeho součásti. Styl vzhledu použitý pro dokumentaci byl nastaven na styl Visual Studia 2010, známý také ze současného stylu dokumentací knihoven.net a z dokumentace na webu MSDN. Dokumentace byla vygenerována v těchto dvou formátech: HTML Help v1 (CHM) MS Help Viewer (MSHC) HTML Help v1 jsem zvolil z důvodů kompatibility. Je to nejstarší formát dokumentace a je možné jej zobrazit na většině počítačů[16]. Formát MS Help v2 nebyl sestavován, protože nástroje pro jeho vytvoření se s verzí Visual Studia 2010 nedistribuují (nástroje je možné ale najít v SDK Visual Studia 2008). Tento formát dokumentace byl ve Visual Studiu 2010 nahrazen novějším formátem MS Help Viewer. Soubory této dokumentace je možné do systému nainstalovat buď pomocí nástroje Help Library Manager 7, nebo pomocí dávkového souboru, který je přiložen u sestavené dokumentace Tech4WPF. 3.3 Demonstrační aplikace Pro demonstraci možností vytvořených ovládacích prvků v knihovně Tech4WPF jsem vytvořil jednoduchou vzorovou aplikaci, která je součástí projektu. Po spuštění aplikace se zobrazí menu, ve kterém je možno vybrat ovládací prvek. Po klepnutí na tlačítko s názvem prvku se zobrazí okno, kde je možno pomocí voleb měnit jeho vzhled, chování a vyzkoušet si jeho činnost. Všechny volby jsou implementovány pomocí data bindingu, takže se projeví ihned nebo v momentě, když editační políčko pro zadání hodnoty ztratí focus. Okno s prvkem je nemodální, takže je možno spustit další instanci okna s tímto prvkem a porovnat vliv rozdílných nastavení. Všechna otevřená okna se ukončí společně se zavřením okna menu. Na obrázku 3.10 na straně 27 je předvedení ovládacího prvku Gauge Control. Ovládací prvek je v této aplikaci umístěn dvakrát. Jeden představuje procentuální pozici myši ve vyznačeném obdelníku v ose X, druhý v ose Y. Volby ovlivňují pouze chování spodního ovládacího prvku. Horní ovládací prvek zůstává ve výchozím nastavení. Ovládací prvek Knob Control umožňuje v demonstrační aplikaci (viz obr. 3.11/str. 28) nastavit hodnotu, kterou má knoflík ukazovat. Po vyplnění políčka vlevo dole a stisknutí tlačítka Set Value se tato hodnota nastaví. Místo stisknutí tlačítka Set Value je také možno použít klávesu enter. 6 viz 7 ve Visual Studiu 2010 jej lze nalézt v menu Help/Manage Help Settings 26
31 Obrázek 3.10: Demonstrační aplikace Gauge Control 27
32 Obrázek 3.11: Demonstrační aplikace Knob Control Na obrázku 3.12 na straně 29 vidíme demonstrační aplikaci ovládacího prvku Chart Control. Volby vlastností datových řad (Sine a Cosine) nepropagují svou změnu okamžitě do vykreslení grafu. Přesto, že jsou implementovány také pomocí data bindingu, změny se neprojeví ihned, ale až po stisknutí tlačítka Refresh Chart nebo při změně velikosti okna. Důvod tohoto chování vychází z návrhu prvku. Property DataCollection je implementována přes dependency property, takže je ovládací prvek Chart Control notifikován o její změně a protože DataCollection je typu List<DataSeries> (jedná se tedy o instanci třídy umístěnou na haldě), změnou se rozumí změna ukazatele. Vnitřní změna hodnot datového obsahu property DataCollection neovlivní nijak ukazatel na tyto data. Pokud tedy chceme, aby se při úpravě datového obsahu DataCollection překreslil graf, stačí vytvořit novou instanci objektu pro property DataCollection. Novou instanci dat inicializujeme původními daty předanými do konstruktoru. Pro představu uvádím úryvek kódu: \\ DataCollection inner data change... chartcontrol.datacollection = new List<DataSeries>(chartControl.DataCollection); 28
33 Obrázek 3.12: Demonstrační aplikace Chart Control 29
34 Kapitola 4 Závěr Cílem této bakalářské práce bylo navrhnout sadu znovupoužitelných ovládacích prvků pro WPF sloužících pro vizualizaci dat, a tyto prvky implementovat. Po prostudování teorie a technologií použitých ve WPF jsem se seznámil s již dostupnými ovládacími prvky. Zjistil jsem, že dostupnost takových prvků pro neziskové aplikace (kde se neuvažuje nákup komerčních knihoven) je špatná, a proto jsem navrhl projekt Tech4WPF. Tento projekt nyní obsahuje tři základní ovládací prvky, které cílí na technické aplikace. Pro seznámení se s možnostmi těchto prvků jsem vytvořil demonstrační aplikaci, která zároveň slouží i k jejich otestování. Projekt Tech4WPF byl ke dni odevzdání této práce zveřejněn na portálu Codeplex.com, který se zabývá open source projekty a je zastřešován firmou Microsoft. Lze jej najít na adrese tech4wpf.codeplex.com. Protože se předpokládá, že projekt budou používat další vývojáři a že se do jeho vývoje zapojí i další lidé, byla k němu vytvořena vývojářská dokumentace. Možnost pokračování projektu vidím ve zdokonalení již vytvořených ovládacích prvků, rozšíření jejich možností vzhledu (např. přidání nových stylů ručičkových ukazatelů), rozšíření konfigurovatelnosti a postupném přidávání prvků nových. Portál Codeplex.com nabízí možnosti vedení projektu a spolupráce s ostatními členy komunity, správu verzí, systém pro zachytávání chyb a přidávání požadavků na novinky s možností hlasování pro jejich implementaci, čímž tvoří dobrou základnu pro další vývoj. 30
35 Literatura [1] Operating Systems [online]. URL http: // [cit ]. [2] Windows Versions Features [online]. URL [cit ]. [3] Crescimanno, G.: Introduction to MVVM in Silverlight [online]. URL http: // [cit ]. [4] Dostál, M.: Základy tvorby uživatelského rozhraní. PřF Univerzita Palackého, [5] Holan, T.: MVVM ve WPF a Silverlightu, část 1: Základní třídy [online]. URL MVVM-ve-WPF-a-Silverlightu-cast-1-Zakladni-tridy, [cit ]. [6] Isaacson, W.: Steve Jobs. Práh, 2011, ISBN [7] Jirava, J.: XAML jako deklarativní jazyk [online]. URL [cit ]. [8] Jirava, J.: Používáme Model-View-ViewModel [online]. URL [cit ]. [9] Microsoft: Introduction to WPF [online]. URL [cit ]. [10] TommySoft: Tutorial: Creating a Lookless WPF Custom Rotate Control [online]. URL Tutorial-Creating-a-Lookless-WPF-Custom-Rotate-Con, [cit ]. [11] Truck, M.: The Real History of the GUI [online]. URL [cit ]. [12] Wikipedia: X Window System [online]. URL [cit ]. 31
36 [13] Wikipedia: Extensible Application Markup Language [online]. URL [cit ]. [14] Wikipedia: History of the graphical user interface [online]. URL http: //en.wikipedia.org/wiki/history_of_the_graphical_user_interface, [cit ]. [15] Wikipedia: NaN [online]. URL [cit ]. [16] Wikipedia: Microsoft Compiled HTML Help [online]. URL [cit ]. [17] Xu, J.: Practical WPF Charts and Graphics. Apress, 2009, ISBN [18] Zemčík, P.: Tvorba uživatelských rozhraní Studijní opora. FIT VUT Brno,
37 Příloha A Obsah CD bin složka se vzorovou aplikací doc složka s dokumentací src složka se zdrojovými kódy projektu tex složka se zdrojovými kódy bakalářské práce v LA TE Xu thesis.pdf bakalářská práce v elektronické podobě 33
Desktop GUI. IW5 - Programování v.net a C# Desktop GUI
IW5 - Programování v.net a C# Strana 1 Obsah přednášky Definice GUI Představení existujících technlogií Jemný úvod do WPF Praktické ukázky WPF MVVM pattern Strana 2 Prezentační vrstva aplikace Vrstva zodpovědná
Animace ve WPF. Filip Gažák. Ing. Václav Novák, CSc. Školní rok: 2008-09
Animace ve WPF Filip Gažák Ing. Václav Novák, CSc. Školní rok: 2008-09 Abstrakt Hlavním tématem práce bude nový prvek pro tvorbu uživatelského prostředí ve WPF animace. V teoretické části se nejprve seznámíme
CineStar Černý Most Praha 31. 10. 2012
CineStar Černý Most Praha 31. 10. 2012 Stejná aplikace na více zařízeních Michael Juřek Microsoft s.r.o. Potřebné ingredience 1. Portable libraries 2. Návrhový vzor MVVM 3. XAML 4. Abstrakce platformy
Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13
Obsah Úvod 11 Platforma.NET 11.NET Framework 11 Visual Basic.NET 12 1 Základní principy a syntaxe 13 Typový systém 13 Hodnotové typy 13 Struktury 15 Výčtové typy 15 Referenční typy 15 Konstanty 16 Deklarace
1 - Úvod do platformy.net. IW5 - Programování v.net a C#
1 - Úvod do platformy.net IW5 - Programování v.net a C# Strana 1 Obsah přednášky Objektově orientované paradigma.net Framework Základní rysy jazyka C# Strana 2 Objektová orientace C# implementuje základní
Bridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
Reliance 3 design OBSAH
Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Dokumentace k programu MMDoc Vypracoval: Petr Dvořák Datum: 15.prosince 2005 1. Úvod 1.1. Účel tohoto dokumentu
2 Grafický výstup s využitím knihovny
2 Grafický výstup s využitím knihovny Studijní cíl Tento blok je věnován základním principům při vytváření grafického výstupu pomocí standardních metod, které poskytuje grafické rozhraní. V textu budou
Prostředí Microstationu a jeho nastavení. Nastavení výkresu
Prostředí Microstationu a jeho nastavení Nastavení výkresu 1 Pracovní plocha, panely nástrojů Seznámení s pracovním prostředím ovlivní pohodlí, rychlost, efektivitu a možná i kvalitu práce v programu Microstation.
Novinky ve Visual Studio 2010. Tomáš Kroupa Tomas.Kroupa@hotmail.com
Novinky ve Visual Studio 2010 Tomáš Kroupa Tomas.Kroupa@hotmail.com O čem si dnes řekneme Visual studio 2010 (beta 2) Jazyk C# 4.0 ASP.NET 4.0.NET 4.0 Visual Studio 2010 Beta 2 Jak získat Testovací verze
PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette
Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá
02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox
02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů
Reranking založený na metadatech
České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Reranking založený na metadatech MI-VMW Projekt IV - 1 Pavel Homolka Ladislav Kubeš 6. 12. 2011 1
11 Diagram tříd, asociace, dědičnost, abstraktní třídy
11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,
IS pro podporu BOZP na FIT ČVUT
IS pro podporu BOZP na FIT ČVUT Závěrečná zpráva pro 2. iteraci 21. dubna 2011 Zadavatel: Ing. Jiří Chludil Řešitelský tým: Jiří Kopecký Jan Kratochvíl Milan Matějček Štefan Pinďák Kristýna Streitová Úvod
monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura
IBM PC 5150 MS DOS 1981 (7 verzí) DR DOS, APPLE DOS, PC DOS 1. 3. Windows grafická nástavba na DOS Windows 95 1. operační systém jako takový, Windows XP 2001, podporovány do 2014, x86 a Windows 2000 Professional
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v Praze Ú12110 Ústav přístrojové a řídící techniky
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v Praze Ú12110 Ústav přístrojové a řídící techniky Semestrální práce Python pro vědecké výpočty Generátor pulzů pro simulaci vstupů kontroly trakce vozu Formule student Vypracoval:
Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14
Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14 KAPITOLA 1 Nové rysy Windows 8 a 8.1 15 Nové uživatelské rozhraní 15 Rychlý náběh po zapnutí 16 Informace v prvním sledu 16 Nové prezentační
Zpravodaj. Uživatelská příručka. Verze
Zpravodaj Uživatelská příručka Verze 02.01.02 1. Úvod... 3 2. Jak číst tuto příručku... 4 3. Funkčnost... 5 3.1. Seznam zpráv... 5 4. Ovládání programu... 6 4.1. Hlavní okno serveru... 6 4.2. Seznam zpráv...
Wonderware Information Server 4.0 Co je nového
Wonderware Information Server 4.0 Co je nového Pavel Průša Pantek (CS) s.r.o. Strana 2 Úvod Wonderware Information Server je výrobní analytický a reportní informační portál pro publikaci výrobních dat
ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy
ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy Bc. Petr Pokorný Letní semestr 2009/2010 1 Obsah 1 Úvod... 3 2 Workflow... 3 3 Workflow
Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody
Obsah 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody 3) 4) Mantichora Mantichora je moderní aplikace, který
10 Balíčky, grafické znázornění tříd, základy zapozdření
10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému
Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.
1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými
Příručka Vzdělávacího střediska Konero ke kurzu Milan Myšák
MS PowerPoint (verze 2010) Příručka Vzdělávacího střediska Konero ke kurzu Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1. Seznámení s prezentacemi 2. Zobrazení prezentace 3. Nastavení programu a prezentace
1. Dědičnost a polymorfismus
1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář
Publikování map na webu - WMS
Semestrální práce z předmětu Kartografická polygrafie a reprografie Publikování map na webu - WMS Autor: Ondřej Dohnal, Martina Černohorská Editor: Filip Dvořáček Praha, duben 2010 Katedra mapování a kartografie
Kontingenční tabulky v MS Excel 2010
Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
Vývoj multiplatformní aplikace v Qt
Vývoj multiplatformní aplikace v Qt z pohledu vývoje Datovky Karel Slaný karel.slany@nic.cz 13. 11. 2015 Obsah Co je Qt Nástroje Qt Koncepty Qt Problémy při vývoji Datovky Balíčkování aplikace Datovka
Možnosti tisku v MarushkaDesignu
0 Možnosti tisku v MarushkaDesignu OBSAH 1 CÍL PŘÍKLADU...2 2 PRÁCE S PŘÍKLADEM...2 3 UKÁZKA DIALOGOVÉHO OKNA...3 4 STRUČNÝ POPIS PŘÍKLADU V MARUSHKADESIGNU...5-1 - 1 Cíl příkladu V tomto příkladu si ukážeme
Obslužný software. PAP ISO 9001
Obslužný software PAP www.apoelmos.cz ISO 9001 červen 2008, TD-U-19-20 OBSAH 1 Úvod... 4 2 Pokyny pro instalaci... 4 2.1 Požadavky na hardware...4 2.2 Postup při instalaci...4 3 Popis software... 5 3.1
3D sledování pozice vojáka v zastavěném prostoru a budově
3D sledování pozice vojáka v zastavěném prostoru a budově Úvod Programový produkt 3D sledování pozice vojáka v zastavěném prostoru a budově je navržen jako jednoduchá aplikace pro 3D zobrazení objektů
Bc. Martin Majer, AiP Beroun s.r.o.
REGISTR DIGITALIZACE HISTORICKÝCH FONDŮ (RDHF) A DIGITÁLNÍCH KONKORDANCÍ (DK) Návrh uživatelského rozhraní klientských aplikací verze 1.0 Bc. Martin Majer, AiP Beroun s.r.o. 28.11.2016-1 - Obsah 1 Seznam
KAPITOLA 12 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM
KAPITOLA 12 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KONTINGENČNÍ TABULKA FILTROVÁNÍ DAT Kontingenční tabulka nám dává jednoduchý filtr jako čtvrté pole v podokně Pole kontingenční tabulky. Do pole Filtry
Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz
Efektivní vývoj mobilních aplikací na více platforem současně Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz Osnova 1. Kam míří platforma Windows Phone 2. Seznámení s univerzálními Windows
Příručka pro aplikaci KSnapshot
Richard J. Moore Robert L. McCormick Brad Hards Kontrolor: Lauri Watts Vývojář: Richard J Moore Vývojář: Matthias Ettrich Překlad: Lukáš Vlček 2 Obsah 1 Úvod 5 2 Použití KSnapshot 6 2.1 Spuštění KSnapshot.....................................
Seznámení s prostředím dot.net Framework
Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené
MS Excel makra a VBA
Autor: RNDr. Obsah: MS Excel makra a VBA 1 Využití, ukázky, výhody a nevýhody... 2 2 Makra a zabezpečení... 2 2.1 Nastavení zabezpečení Excelu... 2 2.2 Uložení maker do sešitu a osobního sešitu maker...
Zobrazování bannerů podporují pouze nově vytvořené šablony motivů vzhledu.
Bannerový systém ProEshop od verze 1.13 umožňuje zobrazování bannerů na popředí e-shopu. Bannerový systém je přístupný v administraci e-shopu v nabídce Vzhled, texty Bannerový systém v případě, že aktivní
Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie, 6.12.2012
Vývoj SW pro mobilní zařízení s ios Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie, 6.12.2012 Perspektiva 3 roky zkušeností s vývojem aplikací pro ios 1 rok vývoj pro Android desítky aplikací Obsah
Programátorská příručka
KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro
Architektura. Vedení sesterské dokumentace
Architektura Tým Lorem Ipsum Verze 1.1 29.3.2015 Obsah 1 Kontext...3 1.1 Cíle projektu...3 2 Technologie...3 2.1 Zvolená alternativa tvorby GUI...3 3 Datové schéma...4 4 Navržená architektura...5 4.1 Fyzický
11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9
Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií
Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ
Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ 10. 5. 2011 Tým: Simplesoft Členové: Zdeněk Malík Jan Rada Ladislav Račák Václav Král Marta Pechová malikz@students.zcu.cz jrada1@students.zcu.cz
Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor
Specifikace softwarového díla & Časový plán implementace pro MEF Editor Cílem projektu je vytvoření pluginu do vývojového prostředí Visual Studio 2010. Plugin bude umožňovat grafickou editaci objektů spojených
TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);
TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;
První kapitola úvod do problematiky
První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru
Obsah. Začínáme programovat v Ruby on Rails 9. Úvod 11. 1. Vítejte v Ruby 15. O autorovi 9 Poděkování 9
Začínáme programovat v Ruby on Rails 9 O autorovi 9 Poděkování 9 Úvod 11 Komu je kniha určena 11 Jak je kniha uspořádána 11 Co ke knize potřebujete 12 Konvence 12 Zdrojový kód 13 Poznámka redakce českého
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT
Nástroje na vývoj aplikací pro ios Trocha motivace na úvod Co budete potřebovat Co když nemáte k dispozici počítač s macos? Vývojové prostředí Xcode
KAPITOLA 1 Nástroje na vývoj aplikací pro ios 11 Trocha motivace na úvod 11 Co budete potřebovat 11 Co když nemáte k dispozici počítač s macos? 12 Vývojové prostředí Xcode 14 Průběžná aktualizace 16 První
Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.
23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,
StatSoft Jak vyzrát na datum
StatSoft Jak vyzrát na datum Tento článek se věnuje podrobně možnostem práce s proměnnými, které jsou ve formě datumu. A že jich není málo. Pokud potřebujete pracovat s datumem, pak se Vám bude tento článek
Multimediální prezentace MS PowerPoint I
Multimediální prezentace MS PowerPoint I Informatika Multimediální prezentace zažívají v poslední době obrovský rozmach. Jsou používány například k reklamním účelům, k předvedení výrobků či služeb. Velmi
Využití OOP v praxi -- Knihovna PHP -- Interval.cz
Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování
Uživatelská příručka Autor: Martin Fiala
1 Uživatelská příručka Autor: Martin Fiala Vzhledem k tomu, že navržený program nefunguje samostatně a jedná se pouze o část implementovanou do pluginu BJ2NB vyvíjeného na Vysoké škole ekonomické, je nutné
Uživatelská příručka. 06/2018 Technické změny vyhrazeny.
Uživatelská příručka 1 OBSAH 1 ÚVOD... 3 1.1 Merbon SCADA... 3 1.1.1 K čemu program slouží...3 2 Přihlášení a odhlášení z programu... 4 3 Projekty... 5 3.1 Výběr zobrazení... 5 3.2 Schémata... 6 3.3 Grafy...
úvod Historie operačních systémů
Historie operačních systémů úvod Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu www.rvp.cz, ISSN: 1802-4785. Provozuje Národní ústav
Závěrečná práce. AutoCAD Inventor 2010. (Zadání D1)
Závěrečná práce AutoCAD Inventor 2010 (Zadání D1) Pavel Čurda 4.B 4.5. 2010 Úvod Tato práce obsahuje sestavu modelu, prezentaci a samotný výkres Pákového převodu na přiloženém CD. Pákový převod byl namalován
František Hudek. červenec 2012
VY_32_INOVACE_FH14 Jméno autora výukového materiálu Datum (období), ve kterém byl VM vytvořen Ročník, pro který je VM určen Vzdělávací oblast, obor, okruh, téma Anotace František Hudek červenec 2012 8.
1. Úvod do obsluhy AutoCADu
1. Úvod do obsluhy AutoCADu Studijní cíl V této lekci se naučíme: Seznámíme se s potřebným zařízením. Způsoby ovládání. Nastavení AutoCADu. Doba nutná k procvičení 1,5 hodiny 1.1 AutoCAD AutoCAD je plnohodnotný
Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace
Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Učební praxe Téma: Program Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 19-21 Číslo: V/5 Programování v jazyce
Angličtina program k procvičování slovní zásoby
Středoškolská technika 2011 Setkání a prezentace prací středoškolských studentů na ČVUT Angličtina program k procvičování slovní zásoby Kamil Hanus Střední průmyslová škola elektrotechniky a informačních
MAXScript výukový kurz
MAXScript výukový kurz Díl čtvrtý jazyk MAXScript, část I. Jan Melichar, březen 2008 Jan Melichar (aka JME) strana 1 OBSAH ÚVOD... 4 ZÁKLADNÍ PŘÍKAZY... 5 OPERÁTORY... 6 PROMĚNNÉ... 6 POLE... 7 ZÁVĚREM...
DUM 03 téma: Tvary - objekty
DUM 03 téma: Tvary - objekty ze sady: 1 tematický okruh sady: Vektorová grafika ze šablony: 09 Počítačová grafika určeno pro: 2. ročník vzdělávací obor: vzdělávací oblast: číslo projektu: anotace: metodika:
Matematika v programovacích
Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?
Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.
13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny
Úvod 13. Seznámení s PowerPointem 15. K čemu slouží PowerPoint a prezentace 16 Obvyklé využití prezentací 17 Možnosti publikování prezentací.
Obsah Úvod 13 1 Seznámení s PowerPointem 15 K čemu slouží PowerPoint a prezentace 16 Obvyklé využití prezentací 17 Možnosti publikování prezentací. 19 Spuštění a ukončení programu 20 Spuštění PowerPointu
Obsah. 1 Úvod do Visia 2003 15. 2 Práce se soubory 47. Předmluva 11 Typografická konvence použitá v knize 13
Předmluva 11 Typografická konvence použitá v knize 13 1 Úvod do Visia 2003 15 Visio se představuje 16 Výchozí podmínky 16 Spuštění a ukončení Visia 18 Způsoby spuštění Visia 18 Ukončení práce s Visiem
Generické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora
umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www:
Úvodem... 9 Kapitola 1 Karetních
Úvodem... 9 Základní znalosti o programovacích jazycích...10 Jazyk C# a platforma.net...10 Visual C# 2010 Express...11 Instalace platformy.net 4.0 a Visual C# 2010 Express...11 Zdrojový kód aplikací...12
KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ
KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ KLÍČOVÉ POJMY Internet World Wide Web FTP, fulltext e-mail, IP adresa webový prohlížeč a vyhledávač CÍLE KAPITOLY Pochopit, co je Internet
Tvorba internetových aplikací s využitím framework jquery
Tvorba internetových aplikací s využitím framework jquery Autor Michal Oktábec Vedoucí práce PaedDr. Petr Pexa Školní rok: 2009-10 Abstrakt Tato práce se zabývá využití frameworku jquery pro vytváření
Inthouse Systems s.r.o. Specifikace. Inthouse App a Inthouse Studio pro Siemens Climatix 6XX. Verze software 1.X. Revize dokumentu 6
Inthouse Systems s.r.o. Specifikace Inthouse App a Inthouse Studio pro Siemens Climatix 6XX Verze software 1.X Revize dokumentu 6 Datum 4. 11. 2016 Obsah Obsah 1 Úvod 2 Základní přehled systému 2 Inthouse
1. Nastavení dokumentu
Obsah as a asta 2. Okno / více dokumentů otevírání, zavírání, vytváření nového, přepínání, ukládání 3. Barevný režim dokumentu 4. Zobrazení, vlastní pohledy 5. Objekty vkládání 1. Nastavení dokumentu Uprostřed
Vývoj mobilních aplikací s využitím JavaFX Mobile
Vývoj mobilních aplikací s využitím JavaFX Mobile Jan Trestr RNDr. Jaroslav Icha Školní rok 2009 2010 Abstrakt Bakalářská práce se zabývá možnostmi skriptovacího jazyka JavaFX pro vývoj mobilní aplikace
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
MVVM pro desktop i web
MVVM pro desktop i web Tomáš Herceg CEO @ RIGANTI Co-founder of Update Conference Microsoft MVP tomas.herceg@riganti.cz @hercegtomas www.tomasherceg.com/blog MVVM Model View ViewModel { firstname: "Humphrey",
Popis funkcí tlačítek jednotlivých modulů programu OGAMA
Nevázaná příloha bakalářské práce VYUŽITÍ OPEN-SOURCE NÁSTROJŮ PRO PŘÍPRAVU, PRŮBĚH A VYHODNOCENÍ EYE-TRACKING EXPERIMENTŮ Popis funkcí tlačítek jednotlivých modulů programu OGAMA Michal KUČERA, 2014 Replay
Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody
Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro
Vytváření DVD s DVDStyler
Vytváření DVD s DVDStyler 21. 8. 2009 Jan Drábek Multimédia 26352 DVDStyler je multiplatformní program (ano, funguje i na Windows) pro vytváření profesionálně vypadajících DVD i interaktivních DVD menu.
Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13
Obsah Předmluva 11 O této knize 13 Konvence........................................................13 Inovace prostřednictvím otevřenosti 15 Ekosystém Symbianu.............................................16
MVC (Model-View-Controller)
MVC vs PAC MVC (Model-View-Controller) Architektonický vzor zabývající se uživatelským rozhraním Odděluje doménovou (bussiness) logiku a uživatelské rozhraní do tří nezávislých komponent: Model View Controller
VY_32_INOVACE_INF.19. Inkscape, GIMP, Blender
VY_32_INOVACE_INF.19 Inkscape, GIMP, Blender Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Kalous Základní a mateřská škola Bělá nad Radbuzou, 2011 INKSCAPE Inkscape je open source
1. Začínáme s FrontPage 2003 11
Úvod 9 1. Začínáme s FrontPage 2003 11 Instalace programu 12 Spuštění a ukončení programu 15 Základní ovládání 16 Hledání souborů 30 Najít a nahradit 31 Tisk 32 Schránka sady Office 34 Nápověda 36 Varianty
Administrace webu Postup při práci
Administrace webu Postup při práci Obsah Úvod... 2 Hlavní menu... 3 a. Newslettery... 3 b. Administrátoři... 3 c. Editor stránek... 4 d. Kategorie... 4 e. Novinky... 5 f. Produkty... 5 g. Odhlásit se...
Příloha 6. Palety nástrojů
Příloha 6. Palety nástrojů Palety nástrojů v IDE poskytují zkrácení pro příkazy nabídky. Příkazy jsou rozděleny do několika palet nástrojů, které mohou být nezávisle přeskupeny nebo vloženy do plovoucích
PROGRAMOVÁNÍ PRO MS WINDOWS 1
Jazyk C# je moderní jazyk z rodiny jazyků podporovaných aplikačním prostředím.net. Cílem předmětu je seznámit posluchače s tímto objektovým jazykem, a s programováním aplikací pro MS Windows. V průběhu
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Olga Rudikova 2. ročník APIN
Olga Rudikova 2. ročník APIN Redakční (publikační) systém neboli CMS - content management system (systém pro správu obsahu) je software zajišťující správu dokumentů, nejčastěji webového obsahu. (webová
Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23
5 Obsah O autorech 15 O odborných korektorech 15 Úvod 16 Rozdělení knihy 16 Komu je tato kniha určena? 18 Co potřebujete, abyste mohli pracovat s touto knihou? 18 Sdělte nám svůj názor 18 Zdrojové kódy
1. Úvod do Ajaxu 11. Jak Ajax funguje? 13
Obsah Úvodem 9 1. Úvod do Ajaxu 11 Jak Ajax funguje? 13 Popis 13 Ukázky 13 Jaké jsou možnosti tvorby interaktivních webových aplikací? 15 Co je třeba znát? 16 Jak fungují technologie Ajaxu 16 Jak funguje
Nové jazykové brány do Caché. Daniel Kutáč
Nové jazykové brány do Caché Daniel Kutáč O čem budeme mluvit.net T/SQL Perl Python MultiValue Basic Téma.NET provider .NET Provider Co lze již dnes Factory / VisM ODBC.NET Web Services Factory a VisM
Excel tabulkový procesor
Pozice aktivní buňky Excel tabulkový procesor Označená aktivní buňka Řádek vzorců zobrazuje úplný a skutečný obsah buňky Typ buňky řetězec, číslo, vzorec, datum Oprava obsahu buňky F2 nebo v řádku vzorců,
VIANIV. Interaktivní návrh nivelety. Příručka uživatele. Revize PRAGOPROJEKT a.s. & VIAPONT s.r.o.
ROADPAC 06 Příručka uživatele Revize 13.08.2006 PRAGOPROJEKT a.s. & VIAPONT s.r.o. PRAGOPROJEKT a.s., 147 54 Praha 4, K Ryšánce 16 VIAPONT s.r.o., Vodní 13, 602 00 Brno O B S A H 1. ÚVOD... 3 2. SOUBORY
Postupy práce se šablonami IS MPP
Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta