1. TÖBBABLAKOS APPLIKÁCIÓK

Slides:



Advertisements
Hasonló előadás
BPS Web 2.0 Felhasználói kézikönyv. A szerkesztő főoldala A bejelentkezett felhasználóA szerkesztő főmenürendszere Stílusformázások Nyelv- és nézetváltás.
Advertisements

Delphi programozás 7. ELŐADÁS Hibakezelés.
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.
A Windows használata Bevezetés.
Delphi A VB felhasználó barátságát kombinálja a C++ tág lehetőségeivel és sebességével. RAD - Rapid Application Development; „Vizuális nyelv”; 4GL nyelv:
1. WINDOWS BEVEZETÉS.
GoldWorks grafika. Grafikus objektumok  előre definiált keretek  images (egy vagy több rés értékének reprezentálása)  canvases (image-ek megjelenítésére)
Az algoritmizálás oktatás egy lehetséges útja: Visual Basic
Operációs rendszerek Bevezetés.
Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhetősé:
Operációs rendszerek Beállítások.
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Algoritmus és programozás
Cells(sor száma, oszlop száma)
Hibakezelés és Tesztelés a Visual Studio.NET-ben
JavaScript.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Delphi A VB felhasználó barátságát kombinálja a C++ tág lehetőségeivel és sebességével. A VB felhasználó barátságát kombinálja a C++ tág lehetőségeivel.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Adatbázis alapú rendszerek
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
A Windows grafikus felülete
Készítette: Keszthelyi Zsolt
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.
Egyszerű típusok csoportosítása
Webszerkesztés Űrlapok a HTML-ben. Űrlap létrehozása Űrlapunk tartalma a … elemek között fog helyetfoglalni Egy lapon több űrlap is elhelyezhető Több.
Kivételkezelés a C++ nyelvben Bevezetés
Microsoft Access Vezérlőelemek.
Microsoft Access Űrlapok tervezése.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Vizuális alkalmazások a FoxProban Páll Éva Boglárka.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Űrlapok és keretek.
Rendezések és szövegkezelő függvények
Fájlkezelés Pascalban
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Hernyák Zoltán Programozási Nyelvek II.
Delphi Készítette: Rummel Szabolcs Elérhetőség:
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Visual Basic 2008 Express Edition
Visual Basic 2008 Express Edition
Áttérés egy vizuális/grafikus program- fejlesztői környezetre (minimális tudnivalók) Szlávi Péter ELTE Informatika Szakmódszertani Csoport
A Visual Basic nyelvi elemei
RAD Studio XE5: menük felépítése
Programozás III KIVÉTEL.
Első lépések a szövegszerkesztő használatában
Számítógépes grafika I. AUTOCAD alapok
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
Free pascal feladatok
A 2. géptermi beszámoló VBA anyagának összefoglalása
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Az 5,6,7 laborok VBA anyagának összefoglalása
Informatikai gyakorlatok 11. évfolyam
ListBox CheckedListBox TextBox
Szövegszerkesztési alapfogalmak
Neumann János Informatikai Kar
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hasznos billentyű kombinációk
Folyamatok.
Standard párbeszédablakok
FORMOK, ABLAKOK.
Előadás másolata:

Negyedik Generációs Nyelvek ( Delphi ) 1. Többablakos applikációk TForm komponens Dialógusablakok 2. Kivételek kezelése 3. Drag & Drop technika

1. TÖBBABLAKOS APPLIKÁCIÓK

TabControl Fülsor egy lappal PageControl Fülsor több lappal Animate Animáció ToolBar Eszközsor DateTimePicker Dátumkezelő StatusBar Állapotsor

Többablakos applikációk Egy ablakban több oldalra helyezett info. (ld. TPageControl, TTabControl komponensek) Több egymással kommunikáló ablak

Többablakos applikációk TTabControl Szerepe: fülsor egy lappal.Akkor használjuk, ha a különböző füleken található információ szerkezete azonos, csak a tartalma változik. Jellemzői: Tabs: TStrings: a fülek feiratát tartalmazza külön sorokban TabIndex: az aktuális fül indexe (az első indexe 0) TabPosition: tpTop, tpBottom, a fülek pozíciója

