3.2. Az alkalmazások ablaka



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

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

8.4 Többszálú alkalmazások készítése

Táblázatok. Táblázatok beszúrása. Cellák kijelölése

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

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

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

Az eszközpaletta. Felsı sor balról jobbra. Második sor balról jobbra 1/7

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


Loxone IR extension és IR modul bekötése és programozása:

1.A. feladat: Programablakok

Bevezetés a QGIS program használatába Összeálította dr. Siki Zoltán

Thermo1 Graph. Felhasználói segédlet

Tervez2 Monor gyakorló leírása

HVK Adminisztrátori használati útmutató

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.

A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak.

Menük használata

Gyorsított jegybeírás. Felhasználói dokumentáció verzió 2.0.

Pénzintézetek jelentése a pénzforgalmi jelzőszám változásáról

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

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

Oktatás. WiFi hálózati kapcsolat beállítása Windows XP és Windows 7-es számítógépeken. SZTE Egyetemi Számítóközpont

Számítógépes grafika

CAD-ART Kft Budapest, Fehérvári út 35.

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

C#---Access adatbáziskezelési gyakorlat

munkafüzet open eseményéhez

Turbo Delphi használata az oktatásban

Gyakorlatok. 1. Készítsük el a 3. fejezetben leírt Elsı programunkat.

POSZEIDON dokumentáció (1.2)

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

A számítógép beállításainak megváltoztatása

ClicXoft programtálca Leírás

Képek és grafikák használata

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

1.1.1 Dátum és idő függvények

ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES

Programozási technológia

Új Magyarország Fejlesztési Terv Tájékoztató A ZMNE-n bevezetett wifi szolgáltatásról KMOP-4.2.1/B

1. kép. A Stílus beállítása; új színskála megadása.

Tabulátorok, felsorolás, stílusok Tabulátorok

Az alábbiakban szeretnénk segítséget nyújtani Önnek a CIB Internet Bankból történő nyomtatáshoz szükséges böngésző beállítások végrehajtásában.

Oktatási segédanyag. Weboldalszerkesztési gyakorlatok

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

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

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

QGIS tanfolyam (ver.2.0)

Táblázatos adatok használata

CitiDirect BE SM Felhasználói útmutató

Lapműveletek. Indítsuk el az Excel programot és töröljük ki a Munka1 nevű munkalapot!

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).

Akciók, diavetítés. 1. ábra Akciógombok. A lap két regiszterfülből áll, ezek a Kattintásra és az Áthaladáskor. Nézzük meg először az elsőt!

1. Regisztráció. Kedves Jelentkező!

Táblázatok kezelése. 1. ábra Táblázat kezelése menüből

VISUAL BASIC ALAPISMERETEK

Digitális aláírás általános telepítése és ellenőrzése

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

Dokumentáció. IT Worx. Web eszközök Hír box. 1. Első lépések

8.5. Súgórendszer készítése Delphi alkalmazásokhoz

Szaftex I. Felhasználói kézikönyv 1.0 Szakdolgozók részére

FELHASZNÁLÓI ÚTMUTATÓ

A Microsoft, a Windows, a Windows NT, a Windows NT Workstation a Microsoft Corporation bejegyzett védjegye vagy védjegyei az Egyesült Államokban

Microsoft Office Word (2013) Jellemzői: Grafikus szövegszerkesztő program, sokféle formázási lehetőséggel. Ablak részei : címsor

Online naptár használata

Felhasználói Kézikönyv

Ablak és ablakműveletek

ContractTray program Leírás

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

A program telepítése

(ArcCatalog, ArcMap)

Bevezetés a QGIS program használatába 2.0 verzió Összeállította: dr. Siki Zoltán

Regisztrálási útmutató

Programozási technológia

3.1 A Windows alkalmazás (project) felépítése

Fürdőszoba tutorial 01

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla

MEH-EIA felhasználói dokumentáció gyakran ismételt kérdések

OPERÁCIÓS RENDSZER MODUL KÉRDÉSEI ÉS VÁLASZAI WIN7

TvNetTel Internet Kapcsolat Beállítása

Állomány (fájl) = összetartozó adathalmaz, program, melyet a számítógép egyetlen egységként kezel.

Ismerkedés az új felülettel

