Bánsághi Anna 2015 Bánsághi Anna 1 of 39

Hasonló dokumentumok
Bánsághi Anna 2015 Bánsághi Anna 1 of 31

Programozási környezetek

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Eseményvezérelt és objektumorientált programozás

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Programozási technológia

Entity Framework alapú adatbáziselérés 2

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Ugráló gomb oktatási segédlet Ugráló gomb

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

OOP #14 (referencia-elv)

Swing GUI készítése NetBeans IDE segítségével

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Vizuális programozás gyakorlat

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Események C#-ban Krizsán Zoltán iit

Java programozási nyelv 5. rész Osztályok III.

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

Bánsághi Anna

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Access adatbázis elérése OLE DB-n keresztül

Programozási alapismeretek 4.

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

Programozási technológia

Már megismert fogalmak áttekintése

Eseménykezelés - Lottó játék

Előszó A Windows alkalmazásfejlesztés rövid története A Windows életútja A Windows 8 paradigmaváltása... 16

Programozási Paradigmák és Technikák

A szerzõrõl... xi Bevezetés... xiii

Választó lekérdezés létrehozása

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Grafikus felhasználói felületek, eseménykezelés

Objektumorientált programozás C# nyelven

Bevezetés a Python programozási nyelvbe

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Java programozási nyelv 4. rész Osztályok II.

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

BME MOGI Gépészeti informatika 7.

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Objektumorientált programozás C# nyelven

ContractTray program Leírás

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

ELTE SAP Excellence Center Oktatóanyag 1

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Webshop készítése ASP.NET 3.5 ben I.

Eseményvezérelt alkalmazások fejlesztése II 8. előadás. Összetett WPF alkalmazások. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

C#, OOP. Osztályok tervezése C#-ban

Elemi Alkalmazások Fejlesztése II.

ServiceTray program Leírás

OOP és UML Áttekintés

GráfRajz fejlesztői dokumentáció

DebitTray program Leírás

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Java Programozás 11. Ea: MVC modell

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1

BME MOGI Gépészeti informatika 8.

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Objektumorientált programozás C# nyelven

Elemi alkalmazások fejlesztése III.

JAVA PROGRAMOZÁS 2.ELŐADÁS

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Bevezetés, a C++ osztályok. Pere László

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Eseményvezérelt alkalmazások

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Szoftvertechnolo gia gyakorlat

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Objektumorientált programozás C# nyelven

Java programozási nyelv 6. rész Java a gyakorlatban

OOP. Alapelvek Elek Tibor

C++ programozási nyelv

Osztályok. 4. gyakorlat

Vizuális, eseményvezérelt programozás I.

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Webszolgáltatás és XML alapú adatbázis. 1. Az adatbázis megtervezése

OOP: Java 8.Gy: Abstract osztályok, interfészek

Tartalomjegyzék. Előszó... 10

Programozás C++ -ban 2007/7

C++ programozási nyelv

Vizuális programozás gyakorlat

Cikktípusok készítése a Xarayában

Programozási nyelvek Java

2. Beadandó feladat dokumentáció

2. Beadandó feladat dokumentáció

Átírás:

ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 4. ELŐADÁS - WPF BEVEZETÉS 2015 Bánsághi Anna 1 of 39

TEMATIKA I. C# áttekintés II. WPF 2015 Bánsághi Anna 2 of 39

II. WPF BEVEZETŐ 1. Eseménykezelés 2. WPF alrendszer 3. WPF lényegi elemek 2015 Bánsághi Anna 3 of 39

1. ESEMÉNYEK a C# nyelvi szinten valósítja meg az eseménykezelést, amelyhez eseményeket (event) és delegáltakat (delegate) használ az eseménykezelő egy szabványos metódus, de mindig két paramétere van, a küldő objektum, illetve az eseménytulajdonságok, amelyek leszármazottai hordozhatnak speciális értéket a delegált szabja meg az eseménytulajdonságok (EventArgs) típusát 2015 Bánsághi Anna 4 of 39

2015 Bánsághi Anna 5 of 39

az összetett események úgy valósulnak meg, hogy a program egy egyszerű eseményre kivált egy másikat az egérrel kattintunk, és az egér a gombon van, akkor kiváltódik a gomb kattintása esemény tehát az eseménykezelés egy több lépcsős, ciklikus folyamat ÖSSZETETT ESEMÉNYEK 2015 Bánsághi Anna 6 of 39

