V 1.0 Programozás III. További ablakok készítése Továbbított események.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

2010/2011 ősz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál  Részei.
Grafikus tervezőrendszerek programozása 10. előadás.
II. Grafikus felhasználói interfész
Operációs Rendszerek I.
Windows Presentation Foundation (WPF)
C++ programozási nyelv Gyakorlat hét
Számítógépes ismeretek 5. óra
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Programozás II. 3. Gyakorlat C++ alapok.
A Windows grafikus felülete
A körlevél készítésének menete
A C++ programozási nyelvSoós Sándor 1/10 C++ programozási nyelv Gyakorlat - 5. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Haladó Programozás Eseménykezelés ismétlés Névtelen metódusok (anonymous methods)
Kliensoldali Programozás
Delphi programozás Delphi programozás SRTNB előadás - Borland Delphi – fontosabb komponensek tárgyalása Nagyváradi Anett.
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
Delphi programozás 8. ELŐADÁS ADO ActiveX Data Objects.
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
Rétegek használata GIMP képszerkesztő programban
Multimédiás programok készítése Macromedia Director rendszerben 2. előadás Készítette: Kosztyán Zsolt
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
V 1.0 OE-NIK HP 1 Programozási Paradigmák és Technikák Eseménykezelés Névtelen metódusok (anonymous methods)
A LabVIEW használata az oktatásban
A program a „Tudáshasznosulást, tudástranszfert segítő eszköz-, és feltételrendszer kialakítása, fejlesztése a Műegyetemen” (TÁMOP /1/KMR )
J.Zs.Cs.: Vizuális programozás (c) 2010 Vizuális programozás Fájl- és állományrendszer kezelés Névtér: System.IO.
Űrlapok és keretek.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Delphi Készítette: Rummel Szabolcs Elérhetőség:
Visual Basic 2008 Express Edition
Visual Basic 2008 Express Edition
Web-grafika II (SVG) 8. gyakorlat Kereszty Gábor.
Web-grafika II (SVG) 7. gyakorlat Kereszty Gábor.
Webprogramozó tanfolyam
A Visual Basic nyelvi elemei
Programozás III. Grafikus felület API-k és összehasonlításuk
Gazdasági informatikus - Szövegszerkesztés 1 Hosszú dokumentumok kezelése.
Az egyik legnagyobb előnye hogy magyar nyelvű és ezáltal egyszerűen használható. További nagy előnye az hogy ingyenesen használható és letölthető. A Gimp.
Első lépések a szövegszerkesztő használatában
Számítógépes grafika I. AUTOCAD alapok
Prezentációk készítése
A Visual Basic és a programozás oktatása
Web-grafika (VRML) 1. gyakorlat Nyitrai Erika Varga Balázs alapján Kereszty Gábor.
Grafikus programozás Készítette: Csernok László
Opencms modul fejlesztés Krizsán Zoltán. Modulok fajtái Nincs előírás, csak tipikus tennivalók: –Content type: új típus(oka)t vezet be. –Template: új.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Windows Forms alkalmazás készítése Czigléczky Gábor 2009.
Programozás III ÖTLETEK A FELADATMEGOLDÁSHOZ. A HF-EK APROPÓJÁN Néhány javaslat: 1. Jó lenne, ha a feladatmegoldás előtt átnéznék az előadás-anyagokat.
V 1.0 Programozás III. Grafikus felület API-k és összehasonlításuk WPF Hello World Fontosabb UI-elemek UI-elemek tartalommodelljei UI-elemek öröklődési.
V 1.1 Programozás III. Felhasználóifelület-elemek fontosabb tulajdonságai, eseményei, metódusai XAML alapok.
V 1.0 Programozás III. XML XAML Adatkötés I.. V 1.0ÓE-NIK, 2014 XML (w3schools.com) Hierarchikus adatleíró formátum XML deklarációk + elemek + attribútumok.
V 1.0 Programozás III. Gyakorlás. V 1.0ÓE-NIK, 2014 Gyakorlás –Feladat: Tic Tac Toe játék –Szabályok: A játékosok felváltva teszik le a jelöléseiket.
Alkalmazásfejlesztés gyakorlat
Továbbított események További ablakok készítése
Neumann János Informatikai Kar
Gépészeti informatika (BMEGEMIBXGI)
Neumann János Informatikai Kar
Programozás III. Felhasználóifelület-elemek fontosabb tulajdonságai, eseményei, metódusai Preview események.
ListBox CheckedListBox TextBox
Neumann János Informatikai Kar
Programozás C# -ban Elágazások.
Neumann János Informatikai Kar
Kanyó Kristóf Milacski Zoltán
Ubuntu – ismerkedés Fájlok és könyvtárak
Adatkötés Sablonokkal
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Folyamatok.
Standard párbeszédablakok
Előadás másolata:

V 1.0 Programozás III. További ablakok készítése Továbbított események

V 1.0ÓE-NIK, További ablakok készítése Az ablakokat kétféle módon használhatjuk: –Modális megjelenítés: amíg a felhasználó a modális ablakot be nem zárja, nem aktiválhat más ablakot Figyelmeztetés megjelenítése Hibaüzenetek közlése Megerősítések kérése Adatok bekérése –Nem modális megjelenítés: más ablakokkal párhuzamosan használható Lehetőségek: –MessageBox osztály előre elkészített dialógusablakai (csak modális) –Microsoft.Win32 névtér dialógusablakai (csak modális) –Saját készítésű ablakok

V 1.0ÓE-NIK, MessageBox osztály Funkció: olyan üzenetablak megjelenítése, amely tartalmazhat üzenetet, gombokat és ikonokat Nem hozunk létre példányt, hanem az osztály statikus Show tagfüggvényét hívjuk –A függvény paraméterei határozzák meg, hogy milyen szöveg, gomb és ikon jelenik meg –A visszatérési értéke a MessageBoxResult felsorolás egy eleme, és a bezárás módjáról ad információt Használata: MessageBox.Show("Egysoros üzenet"); MessageBox.Show("Többsoros\nüzenet\nfejléccel", "Üzenet fejléccel");

V 1.0ÓE-NIK, MessageBox paraméterek I. Megjelenítendő gombok: A megjelenítendő gombokat a MessageBoxButton felsorolás egy elemével határozzuk meg: A Show visszatérési értéke többnyire a megnyomott gomb nevével egyező nevű MessageBoxResult felsoroláselem: –MessageBoxResult.OK, MessageBoxResult.Cancel, MessageBoxResult.Yes… –A piros X gombbal való bezárás többnyire MessageBoxResult.Cancel, kivéve, ha a MessageBox csak OK értéket tud visszaadni (csak ilyen gombot tartalmaz), mert akkor ez is OK-nak számít. Felsorolás elemeLeírás OKA dialógus OK gombot tartalmaz OKCancelA dialógus OK és Cancel gombokat tartalaz YesNo A dialógus Yes és No gombokat tartalmaz (a kötelező választás érdekében letiltja a piros X-et!) YesNoCancelA dialógus Yes, No és Cancel gombokat tartalmaz MessageBox.Show("Többsoros\nüzenet\nfejléccel", "Fejléc", MessageBoxButton.YesNoCancel);

V 1.0ÓE-NIK, MessageBox paraméterek II. Megjelenítendő ikon: A megjeleníthető ikon a MessageBoxImage felsorolás egy eleme: Felsorolás elemeIkon AsteriskKis i betű kék körben ErrorFehér X piros körben ExclamationFelkiáltójel sárga háromszögben HandFehér X piros körben InformationKis i betű kék körben None- QuestionKérdőjel körben StopFehér X piros körben WarningFelkiáltójel sárga háromszögben MessageBox.Show("Többsoros\nüzenet\nfejléccel", "Fejléc", MessageBoxButton.YesNoCancel, MessageBoxImage.Error);