Új Magyarország Fejlesztési Terv Tájékoztató A ZMNE-n bevezetett wifi szolgáltatásról KMOP-4.2.1/B

DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák

Diagram formázása. A diagram címének, a tengelyek feliratainak, jelmagyarázatának, adatfeliratainak formázása

Belépés és kezdeti lépések. Használati útmutató minden szerepkör számára

Felhasználói Kézikönyv

Gyakorló 9. feladat megoldási útmutató

DebitTray program Leírás

Duál Reklám weboldal Adminisztrátor kézikönyv

Feladatok megoldásai

A windows alapképernyő részei:

Az Egységes Pályázati Keretrendszer használata (akadémiai könyv- és folyóiratkiadási támogatás elnyerésére a 2014.

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

ReszlAd fájl, kitöltési útmutató:

A szövegszerkesztő program (MS Word)

Adat le,- és feltöltés a DOS operációs rendszerrel rendelkező Topcon mérőállomásokra, TopconLink szoftver alkalmazásával (V1.0)

Átírás:

3.2. Az alkalmazások ablaka 1. Alkalmazást kilépési jóváhagyással CanClose 2. Akciólista használata. Akcio 3. Egéresemények használata Egeresemeny 4. Billentyűzet események kezelése Billesemeny 5. Keretek használata Frame 1

Készítsük el a Delphi alkalmazás vázát úgy, hogy a program kilépéskor kérdezzen rá, hogy a felhasználó valóban ki akar-e lépni! (CanClose) A feladat elvégzéséhez nincs más dolgunk, mint a form OnCloseQuery eseményét kikeresni az Object Inspector Events lapján. Ha kétszer rákattintunk az eseményre, bekerül a Form1 objektumba a FormCloseQuery metódus. type TForm1 = class(tform) procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private { Private declarations } public { Public declarations } A felhasználói környezet szövegszerkesztőre vált és a szövegszerkesztő tartalma éppen az eseménykezelő. Az OnCloseQuery esemény az ablak zárásakor aktivizálódik és jellegzetessége, hogy a CanClose cím szerinti paraméter segítségével értéket ad vissza. Használjuk az TApplication osztály MessageBox metódusát arra, hogy párbeszédablak segítségével rákérdezhessünk, valóban be szeretnénk-e zárni az ablakot. A metódus első paramétere a kérdés, amelyik megjelenik a párbeszédablakban, a második az ablak címsora. A harmadik paraméter szabályozza azt, hogy milyen gombok, milyen ikonok jelenjenek meg, hogyan működjön a párbeszédablak. A függvény visszatérési értéke attól függ, hogy melyik gombot nyomta meg a felhasználó. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); // Ha a felhasználó a Yes gombot nyomja kiléphet if Application.MessageBox('Valóban ki akar lépni?','kilépés',mb_yesno) = IDYES then CanClose:=true else CanClose:=false; 2

Tervezzünk alkalmazást, melyből a kilépést menüből, vagy gyorsítógombról kezdeményezhetjük! Használjuk az akciólistát a tevékenységek összehangolására! (Akcio) Helyezzük először az űrlapra az ActionList komponenst! (Ezzel az ActnList modul automatikusan bekerül a programba.) Kattintsunk kétszer a komponensen. A megjelenő ActionList párbeszédablakban a NewAction nyomógombbal vagy az <Ins> billentyű megnyomásával létrehozhatjuk az Action1 akciót. A objektumkezelőben írjuk át a Caption tulajdonságot Kilépés -re! Ha kétszer kattintunk az Actions lista Action1 elemén, akkor megírhatjuk a futtatandó akciót. procedure TForm1.Action1Execute(Sender: TObject); // Közös akció az ablak zárása Form1.Close; Helyezzük el a formon a menüt és a SpeedButton komponenst. A MainMenu1 elemnek legyen - a szokásoknak megfelelően Fájl főmenüje, melynek egyetlen legördülő menüeleme a Kilépés. Az automatikusan elkészülő objektumok neve Fjl1 és Kilps1 lesznek. Az utóbbi Bitmap tulajdonságához - az objektumkezelőben - hozzárendeljük a Kilep1.bmp állományt. Ugyanezt a bitképet rendeljük a SpeedButton1.Glyph tulajdonsághoz. Mivel azt szeretnénk, hogy a Kilépés menü és a SpeedButton1 ugyanazt a tulajdonságot kezelje, mindkét elem Action tulajdonságát Action1-re állítjuk. Érdemes megjegyezni, hogy ha menü Caption tulajdonsága nem lett volna Kilépés, az akció hozzárendelés hatására ez mint a gomb esetén - automatikusan megtörténik. Azt szeretnénk, ha programunk indulásakor nem engedélyezze a Kilépés menü és a SpeedButton1 használatát, azonban az ablakon történő egérkattintáskor a kilépés engedélyezettsége változzon. A form létrehozásakor ezért nem engedélyezzük az akciót. procedure TForm1.FormCreate(Sender: TObject); // Létrehozáskor tiltjuk az akciót Action1.enabled:=false; Ennek hatására a menü és a gomb egyaránt letiltott lesz. 3