HIRDETŐ - FELIRATKOZÓ egyik osztály vagy objektum értesít egy másik osztályt vagy objektumot, hogy valami (annak érdeklődésére számottartó dolog) történt hirdető (publisher) az az osztály vagy objektum, mely az eseményt küldi (kiváltja) feliratkozó (subscriber) eseményt fogadja (kezeli) az az osztály vagy objektum, mely az grafikus alkalmazásokban az események kiváltói általában a vezérlők, azaz gombok, listaelemek, választók a vezérlők számos beépített eseménye közül (kattintás, húzás, kipipálás) választjuk ki azokat, melyeket kezelni fogunk 2015 Bánsághi Anna 7 of 39

ESEMÉNYEK TULAJDONSÁGAI a hirdető felelőssége, hogy egy esemény mikor váltódik ki, a feliratkozó felelőssége, hogy az eseményre válaszul milyen tevékenység hajtódik végre egy eseménynek több feliratkozója is lehet, egy feliratkozó különféle hirdetőktől érkező különféle eseményt is tud kezelni egyszerre azok az események, melyekre nincs feliratkozó, sosem váltódnak ki egy több feliratkozóval rendelkező esemény kiváltása esetén az eseménykezelők szinkronizáltan hívódnak meg, de lehetőség van aszinkron eseménykezelésre is 2015 Bánsághi Anna 8 of 39

ESEMÉNYEK TULAJDONSÁGAI minden esemény a System.EventHandler delegált típuson alapul public delegate void EventHandler( object sender, EventArgs e ); az eseménynek van: küldője (sender) kiváltja az eseményt, pl. gomb, lista tulajdonságai (arguments) meghatározzák az esemény paramétereit, pl. egér pozíciója a húzáskor, kiválasztott listaelem indexe lehet delegáltakat létrehozni, vagy sablont használni más tulajdonságokhoz 2015 Bánsághi Anna 9 of 39