Többablakos applikációk TTabControl Fontos eseményei OnChange: fülváltáskor következik be. A TabIndex ilyenkor az új fül indexét tartalmazza. OnChanging: fülváltás közben következik be

Többablakos applikációk TPageControl Szerepe: fülsor több lappal.Minden fülhöz tartozik egy lap. Fontosabb jellemzői: ActivePage: az aktuális lap Új lap: gyorsmenü, New Page, felirat a Caption jellemzőbe TabPosition: tpTop, tpBottom, a fülek pozíciója

Többablakos applikációk TPageControl Fontos eseményei OnChange: fülváltáskor következik be. A TabIndex ilyenkor az új fül indexét tartalmazza. OnChanging: fülváltás közben következik be

Többablakos applikációk Egy applikáció tartalmazhat: Egyszerű adatbeviteli és üzenetablakokat Windows által felkínált párbeszédablakokat ( TOpenDialog, TPrinterSetupDialog,...) Előzőleg megtervezett és mintaként (template) elmentett formokat Saját tervezésű ablakokat ( a TForm osztály felhasználásával egy új formosztály létrehozása)

Többablakos applikációk Ezek közül: egyesek automatikusan létrejönnek (autocreate), mások nem egy főablak (main form) van, és ennek automatikusan kell létrejönnie Ablakok megjelenítési formái: Modális (tipikus párbeszédablakok) Nem modális (Modeless)

Egyszerű adatbeviteli és üzenetablakok Ezek az ablakok modálisan jelennek meg ShowMessage procedure ShowMessage(const Msg: WideString); A lehető legegyszerűbb üzenetablak szöveggel, és egy OK gombbal. Az ablak címsorában az alkalmazásunk projektállományának neve található. Az ablak a képernyő közepén jelenik meg.

Egyszerű adatbeviteli és üzenetablakok Egyszerű üzenetablakok Procedure ShowMessage(Szöveg: String); Pl.: ShowMessage ('Bármilyen üzenet'); Projekt neve

Egyszerű adatbeviteli és üzenetablakok Ezek az ablakok modálisan jelennek meg Inputbox function InputBox(const ACaption, APrompt, ADefault: WideString ): WideString; Beviteli ablak, a bekért adat típusa string, double, vagy integer.

Function InputBox(Cím, KérőSzöveg, Alapérték: String): String; Egyszerű adatbevitel Function InputBox(Cím, KérőSzöveg, Alapérték: String): String; program Peldapr; uses Forms,Dialogs, Koszon in 'KOSZON.PAS' {Pelda}; {$R *.RES} begin If Inputbox('Bejelentkezési ablak', 'Gépelje be a jelszót', '')= 'A jelszó' then begin Application.CreateForm(TPelda, Pelda); Application.Run;...

Egyszerű adatbeviteli és üzenetablakok Ezek az ablakok modálisan jelennek meg MessageDlg function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word; Beviteli ablak, a bekért adat típusa string, double, vagy integer.

Többablakos applikációk Egyszerű üzenetablakok Function MessageDlg( Szöveg: String; Típus: TMsgDlgType;Gombok: TMsgButtons; Súgóidx: LongInt): Longint; Pl.MessageDlg('Kívánja menteni a változásokat?',mtConfirmation, [mbNo, mbOk,mbCancel], 0);

Többablakos applikációk Applikációk típusai CRT applikáció = DOS - os applikáció fehér ablakban SDI (Single Document Interface) Egy ablakos Windows applikáció Van: menüje, eszközsora, állapotsora,.. MDI (Multiple Document Interface) Egyetlen alkalmazás felügyelete alatt, egyszerre több ablakban jeleníthetünk meg adatokat, grafikát, és azokkal párhuzamosan dolgozunk (pl. WinWord, Filekezelő,... )

Többablakos applikációk Az MDI applikáció részei: Egy főablak (keretablak, MDIFrame) Van: címsora, menüje, eszközsora, állapotsora Akárhány gyerekablak (MDIChild) Ezekben jelenítjük meg az adatokat Van: címsoruk, rendszermenüjük Nincs: saját menüjük

