Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "1.Többablakos applikációk TForm komponens Dialógusablakok 2. Kivételek kezelése 3. Drag & Drop technika Negyedik Generációs Nyelvek ( Delphi )"— Előadás másolata:

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

2 1. TÖBBABLAKOS APPLIKÁCIÓK

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

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

5 Delphi Delphi III / 4 Többablakos applikációk 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: TabsTabs: TStrings: a fülek feiratát tartalmazza külön sorokban TabIndexTabIndex: az aktuális fül indexe (az első indexe 0) TabPositionTabPosition: tpTop, tpBottom, a fülek pozíciója TTabControl

6 Delphi Delphi III / 5 Többablakos applikációk Fontos eseményei OnChangeOnChange: fülváltáskor következik be. A TabIndex ilyenkor az új fül indexét tartalmazza. OnChangingOnChanging: fülváltás közben következik be TTabControl

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

8 Delphi Delphi III / 7 Többablakos applikációk 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 TPageControl

9 Delphi Delphi III / 8 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

10 Delphi Delphi III / 9 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) Többablakos applikációk

11 Delphi Delphi III / 10 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 Delphi Delphi III / 11 Egyszerű adatbeviteli és üzenetablakok Procedure ShowMessage(Szöveg: String); Pl.: ShowMessage ('Bármilyen üzenet'); Projekt neve Egyszerű üzenetablakok

13 Delphi Delphi III / 12 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 Delphi Delphi III / 13 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ű adatbevitel

15 Delphi Delphi III / 14 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 Delphi Delphi III / 15 Többablakos applikációk 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); Egyszerű üzenetablakok

17 Delphi Delphi III / 16 Többablakos applikációk 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ő,... ) Applikációk típusai

18 Delphi Delphi III / 17 Többablakos applikációk 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 Az MDI applikáció részei:

19 Delphi Delphi III / 18 Többablakos applikációk 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 Szabályok:

20 Delphi Delphi III / 19 Többablakos applikációk 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 TForm komponens

21 Delphi Delphi III / 20 Többablakos applikációk 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 TForm komponens

22 Delphi Delphi III / 21 Többablakos applikációk Menu:Menu: TMainMenu (főmenüje) ModalResultModalResult: mrOk, mrCancel,... (bezárása után jelzi bezárásának okát) KeyPreviewKeyPreview: 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) FormStyleFormStyle: TFormStyle fsNormal, fsMDIForm, fsMDIChild, fsStayOnTop TForm komponens

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

24 Delphi Delphi III / 23 Többablakos applikációk Fontosabb metódusai: Showprocedure Show ShowModalfunction ShowModal: Integer (modálisan jeleníti meg az ablakot, majd bezárása után visszaadja a kilépés okát) PrintPrint (kinyomtatja az ablakot) CloseClose CloseQueryCloseQuery: Boolean TForm komponens

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

26 Delphi Delphi III / 25 Többablakos applikációk Fontosabb eseményei: OnCreateOnCreate (életrekeltése) OnShowOnShow (megjelenítése) OnActivateOnActivate (aktivizálása) OnPaintOnPaint (újrarajzolása) OnDeactivateOnDeactivate (fókusz elvesztése) OnCloseOnClose (bezárás) OnCloseQueryOnCloseQuery (bezárás előtt) OnDestroyOnDestroy (megszüntetés) TForm komponens

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

28 Delphi Delphi III / 27 Többablakos applikációk 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álisanNem modálisan frmHarmadik.ShowModalfrmHarmadik.Show Több ablak együttműködése egy applikációban

29 Delphi Delphi III / 28 unit Umain; interface uses SysUtils,... type TfrmMain=class(TForm)... end; VarfrmMain: TfrmMain; implementation Uses uAbout; procedure TfrmMain.AboutmenuClick (Sender: TObject); begin frmAbout.ShowModal; end; unit Umain; interface uses SysUtils,... type TfrmMain=class(TForm)... end; VarfrmMain: 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. unit Uabout; interface uses WinTypes,... type TfrmAbout = class(TForm)... end; var frmAbout: TfrmAbout; implementation... end.

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

31 Delphi Delphi III / 30 Többablakos applikációk MDI alkalmazás GyerekAblak KeretAblak

32 Delphi Delphi III / 31 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 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; 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)

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

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

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

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

37 Delphi Delphi III / 36 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: esetén: Pl. OpenDialog esetén: esetén: Párbeszédablakok használata (Opendialog)

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

39 2. KIVÉTELEK KEZELÉSE

40 Delphi Delphi III / 39 Kivételkezelés 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ételek kezelése

41 Delphi Delphi III / 40 Kivételkezelés 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ételek

42 Delphi Delphi III / 41 Kivételkezelés 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

43 Delphi Delphi III / 42 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! EMathErrorEOverFlowEZeroDivide EMathErrorEOverFlowEZeroDivide Kivételek kezelése

44 Delphi Delphi III / 43 Kivételkezelés 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 Kivételek kezelése

45 Delphi Delphi III / 44 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;

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

47 3. DRAG & DROP TECHNIKA

48 Delphi Delphi III / 47 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 Delphi Delphi III / 48 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 Delphi Delphi III / 49 Vonszolás elkezdése 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; Bal oldali egérgomb A listadoboz fölött kezdődik a vonszolás

51 Delphi Delphi III / 50 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

52 Delphi Delphi III / 51 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 ElseAccept := False; End;

53 Delphi Delphi III / 52 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

54 Delphi Delphi III / 53 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

55 Delphi Delphi III / 54 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)

56 Delphi Delphi III / 55 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ó

57 Delphi Delphi III / 56 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)

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

59 Delphi Delphi III / 58 TípusmegállapításTípusmegállapítás : Is Típuskonverzió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'; Osztályoperátorok TComponent TButton


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

Hasonló előadás


Google Hirdetések