V 1.0ÓE-NIK, 2014 Microsoft.Win32 névtér dialógusablakai OpenFileDialog: fájl megnyitásához SaveFileDialog: fájl mentéséhez A ShowDialog() visszatérési értéke: –bool? típusú (nullable bool) –true: a felhasználó elvégezte az interakciót (a dialógusablakban megadott információ felhasználható) –false: „mégsem” jellegű kilépés (a dialógusablakban megadott információ nem felhasználható) –null: az ablak még nem záródott be MINDIG ellenőrizni kell! 6 OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == true) { string kivalasztottFajl = openFileDialog.FileName; //... fájl megnyitása, kezelése... }

V 1.0ÓE-NIK, 2014 Feladat 7

V 1.0ÓE-NIK, 2014 Feladat – előző kiegészítése 8

V 1.0ÓE-NIK, Saját ablakok készítése Saját ablakok használata: 1..xaml +.xaml.cs fájlok létrehozása: Project -> Add -> Window... Helyezzük el rajta a vezérlőket, állítsuk be a tulajdonságokat, készítsük el a működést 2.Hozzuk létre a példányt, jelenítsük meg a hívó ablakból modálisan/nem modálisan Megjelenítés –window.Show();  megjelenít nem modálisan –window.ShowDialog();  megjelenít modálisan, bool? visszatérési értéke jelzi, hogy milyen módon zártuk be az ablakot MyWindow window = new MyWindow(); window.Show(); MyWindow window = new MyWindow(); if (window.ShowDialog() == true) { //... }

V 1.0ÓE-NIK, 2014 Saját ablakok készítése Ha a saját ablak bezárásának módjáról információt akarunk adni a ShowDialog() függvény visszatérési értékeként: this.DialogResult –Ez be is zárja az ablakot Button példányok kapcsolódó tulajdonságai: –IsCancel – ESC gomb lenyomására ez a gomb fog megnyomódni, és bezárja az ablakot (általában a Cancel) –IsDefault – Enter gomb lenyomására ez a gomb fog megnyomódni (általában az OK) Nem zárja be az ablakot Általában az eseménykezelőben viszont DialogResult-ot állítunk 10 private void Button_Click(object sender, RoutedEventArgs e) { this.DialogResult = true; }

V 1.0ÓE-NIK, Saját ablakok készítése Saját tervezésű ablakokban bekért értékeket tulajdonságokon keresztül szokás visszaadni –Minden értékhez készítsünk egy-egy tulajdonságot Főleg csak modális megjelenítés esetén! A párbeszédablakot aktivizáló ablakban előbb a visszatérési értéket vizsgáljuk meg, majd ennek megfelelően használjuk a tulajdonságokat string nev; string szuletesiHely; int eletkor; SzemelyesAdatWindow adatBekero = new SzemelyesAdatWindow(); if (adatBekero.ShowDialog() == true) { nev = adatBekero.Nev; szuletesiHely = adatBekero.SzuletesiHely; eletkor = adatBekero.Eletkor; }

V 1.0ÓE-NIK, 2014 Ablakok tulajdonságai, metódusai, eseményei A Window ContentControl utód –A ContentControl összes tulajdonságát és eseményét lehet használni (Width, Height, Foreground, Background… MouseDown, MouseUp, KeyDown, KeyUp, PreviewXXX… Loaded…) Főbb tulajdonságok: –Title (címsor szövege) –Topmost (felül marad) –WindowStartupLocation (hova jelenjen meg) –WindowState (állapot – maximalizált, minimalizált, normál) 12

V 1.0ÓE-NIK, 2014 Ablakok tulajdonságai, metódusai, eseményei Főbb metódusok: –Show() – megjelenítés nem modálisan –ShowDialog() – megjelenítés modálisan –Close() – bezárás –Activate() – előtérbe hozás és aktiválás –Hide() – láthatatlanná tétel Főbb események: –Closed – bezáródott –Closing – bezáródna A Closed előtt történik. Ablak becsukása előtt végrehajtandó eseményekhez használjuk, pl. mentés –Activated – aktiválódott –Deactivated – deaktiválódott 13

V 1.0ÓE-NIK, 2014 Feladat 14

V 1.0ÓE-NIK, 2014 Feladat 15

V 1.0ÓE-NIK, 2014 Továbbított események (Routed Events) Problémafelvetés: –Tudjuk, hogy a WPF ablakokban sok felhasználóifelület- elem lehet – gombok, textboxok, egyebek –Szeretnénk tudomást szerezni róla, ha a felhasználó bárhol a felhasználói felületen mozgatja az egeret! „Hagyományosan” csak egy megoldást tudunk: az összes felhasználóifelület-elem MouseMove-ját kezelni kell… –Tudjuk, hogy a ContentControl-okban több elem is lehet –Pl: Button, benne StackPanel és két Rectangle = pause gomb –Mire kattintott a felhasználó? Akár a Button „látszó” részeire, akár a StackPanelre vagy a téglalapokra kattintott, nekünk a végén Click esemény kell! Sok esetben jó lenne, ha adott eseményekről nemcsak az adott elem, hanem a tartalmazói is tudomást szereznének 16

V 1.0ÓE-NIK, 2014 Továbbított események (Routed Events) A WPF felhasználóifelület-elemek eseményei ún. továbbított események –Nem csak azon az elemen váltódik ki az esemény, amelyiken tényleg megtörtént –Az elem szülőiben is kiváltódik (kiváltódhat)  elképzelhető, hogy valamelyik szülő elem kezeli Az egymásba helyezett felhasználóifelület-elemek által alkotott faszerkezetet elemfának nevezzük –ContentControl, ItemsControl elemeknél: Content, Items miatt –Tartalommenedzserekben (Children) –Felhasználóifelület-elemek belső szerkezete is bonyolult lehet! Nemcsak egyféle elemfát értelmezünk: logikai fa, vizuális fa 17

V 1.0ÓE-NIK, 2014 Felhasználóifelület-elemek fája Az elemek logikai fája (logical tree) mutatja a felhasználói felület elemeinek kapcsolatait Az elemek vizuális fája (visual tree) az egyes elemek belső struktúráját is tartalmazza, a logikai fánál bővebb fogalom 18

V 1.0ÓE-NIK, 2014 Felhasználóifelület-elemek fája 19 MainWindow Border AdornerDecorator AdornerLayerContentPresenter Grid LabelButton Border ContentPresenter TextBlock Border ContentPresenter TextBlock Logikai fa –Pirossal –Document Outline- ban ezt látjuk Vizuális fa –Piros+cián –Debugolás közben megjeleníthető

V 1.0ÓE-NIK, 2014 Továbbított események A továbbított események az elemfán közlekednek Logikai fán: dinamikus erőforrások, adatkötéskor elemnevek keresése … Vizuális fán: elemek kirajzolása, átlátszóság, transzformációk, IsEnabled, találattesztelés Hibrid: dependency propertyk, továbbított események Továbbítási stratégiák: –Felfelé közlekedő („bubbling”) továbbított esemény: először a kiváltó felhasználóifelület-elemen, utána pedig sorra a szülőkön, a gyökérig. –Lefelé közlekedő („tunneling”) továbbított esemény: először a gyökéren, majd a kiváltó elem felé vezető szülőkön, legvégül a kiváltó elemen hívódnak meg az eseménykezelők –„Direct” továbbított esemény: csak a kiváltó elemen hívódnak meg az eseménykezelők. A dokumentációban (MSDN) minden eseménynél megtalálható, hogy milyen továbbítási stratégiát alkalmaz 20

V 1.0ÓE-NIK, 2014 Továbbított események A PreviewXXX-XXX eseménypárok közül: –A PreviewXXX „tunneling” stratégiát alkalmaz –Az XXX „bubbling” stratégiát alkalmaz –A Preview mindig előbb következik be PreviewMouseDown, MouseDown példa 1.PreviewMouseDown a MainWindow-n. 2.PreviewMouseDown a Griden. 3.PreviewMouseDown a Labelen. 4.MouseDown a Labelen. 5.MouseDown a Griden. 6.MouseDown a MainWindow-n. 21 MainWindow Grid LabelButton Vannak működési variációk: pl. a Grid a Labelre való kattintáskor mindig érintett, de ha rajta kattintunk, a MouseDown csak akkor váltódik ki rajta, ha látható (pl. Background nem null). Ha nem így van, akkor a Griden nem, csak a MainWindow-n váltódik ki az esemény!

V 1.0ÓE-NIK, 2014 Továbbított események Ha tudni kell, hogy honnan jött az esemény… –sender: az az elem, amelyik éppen kezeli az eseményt. NEM a kiváltó elem! –e.Source: az esemény kiváltója (logikai fán) –e.OriginalSource: az esemény tényleges kiváltója (vizuális fán) Gyakorlati használat: –Felhasználóifelület-elemek egymásba építése esetén a felhasználó felé egy elemnek kell tűnnie A „fő” tartalmazó kezeli az eseményeket –Események lefutásának megakadályozása Akár az adott elem, akár a tartalmazók közül valamelyik kezelheti a PreviewXXX-t, és állíthatja az e.Handled-et –Több felhasználóifelület-elem ugyanazt a tevékenységet végzi A közös tartalmazójuk kezelheti az eseményeket Pl. számológép! 22

V 1.0ÓE-NIK, 2014 Feladat – Egyszerűsített Android jelszómegadó A kép eredetije: enable-pattern-lock-security-on-android-devices/ 23

V 1.0ÓE-NIK, 2014 HF 24

V 1.0ÓE-NIK, 2014 HF 25