Többablakos applikációk Szabályok: A keretablak az applikáció főablaka; automatikus létrehozású A gyerekablak nem automatikus, futáskor hozunk létre egy vagy több példányt Mindig csak egy gyerekablak lehet aktív A gyerekablakok a keretablak munkaterületén belül helyezkednek el A keretablak bezárása maga után vonja a gyerekablakok bezárását is

Többablakos applikációk TForm komponens A felhasználói interfész megtervezését teszi lehetővé Tartalmazza az összes "rácipelt" komponenst Fontosabb jellemzői: Caption: String (címsorban jelenik meg) BorderIcons: Set of TBorderIcon pl. [biSystemMenu, biMinimize, biMaximize] BorderStyle: bsDialog, bsSizeable,... AutoScroll: Boolean

Többablakos applikációk TForm komponens HorzScrollBar, VertScrollBar: TControlScrollBar ClientWidth, ClientHeigth: Integer Position: poDesigned, poScreenCenter Icon: TIcon (ikonja minimizált állapotban; ha nincs megadva  az applikációét használja) ShowHint: Boolean (buboréksugót jelenítsen-e meg, vagy sem?) WindowState: wsNormal, wsMaximized, wsMinimized

Többablakos applikációk TForm komponens Menu: TMainMenu (főmenüje) ModalResult: mrOk, mrCancel,... (bezárása után jelzi bezárásának okát) KeyPreview: Boolean ( = True  a billentyűzet üzeneteket előbb ő kapja, és csak utána a fókuszban levő komponens. (ld. számológép gombjainak lenyomása billentyűzetről) FormStyle: TFormStyle fsNormal, fsMDIForm, fsMDIChild, fsStayOnTop

Többablakos applikációk TForm komponens MDI keretablak esetén: MDIChildCount: Integer (megnyitott gyerekablakok száma) MDIChildren [ I: Integer]: TForm ActiveMDIChild: TForm WindowMenu: TMenuItem (melyik menüpont alján jelenjen meg a nyitott gyerekablakok listája)

Többablakos applikációk TForm komponens Fontosabb metódusai: procedure Show function ShowModal: Integer (modálisan jeleníti meg az ablakot, majd bezárása után visszaadja a kilépés okát) Print (kinyomtatja az ablakot) Close CloseQuery: Boolean

Többablakos applikációk TForm komponens MDI keretablak esetén: Next (aktivizálja a köv. gyerekablakot) Tile Cascade ArrangeIcons gyerekablakok rendezése

Többablakos applikációk TForm komponens Fontosabb eseményei: OnCreate (életrekeltése) OnShow (megjelenítése) OnActivate (aktivizálása) OnPaint (újrarajzolása) OnDeactivate (fókusz elvesztése) OnClose (bezárás) OnCloseQuery (bezárás előtt) OnDestroy (megszüntetés)

SDI alkalmazásokban Több ablak együttműködése egy applikációban MainForm frmHarmadik

Többablakos applikációk Több ablak együttműködése egy applikációban Ha egy űrlapról (MainForm) meg szeretnénk jeleníteni egy másik űrlapot (frmHarmadik), akkor: a láthatóságot biztosítanunk kell (uses uHarmadik) megjelenítjük: Modálisan Nem modálisan frmHarmadik.ShowModal frmHarmadik.Show

unit Umain; interface uses SysUtils, ... type TfrmMain=class(TForm) ... end; Var frmMain: TfrmMain; implementation Uses uAbout; procedure TfrmMain.AboutmenuClick (Sender: TObject); begin frmAbout.ShowModal; end; unit Uabout; interface uses WinTypes,... type TfrmAbout = class(TForm) ... end; var frmAbout: TfrmAbout; implementation ... end.

Többablakos applikációk Több ablak együttműködése egy applikációban MDI alkalmazásokban Beállítjuk a keret- és gyerekablak típusát: KeretAblak.FormStyle:= fsMDIform ; GyerekAblak.FormStyle:= fsMDIChild ; A keretablak marad AutoCreate-nek; ő az alkalmazás főablaka is. A gyerekablak nem AutoCreate. A keretablakból hozzuk létre a gyerekablakokat (pl. NewMenuClick)

Többablakos applikációk KeretAblak MDI alkalmazás GyerekAblak

unit uMDIKeret; interface uses SysUtils, ...uGyerek; type TfrmKeret=class(TForm) ... end; var frmKeret: TfrmKeret; implementation procedure TfrmKeret.NewmenuClick (Sender: TObject); var Gyerek: TfrmGyerek; begin Gyerek:= TfrmGyerek. Create (Application); Gyerek.Show; end; end. unit uGyerek; interface uses WinTypes,... type TfrmGyerek = class(TForm) ... end; Var frmGyerek: TfrmGyerek; implementation uses uMDIKeret; GyerekAblak (nem Autocreate, példányait dinamikusan hozzuk létre) KeretAblak (marad Autocreate)

TComponent TCommonDialog TColorDialog TFindDialog TFontDialog Létező párbeszédablakok használata (Dialogs komponenspaletta) TComponent TCommonDialog TColorDialog TFindDialog TFontDialog TOpenDialog TSaveDialog TPrinterSetupDialog TPrintDialog

Dialógusablakok OpenDialog Megnyitás dialógusablak, felhasználható a fájlnév, valamint az elérési útvonal SaveDialog Mentés dialógusablak, felhasználható a fájlnév, valamint az elérési útvonal OpenPictureDialog Megnyitás dialógusablak grafikus fájlok eléréséhez, az ablakban látható a grafikus fájl képe SavePictureDialog Mentés dialógusablak grafikus fájlok eléréséhez, az ablakban látható a grafikus fájl képe

Dialógusablakok FontDialog Font dialógusablak, használható többek között a font mérete, színe, típusa ColorDialog Színek beállítását segítő ablak PrintDialog Nyomtatás dialógusablak, a nyomtatás jellemzőit használhatjuk(pl. nyomtatási oldalak, nyomtatás példányszáma) PrinterSetupDialog Nyomtató beállítóablak, a feltelepített nyomtatók tulajdonságait érhetjük el (elérhető a PrintDialog ablakból is)

Dialógusablakok FindDialog Kereső dialógusablak, felhasználható a keresett szöveg ReplaceDialog Csere dialógusablak, felhasználható a helyettesítendő, valamint a helyettesített szöveg

Párbeszédablakok használata (Opendialog) Láthatatlan komponensek Az őt használó formban deklaráljuk Objektum-felügyelőben adatait beállítjuk Execute - al végrehajtjuk Pl. OpenDialog esetén:

Párbeszédablakok használata (Opendialog) Beállítjuk a Filter jellemzőjét If OpenDialog.Execute Then ShowMessage('A kiválasztott állomány neve: '+ OpenDialog.Filename);

2. KIVÉTELEK KEZELÉSE

Kivételkezelés Kivételek kezelése Kivétel: olyan hibás állapot vagy esemény, amely megszakítja az alkalmazás futását SysUtils egységben definiált kivételosztályok: TObject Exception EConvertError EInOutError EMathError EOverflow EUnderflow EZeroDivide Eprinter...

Kivételkezelés Kivételek Az Object Pascalban a futási idejű hibák kivételekké alakulnak A kivételt megtestesítő objektum tartalmazza a hibát okozó információt A vezérlés a futó program aktuális pontjáról a kivételkezelőhöz (exception handler) adódik át Programlogika és hibakezelés elválasztása  nő az áttekínthetőség

Kivételkezelés Kivételek kezelése Try utasítás_blokk (védett blokk) Except kivételkezelő_blokk [Else kivételkezelő_blokk] End; Ahol a kivételkezelő blokk: On [ azon: ] Osztálytípus Do utasítás

Kivételek kezelése Try ... Except On EZeroDivide Do HandleZeroDivide; On EOverflow Do HandleOverflow; On EMathError Do HandleMathError; End; Function Atlag ( Osszeg, Db: Integer): Real; Begin Try Atlag:= Oszeg / Db; Except On EZeroDivide Do Result := 0; End; End; Fontos a sorrend! EMathError EOverFlow EZeroDivide

Kivételkezelés Kivételek kezelése Le nem kezelt kivétek esetén  lefut az alapértelmezett kezelő (default handler) A kivétel lekezelése automatikusan maga után vonja a kivételobjektum megszüntetését, nem nekünk kell megszüntetni! Kivételkezelők tetszőleges számban egymásba ágyazhatók

Erőforrások biztonságos használata Erőforrások: állományok, memória, ... Formája: erőforrások lefoglalása Try erőforrásokat használó utasítások Finally erőforrásokat felszabadító utasítások End;

Erőforrások biztonságos használata Procedure Akarmi; Var Mutato: Pointer; Eredmeny:Real; Oszto: Integer; Begin Oszto:=0; Getmem(Mutato, 1024); Try Eredmeny := 10 / Oszto;... Finally FreeMem (Mutato,1024); End; End;

3. DRAG & DROP TECHNIKA

Drag & Drop (vonszolás) techika Négy fontos lépésből áll: Vonszolás elkezdése Vonszolás fogadása  vagy (DragCursor: crDrag, crMultiDrag,...) Dobás Befejezés

A komponensek DragMode tulajdonság értékétől függ: Vonszolás elkezdése A komponensek DragMode tulajdonság értékétől függ: dmAutomatic  automatikusan elkezdődik a vonszolás dmManual  programból explicit módon kell elkezdeni  BeginDrag BeginDrag (True)  automatikus BeginDrag (False)  csak egérelmozgatás után

Vonszolás elkezdése Bal oldali egérgomb Procedure TForm1.ForrasMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin If Button = mbLeft Then With Sender as TListBox Do If ItemAtPos( Point(X,Y), True) >= 0 Then BeginDrag (False); End; A listadoboz fölött kezdődik a vonszolás

Vonszolás fogadása Az objektum ami fölött vonszolunk OnDragOver üzenetet kap OnDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); Ha fogadja  Accept := True Ha nem fogadja  Accept := False Ami fölött vonszolunk Amit vonszolunk