Az ablakon való kattintás ellenkezőjére váltja a kilépés engedélyezést. procedure TForm1.FormClick(Sender: TObject); // Vátjuk a kilépésengedélyezést Action1.enabled:=not(Action1.enabled); A CanClose példából ismert kilépés-jóváhagyó párbeszédablakot használjuk a OnCloseQuery esemény kezelésére. Érdemes áttekinteni az TForm1 típust is. type TForm1 = class(tform) MainMenu1: TMainMenu; Fjl1: TMenuItem; Kilps1: TMenuItem; SpeedButton1: TSpeedButton; ActionList1: TActionList; Action1: TAction; procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Action1Execute(Sender: TObject); procedure FormClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } Az alábbi ábrák a program futását mutatják egérkattintás előtt és után. 4

Írjunk alkalmazást, melynek ablakában a Delphi felirat az egérrel felemelhető elmozgatható és letehető! (Egeresemeny) A Delphi felirat megjelenítéséhez a Label komponenst használjuk. Helyezzük el a Label1 komponenst a formon! Állítsuk a Label1.Caption tulajdonságot Delphi -re! Beállíthatjuk azt is, hogy a Label1.AutoSize igaz legyen. Állítsuk be betűtípust. (Label1.Font.Name= Times New Roman, Label1.Font.Color=clBlue, Label1.Font.Size=19)! Úgy fogunk dolgozni, hogy az egérgomb lenyomásakor megjegyezzük az egér pozícióját és az egér mozgásakor ha a bal gomb lenyomott - az aktuális pozíció és az előző pozíció különbségével változtatjuk meg a címke pozícióját. Az előző egérpozíció tárolásához szükségünk lesz a Form moduljában globálisan deklarált változóra. var ponte:tpoint; Az egérgomb lenyomásakor küldő objektum lokális koordinátarendszerében értelmezett X és Y koordinátákat átalakítjuk képernyő koordinátává. Ez azért szükséges, mert így egyféleképpen kezelhetjük majd a form és a címke felületét. Az átalakításhoz a TControl osztály ClientToScreen metódusát használhatjuk. A függvény paramétere az átalakítandó pont visszatérési értéke a képernyőpont. function ClientToScreen(const Point: TPoint): TPoint; A képernyő koordinátát a ponte változóban elmentjük. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var pont:tpoint; // Az egérgomb lenyomásakor megjegyezzük az egérkoordinátát pont.x:=x; pont.y:=y; // Minden adatot képernyőkoordinátában tárolunk ponte:=tcontrol(sender).clienttoscreen(pont); Egérmozgatáskor, ha a bal egérgomb le van nyomva. akkor elmozdítjuk a címkét és az új pozíciót, mint előzőt megjegyezzük. procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); var pont:tpoint; // Egérmozgatáskor a balgomb lenyomott, // mozgatjuk a feliratot if ssleft in Shift then pont.x:=x; pont.y:=y; // Képernyőkoordináta pont:=tcontrol(sender).clienttoscreen(pont); Label1.left:= Label1.left+pont.x-ponte.x; Label1.top:= Label1.top+pont.y-ponte.y; // Megjegyezzük az előzőt ponte:=pont; Végül intézkednünk kell arról, hogy a címkén ugyanazok az egéresemények aktivizálódjanak, mint a formon. Ezt legegyszerűbben az objektum-felügyelőben tehetjük meg a Label1 OnMouseDown és OnMouseMove eseménykezelők beállításával. 5

