Hirdetés

Alkalmazásfejlesztés badára: Felugró ablakok

Bevezetés

Gyakran előfordul, hogy az akalmazásunkban tudatni akarunk valamit a felhasználóval (elfogyott a memória), vagy egy választás elé állítjuk a usert (Biztosan újraindítja a számítógépet?, erre a válasz pedig az Igen, Nem és Mégsem hármasból kerülhet ki). A bada erre két beépített megoldást is kínál, ezek pedig a...

...MessageBox és PopUp

Mindkét osztály ugyanazt a funkciót valósítja meg, egy felugró ablakot rajzol a képernyőnkre, a vezérlők fölé. A különbség köztük a használat módja: míg a szövegdoboz (Osp::Ui::Controls::MessageBox) előre definiált megoldásokat kínál, melyek elrendezésén nem változtathatunk, a felugró ablak (Osp::Ui::Controls::PopUp) esetében magunk rakjuk össze a keretet és annak tartalmát, így akár teljesen személyre szabott felugró ablakokat is használhatunk. A PopUp sokkal jobban hangzik a magasabb testreszabhatósági fakora miatt, viszont gyakran elég a MessageBox egy-egy típusát használnunk, így időt és erőforrásokat spórolatunk meg.

A mai bejegyzés során ez utóbbit vesszük górcső alá. A használata roppant egyszerű, fel kell vennünk egy MessageBox példányt, majd a Construct() függvényével beállíthatjuk a tulajdonságait. A konstruktor négy bemenőt vár: az első kettő String típussal a doboz címét és szövegét adhatjuk meg, a cím értelemszerűen a fejlécben fog megjelenni,a szöveg pedig alatta. Ha magyar ékezetes szövegeket szeretnénk megjeleníteni, át kell állítani a projekt kódolásást (jobb gomb a projekten -> Properties -> Text file encoding) UTF8-ra, különben hibás kimenetet kapunk, ez igaz továbbá minden egyes kiiratásra szánt ékezetes betűre.

A harmadik paraméter a MessageBox típusa, ez határozza meg, hogy milyen gombok kerülnek rá a szövegdobozunkra. Ebből összesen kilenc fajtát tartalmaz a bada SDK, a billentyű nélkülitől a három gombot tartalmazóig többfajta variációban, a felsorolás itt olvasható, az elnevezések elég besédesek. A gombok szövegét sajnos nem adhatjuk meg, ahhoz már érdemes PopUp-ot használni. A negyedik paraméter az úgynevezett timeout, azaz ennyi ideő után tűnik el a kirajzolt panelünk a képernyőről. Ezt milliszekundumban kell megadni, egy másodperc 1000 ms, erre érdemes odafigyelni. Ha nem szeretnénk, hogy automatikusan eltűnjön a doboz egy adott idő után (például ha gomblenyomásra várunk), ezt a paramétert egyszerűen 0-ra kell állítani.

A panel kirajzolása a ShowAndWait() függvénnyel történik, amelynek egy integert kell megadnunk, ebbe tölti majd a visszatérési értéket. Akkor is ezt a módszert kell használnunk, ha billentyű nélküli (MSGBOX_STYLE_NONE) ablakot használunk. Van egy másik rajzolófüggvény, a Show(), de  ez belső használatra van (jó kérdés, hogy miért). Állítólag ha ezt használjuk, az applikációnkat visszadobják az App Store-ból, erre az SDK is figyelmeztet, szóval  arad a ShowAndWait(). Ha lenyomunk egy gombot a kirajzolt ablakon, egy MSGBOX_RESULT típussal tér vissza (ezek listája itt olvasható), a függvény után ezt kell vizsgálni, és a neki szánt műveletet végrehajtani.

A FelugroAblakok névre hallgató példaprogram  megtalálható Mobilarénás SVN-ben (https://mobilarenabadadev.googlecode.com/svn), a nagyon egyszerű alkalmazás a kilenc MessageBox-variáció működését hivatott demonstrálni.

dr. Kind

Azóta történt

Előzmények