Vonszolás fogadása Procedure TForm1.CelDragOver (Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); Begin If Source is TListBox Then Accept := True Else Accept := False; End;

Dobás Ha egy objektum fogadja, egérgomb felengedésekor OnDragDrop üzenetet kap OnDragDrop(Sender, Source: TObject; X, Y: Integer) Ami fölött vonszolunk Amit vonszolunk

Dobás Pl. Procedure TForm1.CelDragDrop (Sender, Source: TObject; X, Y: Integer); Begin With Source as TListBox Do Begin TListBox(Sender).Items. Add(Items[Itemindex]); Items.Delete(Itemindex); End; End; Elem hozzáadása Elem törlése

Ami fogadta (ha fogadta) Vonszolás befejezése Befejezéskor a vonszolt objektum kap egy OnEndDrag üzenetet OnEndDrag(Sender, Target: TObject; X, Y: Integer); Ide írjuk a fogadó objektum frisítését (ha ez nem automatikus) Amit vonszolunk Ami fogadta (ha fogadta)

Vonszolás befejezése Pl. Procedure TForm1.ForrasEndDrag (Sender, Target: TObject; X, Y: Integer); Begin If Target<> Nil Then ShowMessage(Format('A %s objektum fogadta',[TComponent(Target).Name])); End; Ha létezik a fogadó

Eseménykezelő metódus (Message) Type TSajatForm = Class(TForm) Protected Procedure Atmeretezes ( Var Msg: TMessage); Message WM_SIZE; End; ... Procedure TSajatForm. Atmeretezes; Begin ShowMessage('Most méreteznek át'); Inherited; End; ...

Eseménykezelő metódus (Message) Eredmény: Minden ablakátméretezésnél:

If Obj Is TButton Then (Obj As TButton).Caption := 'Ok gomb'; Osztályoperátorok Típusmegállapítás : Is Típuskonverzió : As Var Obj: TComponent; ... Obj := TButton.Create(...); Általában együtt használjuk őket: If Obj Is TButton Then (Obj As TButton).Caption := 'Ok gomb'; TComponent TButton