A program futási képe: 6

Készítsünk alkalmazást, melynek ablaka olyan, hogy a címsor a begépelésnek megfelelően billentyűzetről módosítható! (Billesemeny) A tervezés alatt állítsuk be az ablak címsorát úgy, hogy az üres string legyen. Ahhoz, hogy minden egyes betű megjelenjen a címsorban az OnKeyPress eseményt kell kezelnünk. Az esemény Key - karakter típusú - bemenő paramétere tartalmazza a lenyomott gomb kódját. Az abc betűinek kódja 47-nél nagyobb, a szóköz kódja 32, elegendő ezeket a karaktereket megjeleníteni, ha ezt a megszorítást nem tesszük, akkor a Windows a nem látható karaktereket egy téglalappal jeleníti meg. A billentyűzet eseménykezelője tehát minden gombnyomás esetén egy karaktert illeszt a címsorhoz. procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); // Gombnyomáskor, ha a billentyű kódja A-nál nagyobb (betű), vagy szóköz // a címbe kerül if (Ord(key)>47) or (Ord(key)=32) then Form1.Caption:=Form1.Caption+Key; Ha azt szeretnénk elérni, hogy a <Backspace> gombbal az utolsó karakter eltűnjön a címsorból, akkor használhatjuk az OnKeyDown esemény. A <Backspace> billentyű virtuális kódja VK_BACK. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); // visszatörlésnél rövidítjük a címet if (key=vk_back) and (length(caption)>0) then caption:=copy(caption,1,length(caption)-1); 7

Tervezzünk alkalmazást, mely ugyanazt a keretbe helyezett címkét jeleníti meg kétszer és a billentyűzés a két címkében fordított irányban jelenik meg! (Frame) A billentyűzetüzenetek kezelésével nem lesz gondunk, hiszen ugyanúgy kell eljárni, mint a Billesemeny példánál. Példánk inkább a keretek lehetőségeit szándékozik bemutatni. Első lépésben válasszuk ki a File New frame menüpontot. Ennek hatására megjelenik a Frame modellje, mintha form lenne. Erre a keretre helyezzük a címkét és beállítjuk, hogy a felső szélhez igazodjon. Állítsuk a Wordwrap tulajdonságot igazra és az Autosize tulajdonságot hamisra, hogy a címke többsoros legyen, és húzzuk az alját a keret aljáig. Ezzel elkészítettük a keretet, visszatérhetünk a form programozásához. A keret típusa Unit2-ben type TFrame2 = class(tframe) Label1: TLabel; private { Private declarations } public { Public declarations } A kereteket megjelenítő form típusa Ha visszatérünk a formhoz, akkor a Frames komponenst kiválasztva és a formon kattintva a megjelenő párbeszédablakból kiválasztjuk a keretet és kétszer a formra tesszük. Az egyiket Frame21 az ablak felső széléhez igazítjuk, a másikat Frame22 az alsóhoz. A form címsorát állítsuk be az Oda-vissza ír stringnek megfelelően! type TForm1 = class(tform) Frame21: TFrame2; Frame22: TFrame2; procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } Az OnCreate eseményben töröljük le a keretek címkéit! procedure TForm1.FormCreate(Sender: TObject); Frame21.Label1.caption:=''; Frame22.Label1.caption:=''; 8

A billentyűzetkezelés majdnem megegyezik a Billesemeny programmal, mindössze az a különbség, hogy egyszerre kell kezelni a két keret címkéjét. procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); // Gombnyomáskor, ha a billentyű kódja A nál nagyobb (betű), vagy szóköz // a két cimkébe kerül ellentétes sorrendben if (Ord(key)>47) or (Ord(key)=32) then Frame21.Label1.caption:=Frame21.Label1.caption+key; Frame22.Label1.caption:=key+Frame22.Label1.caption; end procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); // visszatörlésnél rövidítjük mindkét feliratot if (key=vk_back) and (length(caption)>0) then Frame21.Label1.caption:=copy(Frame21.Label1.caption,1, length(frame21.label1.caption)-1); Frame22.Label1.caption:=copy(Frame22.Label1.caption,2, length(frame22.label1.caption)-1); A program futási képe jól szemlélteti a működést. 9