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

Hasonló előadás


Az előadások a következő témára: "1. TÖBBABLAKOS APPLIKÁCIÓK"— Előadás másolata:

0 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 1. TÖBBABLAKOS APPLIKÁCIÓK

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

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

4 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

5 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

6 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

7 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

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)

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)

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.

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

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.

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

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.

15 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);

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

17 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

18 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

19 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

20 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

21 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

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

23 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

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

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

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

27 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

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

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

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

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

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

33 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

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

35 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

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

37 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);

38 2. KIVÉTELEK KEZELÉSE

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

40 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

41 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

42 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

43 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

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;

45 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;

46 3. DRAG & DROP TECHNIKA

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

48 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

49 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

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

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 Else Accept := False; End;

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

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

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

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ó

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

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

58 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


Letölteni ppt "1. TÖBBABLAKOS APPLIKÁCIÓK"

Hasonló előadás


Google Hirdetések