Delphi programozás Delphi programozás alapjaialapjai
Nagyváradi AnettNagyváradi [email protected]@morpheus.pte.hu
http://morpheus.pte.hu/~anettnhttp://morpheus.pte.hu/~anettn
PTE PMMK MITPTE PMMK MIT
2. ELŐADÁS2. ELŐADÁS
Borland Delphi fejlesztői környezetBorland Delphi fejlesztői környezet- BevezetésBevezetés
Megjegyzés: Megjegyzés: a ppt-ben található színkódok:a ppt-ben található színkódok:
forráskód általános szintaxisaforráskód általános szintaxisapéldaprogram részletpéldaprogram részlet
TörténelemTörténelem1968-70 Pascal nyelv és fordító1968-70 Pascal nyelv és fordító1983 Turbo Pascal 1.0 …1983 Turbo Pascal 1.0 …1991 Turbo Pascal 6.01991 Turbo Pascal 6.01995 Delphi 1.0 …1995 Delphi 1.0 …1998 Delphi 4.0 …1998 Delphi 4.0 …2001 Delphi 6.02001 Delphi 6.02002 Delphi 7.0, Delphi .NET2002 Delphi 7.0, Delphi .NET2003 Delphi 8.02003 Delphi 8.02004 Delphi 20052004 Delphi 20052005 Delphi 20062005 Delphi 2006
Borland Delphi 7.0Borland Delphi 7.0
- Objektum orientált nyelvre épül: Object - Objektum orientált nyelvre épül: Object PascalPascal
- IDE: - IDE: Integrated Development Integrated Development EnvironmentEnvironment
Integrált Fejlesztői KörnyezetIntegrált Fejlesztői Környezet
- Eseményvezérelt programozás- Eseményvezérelt programozás
OOP jellemzőiOOP jellemzőiEgységbe zárásEgységbe zárás
- az adatstruktúra és az őt kezelő függvény - az adatstruktúra és az őt kezelő függvény egy egységet képez: objektum (osztály)egy egységet képez: objektum (osztály)
ÖröklésÖröklés- meglévő osztályokból levezetett újabb - meglévő osztályokból levezetett újabb
osztályok öröklik a definiálásukhoz használt osztályok öröklik a definiálásukhoz használt alaposztályok már létező adatstruktúráit és alaposztályok már létező adatstruktúráit és függvényeitfüggvényeit
TöbbrétűségTöbbrétűség- adott tevékenység (metódus) azonosítója - adott tevékenység (metódus) azonosítója
közös lehet egy adott osztályhierarchián belül, közös lehet egy adott osztályhierarchián belül, ugyanakkor a hierarchia minden egyes ugyanakkor a hierarchia minden egyes osztályában a tevékenységet végrehajtó osztályában a tevékenységet végrehajtó függvény megvalósítása az adott osztályra nézve függvény megvalósítása az adott osztályra nézve specifikusspecifikus
OOP - fogalmakOOP - fogalmakOsztályOsztály – felhasználó által megadott adattípus – felhasználó által megadott adattípus
ObjektumObjektum –osztály példánya –osztály példánya
MezőkMezők – objektum részét alkotó változók – objektum részét alkotó változók
MetódusMetódus – függvények, eljárások, melyek – függvények, eljárások, melyek valamely osztály vagy ősosztály objektumaira valamely osztály vagy ősosztály objektumaira vonatkoznakvonatkoznak
TulajdonságTulajdonság – mint egy mező, hatása metódus – mint egy mező, hatása metódus
ÖröklődésÖröklődés – egy osztály lehet egy másik osztály – egy osztály lehet egy másik osztály leszármazottja – örökli annak mezőit, leszármazottja – örökli annak mezőit, metódusait, tulajdonságaitmetódusait, tulajdonságait
Állomány neveÁllomány neve
Interfész szakaszInterfész szakasz (típusdeklarációkat (típusdeklarációkat tartalmaz)tartalmaz)Leírja, hogy az alkalmazás többi része mit lát Leírja, hogy az alkalmazás többi része mit lát a unitban (változók, konstansok, hívható a unitban (változók, konstansok, hívható eljárások definíciói)eljárások definíciói)Ez a rész nem futtatható kódot tartalmaz.Ez a rész nem futtatható kódot tartalmaz.
Implementációs szakaszImplementációs szakaszA kódot itt írjuk és futtatjuk. (az itt definiált A kódot itt írjuk és futtatjuk. (az itt definiált eljárások, függvények csak itt használhatók)eljárások, függvények csak itt használhatók)
Erőforrás fordítási direktívaErőforrás fordítási direktívaÁllomány végeÁllomány vége
Egy Delphi program Egy Delphi program szerkezeteszerkezete
unit Unit1;unit Unit1;
interfaceinterface
usesuses Windows, Messages, SysUtils, Windows, Messages, SysUtils,
Variants, Classes, Graphics, Variants, Classes, Graphics, Controls, Forms, Dialogs;Controls, Forms, Dialogs;
typetype TForm1 = class(TForm)TForm1 = class(TForm) privateprivate { Private declarations }{ Private declarations } publicpublic { Public declarations }{ Public declarations } end;end;varvar Form1: TForm1;Form1: TForm1;
implementationimplementation
{$R *.dfm}{$R *.dfm}end.end.
Osztályok szintaxisaOsztályok szintaxisaTMyClass = classTMyClass = class {osztálydeklaráció}{osztálydeklaráció}
End;End;
TMyClass = class (TObject)TMyClass = class (TObject) {alosztály}{alosztály}
End;End;
Alapértelmezetten minden osztály őse a Alapértelmezetten minden osztály őse a TObject osztály.TObject osztály.
A TObject osztály rendelkezik egy ClassName A TObject osztály rendelkezik egy ClassName osztálymetódus névvel, tehát:osztálymetódus névvel, tehát:
ShowMessage(TMyClass.ClassName);ShowMessage(TMyClass.ClassName);
megadja az osztály nevét egy megadja az osztály nevét egy ablaküzenetbenablaküzenetben
PéldaPélda
1. 1. Állapot leírásaÁllapot leírása: osztály tartalmazza : osztály tartalmazza a példányok ‘tervrajzát’ a példányok ‘tervrajzát’ (tulajdonságok)(tulajdonságok)pl.: TKutya osztálypl.: TKutya osztálytulajdonságai: tulajdonságai:
TKutya = classTKutya = classSzín: TColor;Szín: TColor;Faj: String;Faj: String;Nem: String;Nem: String;Súly: Double;Súly: Double;
end;end;
Példa – folyt.1Példa – folyt.1Szín: TColor;Szín: TColor;
Itt a Szín tulajdonság bármely szín lehet, a Itt a Szín tulajdonság bármely szín lehet, a TColor egy előre definiált típus (pl.: kék TColor egy előre definiált típus (pl.: kék kutya – ami nem szerencsés)kutya – ami nem szerencsés)
Megoldás: Megoldás: új (felsorolásos) típusúj (felsorolásos) típusType TKutyaSzin = (ksBArna, ksFekete, ksFehér);Type TKutyaSzin = (ksBArna, ksFekete, ksFehér);
Majd a Szín attribútum újradefiniálása: Majd a Szín attribútum újradefiniálása: Szín = TKutyaSzin;Szín = TKutyaSzin;
Példa – folyt.2Példa – folyt.22. 2. KépességekKépességek: osztályok képességeit a : osztályok képességeit a
metódusok adják meg – mire képes az metódusok adják meg – mire képes az adott osztályadott osztályMetódusok: osztályok tagjaiként deklarált Metódusok: osztályok tagjaiként deklarált eljárások, függvényekeljárások, függvények
Pl.: Pl.: TKutya = classTKutya = classSzín: TColor;Szín: TColor;Faj: String;Faj: String;Nem: String;Nem: String;Súly: Double;Súly: Double;Procedure Ugat;Procedure Ugat;Procedure Fut;Procedure Fut;
end;end;
Példa – folyt.3Példa – folyt.3
Az így megadott eljárásokat az Az így megadott eljárásokat az implemen-tációs szakaszban (az implemen-tációs szakaszban (az osztály nevével ellátva) definiáljuk:osztály nevével ellátva) definiáljuk:
ImplementationImplementation
Procedure TKutya.Ugat;Procedure TKutya.Ugat;
BeginBegin
//kód//kód
End;End;
Példa – folyt.4Példa – folyt.43.3.Objektumpéldány létrehozásaObjektumpéldány létrehozása: a definiált : a definiált
osztály egy példányát létrehozva osztály egy példányát létrehozva használhatjuk annak tulajdonságait:használhatjuk annak tulajdonságait:
változónév:=osztálynév.createváltozónév:=osztálynév.create
Pl.: Pl.: var Dog: TKutya;var Dog: TKutya;beginbegin
Dog:= TKutya.Create; Dog:= TKutya.Create; //memória foglalás //memória foglalás
Dog.Szín:= ksFehér;Dog.Szín:= ksFehér;……Dog.Free;Dog.Free; //memória //memória
felszabadításfelszabadítás
end;end;
A Self kulcsszóA Self kulcsszó
Metódus: eljárások, függvények, és Metódus: eljárások, függvények, és rendelkeznek egy paraméterrel, mely rendelkeznek egy paraméterrel, mely az aktuális objektumra mutataz aktuális objektumra mutat
A metóduson belül ere az objektumra a A metóduson belül ere az objektumra a SelfSelf kulcsszóval hivatkozhatunk. kulcsszóval hivatkozhatunk.
pl.: futási időben létrehozott pl.: futási időben létrehozott komponens esetén a komponens esetén a CreateCreate-nek meg -nek meg kell adni a komponens tulajdonosát, kell adni a komponens tulajdonosát, szülőjétszülőjét
Példa- SelfPélda- SelfProcedureTForm1.FormMouseDown (Sender:Object; ProcedureTForm1.FormMouseDown (Sender:Object;
Button: TMouseButton; Shift: TShiftState; Button: TMouseButton; Shift: TShiftState; X,Y:Integer);X,Y:Integer);
//ez az esemény paraméterként megkapja //ez az esemény paraméterként megkapja akattintás akattintás pozícióját is ellentétben az onclick-kelpozícióját is ellentétben az onclick-kel
Var Gomb:TButton;Var Gomb:TButton;
BeginBeginGomb:=TButton.Create(Self);Gomb:=TButton.Create(Self);Gomb.Parent := Self;Gomb.Parent := Self;Gomb.Left := X;Gomb.Left := X;Gomb.Top :=Y;Gomb.Top :=Y;Gomb.Width :=Gomb.Width + 50;Gomb.Width :=Gomb.Width + 50;Gomb.Caption := Format(‘Button at %d %d’,[X,Y]);Gomb.Caption := Format(‘Button at %d %d’,[X,Y]);
End;End;
//beinkludálni StdCtrls (unitba!)//beinkludálni StdCtrls (unitba!)
Delphi környezetDelphi környezet
IndítóképernyőIndítóképernyő::
Menu – componentsMenu – components
Object Inspector Object Inspector – – properties, eventsproperties, events
Object Tree ViewObject Tree View
FormForm
UnitUnit
Menü - Menü - komponensekkomponensek
- Szokásos menüpontok (file, edit, stb.)- Szokásos menüpontok (file, edit, stb.)
- Gyorsbillentyűk- Gyorsbillentyűk
- Programfutáshoz szükséges funkciógombok- Programfutáshoz szükséges funkciógombok
- Komponenspaletta- Komponenspaletta(standard, additional, win32, datacontrols, stb.)(standard, additional, win32, datacontrols, stb.)
Object InspectorObject Inspector
„„Objektumvizsgáló”Objektumvizsgáló”
Tervezési módban – adatbeviteli Tervezési módban – adatbeviteli ablak objektumok alapértelmezett ablak objektumok alapértelmezett értékei részéreértékei részére
1. 1. PropertiesProperties (tulajdonságok) (tulajdonságok)
tervezésnél módosítható adatoktervezésnél módosítható adatok
2. 2. EventsEvents (események) (események)
üzenetekre reagáló szubrutinoküzenetekre reagáló szubrutinok
Object Tree ViewObject Tree View
„„Objektumok fanézete”Objektumok fanézete”
Objektumok közötti Objektumok közötti hierarchia alapján hierarchia alapján navigálhatunknavigálhatunk
Az objektumokat kapcsolati Az objektumokat kapcsolati rendszerben mutatjarendszerben mutatja
Ablak és Ablak és kódszerkesztőkódszerkesztő
Form: (ablak) „külcsíny” Form: (ablak) „külcsíny”
ez a felhasználói ez a felhasználói felület a kapocs a felület a kapocs a külvilág és a program külvilág és a program közöttközött
Unit: (kódszerkesztő) Unit: (kódszerkesztő) „belbecs” „belbecs”
itt található a itt található a tényleges forráskódtényleges forráskód
Munkakörnyezet Munkakörnyezet konfigurálásakonfigurálása
Tools > Editor Tools > Editor OptionsOptions
Project beállításokProject beállítások
Project > OptionsProject > Options
- aktív form - aktív form beállításbeállítás
- alkalmazás - alkalmazás tulajdonságaitulajdonságai
- verzió információ- verzió információ
Delphi alkalmazásokDelphi alkalmazások
*.res*.res ikonállomány (bináris)ikonállomány (bináris)*.pas*.pas forráskód állomány (pascal)forráskód állomány (pascal)*.dfm*.dfm form és adatmodul állományok form és adatmodul állományok*.dpr*.dpr projectállomány (pascal)projectállomány (pascal)*.dof*.dof project, options beállítások - aktuális beállításokproject, options beállítások - aktuális beállítások*.cfg*.cfg alkalmazás fordítását érintő konfigurációs alkalmazás fordítását érintő konfigurációs
állományállomány~ ~ backup fájlok –biztonsági másolatbackup fájlok –biztonsági másolat
Komponensek - Komponensek - StandardStandardMain MenuMain Menu menüszerkesztés- duplaklikkel menüszerkesztőmenüszerkesztés- duplaklikkel menüszerkesztőPopup MenuPopup Menu legördülő menülegördülő menüLabel Label címke, feliratcímke, feliratEditEdit szövegdobozszövegdobozMemoMemo szövegmegjelenítésreszövegmegjelenítésreButtonButton gombgombCheckBoxCheckBox jelölőnégyzetjelölőnégyzetRadioButtonRadioButton választógomb (csoportosítás)választógomb (csoportosítás)ListBoxListBox listalistaComboBoxComboBox listáról elem kiválasztásalistáról elem kiválasztásaScrollBarScrollBar gördítősávgördítősávGroupBoxGroupBox összetartozó komponensek csoportosításáraösszetartozó komponensek csoportosításáraRadioGroupRadioGroup választógomb csoportosításáraválasztógomb csoportosításáraPanelPanel panelterületpanelterületActionListActionListműveletlistaműveletlista
KomponensekKomponensek - - AdditionalAdditional
BitBtnBitBtn gomb(ikon rendelhető) gomb(ikon rendelhető)SpeedButtonSpeedButton
gombterület(eszköztár)gombterület(eszköztár)MaskEdit formátumos MaskEdit formátumos
bekérőmezőbekérőmezőStringGridStringGrid szövegtáblázatszövegtáblázatDrawGridDrawGrid táblázattáblázatImagesImages képekképekShapeShape rajzrajzBevelBevel területterületScrollBoxScrollBox gördíthető területgördíthető területCheckListBoxCheckListBox jelölőnégyzetes jelölőnégyzetes
listaablaklistaablakSplitterSplitter felosztásfelosztásStaticTextStaticText keretezett szövegsorkeretezett szövegsorControlBarControlBar jelölősorjelölősorChartChart grafikagrafika
További komponensek:További komponensek:
ApplicationEventApplicationEventValueListEditorValueListEditorLabelEditLabelEditColorBoxColorBoxActionManagerActionManagerActiopnMainMenuBarActiopnMainMenuBarActionToolBarActionToolBarCustomizeDlgCustomizeDlg
KomponensekKomponensek – win32– win32TabControlTabControl fül komponens (lapozáshoz)fül komponens (lapozáshoz)PageControlPageControl füles lapokfüles lapokImageListImageList képsorozatképsorozatRichEditRichEdit szövegszerkesztőszövegszerkesztőTrackBarTrackBar csúszkacsúszkaProgressBarProgressBar folyamatjelzőfolyamatjelzőUpDownUpDown léptető (nyílgombokra kattintva – tovább előre)léptető (nyílgombokra kattintva – tovább előre)HotKeyHotKey vezérlőgombvezérlőgombAnimateAnimate animáció – néma videoklippanimáció – néma videoklippDateTimePickerDateTimePicker dátum idő komponensdátum idő komponensMonthCalendarMonthCalendar naptárnaptárTreeViewTreeView fa (adatokat rajzos fa szerkezetben jeleníti meg)fa (adatokat rajzos fa szerkezetben jeleníti meg)ListViewListView adatokat oszlopba rendezve jeleníti megadatokat oszlopba rendezve jeleníti megHeaderControlHeaderControl mozgatható fejlécmozgatható fejlécStatusBarStatusBar állapotsor (a munkaterület aljára)állapotsor (a munkaterület aljára)ToolBarToolBar eszközsoreszközsorCoolBarCoolBar görgethető eszközsorgörgethető eszközsorPageScrollerPageScroller lapozható eszközpalettalapozható eszközpaletta
KomponensekKomponensek – – SystemSystem
TimerTimer stopper időtartam mérésérestopper időtartam mérésérePaintBoxPaintBox rajzterületrajzterületMediaPlayerMediaPlayer multimédia (video)multimédia (video)OleContainerOleContainer ügyfélterület létrehozásaügyfélterület létrehozásaDdeClientConvDdeClientConv ügyfél-kiszolgáló kapcsolat felépítéséreügyfél-kiszolgáló kapcsolat felépítéséreDdeClientItemDdeClientItem ügyféladat (elküldésére a kiszolgálónak)ügyféladat (elküldésére a kiszolgálónak)DdeServerConvDdeServerConv ügyfélkommunikáció ügyfélkommunikáció DdeServerItemDdeServerItem kiszolgálóadatkiszolgálóadat
KomponensekKomponensek – – DataAccessDataAccessDataSourceDataSource adatforrás (összefűző komponens)adatforrás (összefűző komponens)
ClientDataSetClientDataSet egyéni többfelhasználós adatbázisegyéni többfelhasználós adatbázis
DataSetProviderDataSetProvider adatbáziskérő (szervertről)adatbáziskérő (szervertről)
XMLTransformXMLTransform
XMLTransformProviderXMLTransformProvider
XMLTransformClientXMLTransformClient
KomponensekKomponensek – – DataControlsDataControlsDBGridDBGrid adatbázis táblaadatbázis táblaDBNavigatorDBNavigator navigátorgomboknavigátorgombokDBTextDBText szövegsor adatszövegsor adatDBEditDBEdit adatbekérőadatbekérőDBMemoDBMemo szövegsorok adat szövegsorok adat DBImagesDBImages kép adatkép adatDBListBoxDBListBox lista adatlista adatDBComboBoxDBComboBox bekérő lista adatbekérő lista adatDBCheckBoxDBCheckBox jelölőnégyzet adatjelölőnégyzet adatDBRadioGroupDBRadioGroup választógomb adatválasztógomb adatDBLookUpListBoxDBLookUpListBox táblaoszloptáblaoszlopDBLookUpComboBoxDBLookUpComboBox táblaoszlop szerkesztéstáblaoszlop szerkesztésDBRichEditDBRichEdit formázott szövegformázott szövegDBCtrGridDBCtrGrid táblakészítőtáblakészítőDBChartDBChart grafika adatgrafika adat
KomponensekKomponensek – BDE– BDETableTable bázistáblabázistáblaQueryQuery lekérdezés (SQL)lekérdezés (SQL)StoreProcStoreProc műveletekműveletekDataBaseDataBase adatbázisadatbázisSessionSession adatbázis csoportadatbázis csoportBatchMoveBatchMove táblamásolótáblamásolóUpdateSQLUpdateSQL frissítőfrissítőNestedTableNestedTable visszaíróvisszaíró
Események (events)Események (events)duplaklikk : duplaklikk : ObjectInspector>Events>…ObjectInspector>Events>…
OnActivateOnActivate aktiválás hatásáraaktiválás hatásáraOnClickOnClick ráklikkelés hatásáraráklikkelés hatásáraOnCreateOnCreate létrehozás hatásáralétrehozás hatásáraOnDbClickOnDbClick duplaklikk hatásáraduplaklikk hatásáraOnDestroyOnDestroy megszűntetés hatásáramegszűntetés hatásáraOnMouseDownOnMouseDown egéglenyomás hatásáraegéglenyomás hatásáraOnMouseMoveOnMouseMove egér áthaladás hatásáraegér áthaladás hatásáraOnKeyPressOnKeyPress billentyűzet lenyomásárabillentyűzet lenyomásáraOnKeyUpOnKeyUp billentyűzet felengedésérebillentyűzet felengedésére
MetódusokMetódusok
Application.Terminate; - az alkalmazás Application.Terminate; - az alkalmazás leállításaleállítása
Close; - az aktuális ablak bezárásaClose; - az aktuális ablak bezárása
Show; - ablak előhozásaShow; - ablak előhozása
ShowModal; - ablak előhozásaShowModal; - ablak előhozása
Create; - objektum létrehozásaCreate; - objektum létrehozása
Még két apróságMég két apróság
View>Toolbars View>Toolbars >Customize>Customize
Show tooltipsShow tooltips beállítása beállítása a könnyebb tanulás a könnyebb tanulás érdekében.érdekében.
Delphi súgó használata! Delphi súgó használata!
(kulcsszón:F1)(kulcsszón:F1)
FeladatokFeladatok
Ismerkedés a kezelőfelülettel, Ismerkedés a kezelőfelülettel, komponensekkel.komponensekkel.
Készítsen formot komponensekkel – Készítsen formot komponensekkel – változtassa azok tulajdonságait – form neve, változtassa azok tulajdonságait – form neve, fejléce, mérete, a rajta lévő objektumok fejléce, mérete, a rajta lévő objektumok tulajdonságai tulajdonságai
((ObjectInspector>PropertiesObjectInspector>Properties).).
Vizsgálja meg az Vizsgálja meg az ObjectTreeViewObjectTreeView segítségével segítségével az osztályhierarchiát az adott alkalmazáson.az osztályhierarchiát az adott alkalmazáson.
Mentse el az alkalmazást – porjektként – Mentse el az alkalmazást – porjektként – vizsgálja az elmentett állományokat.vizsgálja az elmentett állományokat.
FeladatokFeladatokAz elkészítet alkalmazás objektumainak Az elkészítet alkalmazás objektumainak
eseményeit vizsgálja.eseményeit vizsgálja.Nézze át a Nézze át a 1delphi_tesztsor1delphi_tesztsor mappában mappában
található példaprogramot (az ott használt található példaprogramot (az ott használt komponenseket, eseményeket, komponenseket, eseményeket, függvényeket, stb.)függvényeket, stb.)
Készítsen alkalmazást, mely nyomógomb Készítsen alkalmazást, mely nyomógomb segítségével valamilyen eseményt vált ki segítségével valamilyen eseményt vált ki (pl. egy szöveg, gombfelirat, panelszín (pl. egy szöveg, gombfelirat, panelszín megváltozik az onclick esemény hatására).megváltozik az onclick esemény hatására).
Vizsgálja meg a Vizsgálja meg a MessageDlgMessageDlg függvényt a függvényt a Delphi helpben, alkalmazza egy saját Delphi helpben, alkalmazza egy saját példán.példán.
Top Related