ESEMÉNYEK A HIRDETŐBEN a hirdető osztályban az esemény a tagok között class Hirdeto { // mezők // tulajdonságok // események public event EventHandler EseménytKivált; // konstruktorok // metódusok 2015 Bánsághi Anna 10 of 39

FELIRATKOZÁS ESEMÉNYEKRE az eseménykezelő hozzárendelésekor az eseménykezelő nevét kell megadnunk a += operátor lehetővé teszi, hogy egy eseményhez több eseménykezelőt is hozzárendeljünk a társításban bármely objektum eseményét rendelhetjük bármely, azonos szignatúrájú eseménykezelőhöz a -= operátor segítségével tudjuk bontatni a kapcsolatot <objektumnév>.<eseménynév> += new EventHandler(<metódusnév>); <objektumnév>.<eseménynév> -= <metódusnév>; 2015 Bánsághi Anna 11 of 39

FELIRATKOZÁS ESEMÉNYEKRE a feliratkozó osztályt vagy objektumot az eseménykezelőjével feliratjuk az imént létrehozott eseményre class Program { static void Main() { Hirdeto.EseménytKivált += Feliratkozo.EseménytKezel; a feliratkozó osztályban definiáljuk az eseménykezelőt class Feliratkozo { // mezők // tulajdonságok // konstruktorok // metódusok public void EseménytKezel( object sender, EventArgs args ) { // eseménykezelő logika 2015 Bánsághi Anna 12 of 39

ESEMÉNYEK KIVÁLTÁSA események kiváltása az esemény meghívásával történik, ahol átadjuk a megfelelő paramétereket esemény csak akkor váltható ki, ha van hozzárendelve eseménykezelő, különben az esemény null értéknek felel meg (és így kivételt kapunk) általában a kiváltást külön metódusban végezzük 2015 Bánsághi Anna 13 of 39

ESEMÉNYKEZELŐK HÍVÁSA - ELVBEN class Hirdeto { // mezők // tulajdonságok // események public event EventHandler EseménytKivált; // konstruktorok // metódusok public void ÉrdeklődésreSzámottartóMetódus( formális paraméterek ) { // metódus logika // EventHandler típusú delegált példány hívása // küldő és argumentumok paraméterekkel this.eseménytkivált( this, EventArgs.Empty ); // metódus logika 2015 Bánsághi Anna 14 of 39

ESEMÉNYKEZELŐK HÍVÁSA - GYAKORLATBAN class Hirdeto {... public event EventHandler EseménytKivált; public void ÉrdeklődésreSzámottartóMetódus( formális paraméterek ) { // metódus logika // temporális változó, hogy a fel- és leiratkozók ne keveredjenek EventHandler handler = this.eseménytkivált; if( handler!= null ) { // ha van feliratkozó, akkor handler( this, EventArgs.Empty ); // eseménykezelők futtatása // metódus logika 2015 Bánsághi Anna 15 of 39

ESEMÉNYKEZELŐK HÍVÁSA - MÉG SZEBBEN class Hirdeto {... public event EventHandler EseménytKivált; public void ÉrdeklődésreSzámottartóMetódus( formális paraméterek ) { // metódus logika OnEsemenytKivalt( EventArgs.Empty ); // metódus logika protected virtual void OnEsemenytKivalt( EventArgs e ) { EventHandler handler = this.eseménytkivált; if( handler!= null ) { handler( this, e ); 2015 Bánsághi Anna 16 of 39

ARGUMENTUMOK SZÁRMAZTATÁSA public class SajatEsemenyArgumentumok : EventArgs { public SajatEsemenyArgumentumok( string s ) { uzenet = s; private string Uzenet; public string Uzenet { get { return uzenet; set { uzenet = value; // privát mező // nyilvános tulajdonság a mezőre class Hirdeto {... public event EventHandler<SajatEsemenyArgumentumok> EseménytKivált;... 2015 Bánsághi Anna 17 of 39

2. WPF ALRENDSZER Windows operációs rendszeren futó.net környezet alrendszere, mellyel kliens alkalmazások fejleszthetők mind desktop, mind böngésző-alapú webes alkalmazások a magja a képfelbontás független, vektor alapú renderelő motor (Direct3D) a 3D grafikus kártyák kihasználására lehetőséget ad a felület deklaratív leírására, Extensible Application Markup Language (XAML) jóval nagyobb testre szabhatóságot biztosít (megjelenítés és stílusok átdefiniálási lehetősége, megjelenítési tulajdonságok erőforrás-alapú tárolása) a WPF típusai nagyrészt a System.Windows névtérben találhatók 2015 Bánsághi Anna 18 of 39

FELÜLET ÉS VISELKEDÉS az alkalmazásfejlesztés során használható mind a deklaratív markup nyelv, mind az imperatív - objektumorientált nyelv markup code-behind alkalmazás megjelenése, felülete (XAML) A SZÉTVÁLASZTÁS ELŐNYEI alkalmazás logikája, viselkedése (C#) a függetlenített megjelenés és vezérlés jelentősen javít az alkalmazás architektúrán, a minőségen specializált fejlesztőkörnyezetek a két nyelvhez Expession Blend a felülettervezők számára Visual Studio a programozók számára 2015 Bánsághi Anna 19 of 39

MARKUP a XAML egy XML alapú deklaratív nyelv, ablakok, dialógus dobozok, oldalak, felhasználói vezérlők létrehozására, és ezeket további vezérlőkkel, alakzatokkal, grafikákkal való feltöltésére használjuk ablakokban vagy oldalakon elhelyezhető és viselkedéssel bíró grafikus elemeket hívjuk vezérlőknek (Controls) minden XAML vezérlő megfeleltethető egy System.Windows.Controls névtérbeli osztálynak, a deklaratív leírás pedig egy imperatív kódnak így minden, amit XAML-ben leírunk, leírható kóddal is, és dinamikusan (kódból) is létrehozhatunk vezérlőket megadjuk tulajdonságaikat (Properties) (pozíció, méret, tartalom) és viselkedésüket (Events) (eseményekkel vagy parancsokkal) 2015 Bánsághi Anna 20 of 39

VEZÉRLŐK LÉTREHOZÁSA XAML KÓDDAL.xaml <Canvas Name="myCanvas"> <Button Name="myButton" Content="Kattints" Width="45" /> </Canvas> C# KÓDDAL.xaml.cs Canvas mycanvas = new Canvas(); Button mybutton = new Button(); mybutton.content = "Kattints"; mybutton.width = 45; mycanvas.addchild( mybutton ); 2015 Bánsághi Anna 21 of 39

VISELKEDÉS DEFINIÁLÁSA FELÜLETI ELEMEK.xaml <Canvas Name="myCanvas"> <Button Name="myButton" Content="Kattints" Width="45" Click="myButton_Click" /> </Canvas> VISELKEDÉS.xaml.cs private void mybutton_click( object sender, RoutedEventArgs e ) { MessageBox.Show( "Hello World!" ); 2015 Bánsághi Anna 22 of 39

VISUAL STUDIO a Visual Studio biztosít egy egyszerű felülettervező eszközt, mellyel grafikusan készíthetjük el a GUI-t, a hozzá tartozó.xaml kód pedig legenerálódik, így nem szükséges a teljes kódot megírnunk egy eszköztárból (ToolBox) válogathatunk a vezérlők közül, melyeket grafikusan (drag-and-drop módszerrel) helyezhetjük el a felületre a felületi elemek tulajdonságait és eseményeit külön menüben állíthatjuk bármikor válthatunk a felületi kód és a tervező nézet között, és felváltva szerkeszthetjük a felületet 2015 Bánsághi Anna 23 of 39

FELÜLETI ELEMEK OSZTÁLYHIERARCHIÁJA 2015 Bánsághi Anna 24 of 39

3. WPF LÉNYEGI ELEMEI konzol felületű alkalmazások csak billentyűzetről fogadnak bemenetet a programfutás meghatározott pontjain, a vezérlés módját mi szabályozzuk (pl. főprogram, menü) grafikus felületű alkalmazások billentyűzetről és egértől (érintőképernyőtől, stb.) fogadnak bemenetet a programfutás szinte bármely pillanatában, a vezérlés módja előre definiált a vezérlést az alkalmazás osztály (Application) látja el, kezeli a felhasználói bevitelt, a felület elemeit, beállítja az alkalmazástulajdonságokat (megjelenés, elérési útvonal,...) 2015 Bánsághi Anna 25 of 39

WPF ALKALMAZÁS FORDÍTÁSA 2015 Bánsághi Anna 26 of 39

RÉSZLEGES OSZTÁLYOK lehetőség van arra, hogy egy osztály (class), interfész (interface) vagy rekord (struct) definícióját részletekben, akár több különböző fájlban adjuk meg a részek fordításkor kerülnek összefésülésre public partial class Pont { public int Kerulet() {... // keruletek.cs public partial class Pont { public void Terulet() {... // teruletek.cs 2015 Bánsághi Anna 27 of 39

Foablak.xaml ABLAK DEFINIÁLÁSA <Window x:class ="Nevter.Foablak" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" Title ="Főablak">... <!-- csak egy elem helyezhető az ablakba, pl. Grid --> </Window> Foablak.xaml.cs namespace Nevter { public partial class Foablak : Window { public Foablak { // konstruktor InitializeComponent(); // a felületi kód futtatása 2015 Bánsághi Anna 28 of 39

MARKUP ÉS CODE-BEHIND ÖSSZEKAPCSOLÁSA ahhoz, hogy a felületi és a háttérkód együtt tudjon működni, két dolog szükséges 1. 2. a felületi kódban a gyökér elemnek rendelkeznie kell az x:class attribútummal. A felületi kódból generálódik egy gyökér elem osztályból származó részleges osztály, az x:class attribútumban adott néven a háttérkódban az osztály részleges kell hogy legyen, neve a felületi kódban az x:class attribútumban megadott név, és a gyökér elem osztályából származik fordításkor a felületi kódból generált és az általunk karbantartott részleges osztály összerendelődik 2015 Bánsághi Anna 29 of 39

Alkalmazas.xaml ALKALMAZÁS DEFINIÁLÁSA <Application x:class ="Nevter.Alkalmazas" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri ="Foablak.xaml"> <!-- indításkor automatikusan megnyíló ablak -->... </Application> Alkalmazas.xaml.cs namespace Nevter { public partial class Alkalmazas : Application {... 2015 Bánsághi Anna 30 of 39

3. WPF ÁTTEKINTÉS a WPF különféle bemenet típusokat támogat, úgymint szöveg, érintőképernyő, egér, parancsok, fókusz, drag-and-drop, digitális tinta ezen bemeneteket a bemenetkezelő kapja el, majd a felületi elemeken kiváltódnak az események kétféle mechanizmus áll rendelkezésre az események hatására bekövetkező alkalmazás logika hívására: eseménykezelés Nicsak, valami történt! parancskiadás Csináld ezt! 2015 Bánsághi Anna 31 of 39

ESEMÉNYEK KÉT FAJTÁJA egy ablakon vagy oldalon elhelyezett vezérlő példányok hierarchikus szerkezetbe (Logical Tree) szervezettek a felületi kód szerkezetének megfelelően direct events csak a kiváltó vezérlőn belül hívhatók az eseménykezelők routed events az eseményt kiváltó vezérlő ősein vagy leszármazottain belül is hívhatók az eseménykezelők 2015 Bánsághi Anna 32 of 39

PARANCSOK - COMMANDS szétválasztható a felhasználói tevékenységet figyelő és az ezen tevékenységre reagáló kód, ez utóbbit hívjuk parancsnak ráadásul ha több vezérlő hasonló reakciót igényel, akkor a parancs bármelyiken meghívható gyakori alkalmazási területe vezérlők IsEnabled tulajdonságának egyetlen paranccsal történő beállítása léteznek előre definiált parancsok, de mi magunk is létrehozhatunk 2015 Bánsághi Anna 33 of 39

ELRENDEZÉS - LAYOUT a vezérlők relatív pozícionálása lehetővé teszi, hogy az ablakon elhelyezett vezérlők elrendezése alkalmazkodjon az ablak méretének változásához ez egy kétlépéses folyamat 1. a vezérlő közli a szülő elemmel, hogy hol és milyen méretű helyre van szüksége 2. a szülő elem közli, hogy mennyi helyet tud biztosítani elrendezés típusok: Canvas, DockPanel, Grid, StackPanel, VirtualizingStackPanel, WrapPanel 2015 Bánsághi Anna 34 of 39

ADATKÖTÉS - DATA BINDING a legtöbb alkalmazás lehetővé teszi, hogy felhasználói különféle adatokat nézegessenek, szerkesszenek az adattárolás és az adatelérés történhet pl. távoli hívással, adatbáziskezelőrendszerrel miután az adatbázisból betöltődtek az adatok a program objektumaiba, két dolgot kell biztosítani az alkalmazásban: 1. az adatok megjelenítéséhez, szerkesztéséhez az objektumokból a vezérlőkbe kell másolni az adatokat 2. a vezérlőkben módosított adatokat vissza kell másolni az objektumokba 2015 Bánsághi Anna 35 of 39

ADATKÖTÉS ELVEI szinte az összes felületi elem a FrameworkElement osztály leszármazottja, és így örökli a DataContext tulajdonságot egy felületi elem DataContext tulajdonságában adjuk meg a kötendő objektumot a DataContext specifikálja, hogy az adatkötésben melyik felületi elem melyik objektummal áll kapcsolatban amint a DataContext beállításra került, a felületi elem eléri az adott objektum tulajdonságait a DataContext értéke elérhető az összes gyerek vezérlőben 2015 Bánsághi Anna 36 of 39

ADATKÖTÉS ELEMEI 2015 Bánsághi Anna 37 of 39

SABLONOK - TEMPLATING a megjelenés és a logika szétválasztásának elve nemcsak az alkalmazásarchitektúrára (XAML és C# részleges osztályok), hanem alacsonyabb szinten, a vezérlőkön is érvényes a vezérlőknek két teljesen szétválasztható része van: logika az eseménykezeléssel, parancsokkal, adatkötéssel megjelenés a látvány, a stílusok a ContentControl osztályban definiálva, mely tovább bontható: ControlTemplate a vezérlő kinézete DataTemplate a vezérlőben tárolt adat kinézete 2015 Bánsághi Anna 38 of 39

ERŐFORRÁSOK - RESOURCES az erőforrás egy olyan objektum, mely az alkalmazás tetszőleges pontjáról elérhető a megjelenéshez kapcsolódó sablonokat megadhatjuk erőforrásokként a saját magunk által definiált parancsokat szintén definiálhatjuk erőforrásokként 2015 Bánsághi Anna 39 of 39