1 / 59

1. Többablakos applikációk TForm komponens Dialógusablakok 2. Kivételek kezelése

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.

yitro
Télécharger la présentation

1. Többablakos applikációk TForm komponens Dialógusablakok 2. Kivételek kezelése

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 1. TÖBBABLAKOS APPLIKÁCIÓK

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

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

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

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

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

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

  9. Többablakos applikációk 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)

  10. Többablakos applikációk 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)

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

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

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

  14. 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}beginIf Inputbox('Bejelentkezési ablak', 'Gépelje be a jelszót', '')= 'A jelszó' thenbegin Application.CreateForm(TPelda, Pelda); Application.Run;...

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

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

  17. 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ő,... )

  18. 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 adatokatVan: címsoruk, rendszermenüjükNincs: saját menüjük

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

  20. 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 TBorderIconpl. [biSystemMenu, biMinimize, biMaximize] • BorderStyle: bsDialog, bsSizeable,... • AutoScroll: Boolean

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

  22. 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: TFormStylefsNormal, fsMDIForm, fsMDIChild, fsStayOnTop

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

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

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

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

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

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

  29. unit Umain;interfaceuses SysUtils, ... typeTfrmMain=class(TForm) ... end;Var frmMain: TfrmMain; implementation Uses uAbout; procedure TfrmMain.AboutmenuClick (Sender: TObject); begin frmAbout.ShowModal; end; unit Uabout;interfaceuses WinTypes,... typeTfrmAbout = class(TForm) ... end;varfrmAbout: TfrmAbout; implementation ... end.

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

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

  32. unit uMDIKeret;interfaceusesSysUtils, ...uGyerek; typeTfrmKeret=class(TForm)... end;varfrmKeret: TfrmKeret; implementation procedure TfrmKeret.NewmenuClick (Sender: TObject); var Gyerek: TfrmGyerek;begin Gyerek:= TfrmGyerek. Create (Application);Gyerek.Show; end;end. unit uGyerek;interfaceuses WinTypes,... typeTfrmGyerek = class(TForm)... end;Var frmGyerek: TfrmGyerek; implementation uses uMDIKeret; GyerekAblak (nem Autocreate, példányaitdinamikusan hozzuk létre) KeretAblak (marad Autocreate)

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

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

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

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

  37. 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:

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

  39. 2. KIVÉTELEK KEZELÉSE

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

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

  42. 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ípusDoutasítás

  43. Kivételek kezelése Fontos a sorrend! EMathError EOverFlow EZeroDivide 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;

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

  45. Erőforrások biztonságos használata • Erőforrások: állományok, memória, ... • Formája: erőforrások lefoglalásaTry erőforrásokat használó utasításokFinallyerőforrásokat felszabadító utasításokEnd;

  46. Erőforrások biztonságos használata Erőforrások biztonságos használata Procedure Akarmi;Var Mutato: Pointer; Eredmeny:Real; Oszto: Integer;BeginOszto:=0; Getmem(Mutato, 1024);TryEredmeny := 10 / Oszto;...FinallyFreeMem (Mutato,1024);End;End;

  47. 3. DRAG & DROP TECHNIKA

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

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

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

More Related