Title: Delphi
1Delphi
- A VB felhasználó barátságát kombinálja a C tág
lehetoségeivel és sebességével. - RAD - Rapid Application Development Vizuális
nyelv 4GL nyelv rengeteg kódírástól kímél meg
(pl. felhasználói felület készítése)
2Delphi
- Eseményvezérelt programozás (Event Drive
Programming) a programkód részleteit események
aktivizálják (pl. egér, billentyuzet muveletek). - A Delphi rendszer nyelve az Object Pascal.
3Object Pascal
- Fobb különbségek a Turbo Pascalhoz képest
- Megjegyzés , (), új // a sor hátralevo
része - Globális változóknak kezdeti értéket adhatunk,
pl var sum integer 0 - Bovített típusválaszték. Integer 32 bites, több
boolean, char, string típus (alapértelmezés
szerint 2GB méretu).
4Object Pascal
- Függvény visszatérési érték megadása név
érték, vagy result érték - Függvény, eljárás lehetséges konstans paraméter.
A fordító nem készít lokális másolatot, mint az
érték szerintinél, viszont nem lehet
megváltoztatni az értékét. Nagy méretu
paramétereknél helytakarékosság. Deklarálás pl.
const p string - Rengeteg új függvény stringkezelo (pl. StrToInt,
IntToStr ), matematikai (Power, ArcSin ), tömb
(MinValue, MaxValue, Sum, Mean), üzleti,
pénzügyi számítások.
5Object Pascal
- Objektumok
- Class típus adatok, metódusok, tulajdonságok.
- Tulajdonság elérheto úgy is közvetlenül, hogy
nem sérül az adatrejtés elve, pl Label1.Caption
Hello! - TObject osztály a közös os
6Object Pascal - komponensek
- olyan objektumok, melyek jellemzoi mind
tervezési, mind futási idoben elérhetok. - A vizuális programfejlesztés alapját képezik.
- Rengeteg komponens áll rendelkezésünkre (VCL
Visual Componenet Library pl. nyomógombok,
címke, gördítosáv, menü, stb.), - valamint készíthetünk is azokat, ill.
letölthetünk az Internetrol.
7A komponensek rendelkeznek
- tulajdonságokkal, (properties) speciális
adatmezok, melyek meghatározzák, hogy milyen
legyen egy komponens (pl. méret, elhelyezkedés,
szín, stb.) - futás közben hívható metódusokkal, mit csináljon
egy komponens (pl. egy ablak esetén create,
close, show, hide). - eseményekkel (spec. tulajdonság, metódus mutató)
amelyekre reagál az adott komponens.
8Object Pascal
- Osztály operátorok is (logikai eredmény), as
(típus konverzió), (ld. késobb, Sender
paraméter). - Tároló osztályok pl. TList, TStrings (add,
insert, clear, ) TStack, TQueue (push, pop, ).
9Delphi, mint a Windows programozás eszköze
- Form a formok lesznek a felhasználó által
látható ablakok (TForm osztály, TForm1
származtatott osztály). - Az ablakba komponensek kerülnekA komponensek egy
része vezérlo, azaz a hozzájuk rendelt események
(pl. egérkattintás) irányítják a programot. - Eseménykezelok eljárások, melyeket az
eseményekhez rendeltünk, és így meghatározzák az
eseményre való reagálást.
10Project
- A program elnevezése Delphiben. Egy vagy több
unitból áll. Minden formhoz tartozik egy unit. - A project mentése - minden projectet külön
könyvtárba mentsünk! - a Save All, vagy a Save Project as pontokat
válasszuk - elso mentéskor eloször a unit(ok)nak kell nevet
adnunk, majd a projectnek - megnyitáskor ne a unit, hanem a project fájlt
nyissuk meg
11Project fájlok
- .dpr (Delphi Project) egy fál egy projectnél.
A Delphi automatikusan kezeli. (TApplication
osztály alkalmazás Windows kapcsolat,
létrehozás, futtatás, leállítás.) - .dfm (Delphi Form) automatikus
- .pas unitok, ide írjuk a kódunkat, rengeteg
automatizmus segíti a munkánkat.
12Egy Delphi program tervezésének lépései
- Ablak(ok) testre szabása
- Annak eldöntése, hogy mely eseményekre
reagáljanak az adott ablakban található
komponensek. - Az eseménykezelo eljárások (és az ezeket
kiszolgáló eljárások) megírása.
13Delphi IDE
- Menü, eszköztár
- Komponens paletta
- Form tervezo ablak
- Editor (kód) ablak
- Objektum felügyelo (Object Inspector)
tulajdonságok, események.
14A tulajdonságok lehetnek
- szám-, illetve szöveg típusú (pl. Caption,
Height) - felsorolt típus, logikai (legördülo lista, pl.
Align, Enabled) - halmaz ( gomb, pl. BorderIcons)
- osztály ( vagy három pont gomb, mely utóbbira
egy párbeszédablak nyílik ki, pl. Font)
15Unit szintaxisa
- Unit név
- Interface
- Más unitokból is elérheto részek deklarációi
(elj., fv.-ek fejlécei) - Uses
- Const
- Type
- Var
-
- Implementation
- Unit szintu deklarációk, elj., fv.-ek
részletezései - Initialization
- Induláskor egyszer lefut
- Finalization
- Befejezéskor egyszer lefut
- End.
16A vezérlok (form) fontosabb tulajdonságai
- Name A vezérlok nevét tárolja, amely megegye-zik
a programban a vezérlot tároló változó nevével. A
Delphi automatikusan értéket ad a Name
tulaj-donságnak, valamint elvégzi a deklarációt.
Vigyázzunk, hogy ne töröljük ki (ne keverjük
össze a Caption tulajdonsággal)! - Top, Left, Width, Height, Align
- Visible, Enabled
- Color, Font
17A vezérlok (form) fontosabb tulajdonságai
- TabStop, TabOrder
- Hint, ShowHint
- Caption, (ne keverjük össze a Name-mel!)
- FormStyle (fsNormal, fsMDIChild, fsMDIForm,
fsStayOnTop) - Beállításuk
- tervezési idoben (Objektum felügyelo)
- futási idoben (programban pl. width400)
18Néhány esemény
- OnClick, OnDblClick,
- OnMouseMove, OnMouseDown, OnMouseUp,
- OnKeyDown, OnKeyUp, OnKeyPress,
- OnEnter, OnExit, OnChange.
- Alapértelmezett esemény (komponensre dupla
kattintás)
19Fontosabb komponensek
A komponensek hatékony felhasználásához az alábbi
kérdésekre kell ismernünk a választ
- Milyen tulajdonságokkal (properties) rendelkezik
a vezérlo? - Milyen metódusok (methods) segítik a vezérlo
használatát? - Mely eseményekkel (events) avatkozhatunk be a
vezérloelem muködésébe?
20Menü
- Fomenü (ablakmenü), felbukkanó menü. TMainMenu,
TPopupMenu vezérlohalmaz, melynek elemei
TMenuItem típusúak (OnClick) - Menütervezo (dupla katt. a menü komponensre)Fobb
tulajdonságok Caption (, -) ShortCut Enabled
Checked GroupIndex (ha azonos, a menü tételek
rádiógomb szeruen muködnek)Almenü jobb egér
gomb, majd értelemszeruen.
21Vezérlogombok
- Nyomógomb (Button), Caption, OnClick
- Jelölo négyzet (CheckBox) Ha rákattintunk a
Checked tulajdonsága változik. Általában két
állapotú gomb (, de ha az AllowGrayed
tulajdon-sága igaz, akkor 3 állapotú). Állapotát
a State tulajdonság tárolja automatikusan.
Alapeseménye OnClick. - Választógomb (RadioButton), Checked (true/false).
22Választógomb
- Általában csoportokba szervezve használjuk, egy
csoportban csak egy lehet bekapcsolt állapotú.
Csoportokba szervezés - - GroupBox-ban minden gomb külön
eseménykezelovel rendelkezik (OnClick) - - RadioGroup-ban
- Items nyomógombok feliratai
- ItemIndex melyik van bekapcsolva (0, 1, 2, )
- OnClick egy eseménykezelo
23ScrollBar
- Position,
- Min, Max,
- SmallChange, LargeChange,
- OnChange
24Szövegmegjelenítok
- Label (címke) Caption
- Edit egysoros szöveg szerkesztése. Text,
ReadOnly, OnChange, Clear - Memo többsoros szöveg szerkesztése
25Memo
- A Lines tulajdonság, mely TStrings típusú,
soronként teszi elérhetové a szöveget (tervezési
idoben is). A Lines tulajdonság LoadFromFile,
ill. SaveToFile metódusait használhatjuk be- és
kivitelre. - (A Text tulajdonság futás közben elérheto)
- Clear, Modified, CutToClipboard, CopyToClipboard,
PasteFromClipboard metódusok segítik az egyszeru
edit funkciók megvalósítását.
26Listás vezérlok
- ListBox Items (ez a tulajdonság TString típusú,
tehát használhatók az Add, Delete, Clear, Insert
metódusok), - Items.Count, MultiSelect, ItemIndex, Selected,
OnClick, Clear. - ComboBox Edit ListBox kombinációja. Style
tulajd. pl csDropDown, csDropDownList
27Egyéb vezérlok
- Csoportosító vezérlok
- GroupBox
- Panel három dimenziós megjelenésu csoportosító
keret. - Idozíto - Timer System panel, nem vizuális
vezérlo. Az Interval tulajdonságban megadott
idoközönként megtörténik az OnTimer esemény.
Enabled
28Egyéb vezérlok
- BitBtn kép (Glyph tulajdonság) is van a
nyomógombon - SpeedButton eszköztár-gomb (Glyph)
- TrackBar megjelenésében különbözik a
ScrollBar-tól - ProgressBar
- MaskEdit
- RichEdit jobban támogatja a szövegek
formázá-sát, mint a memo
29Párbeszédablakok (Dialogs unit)
30Üzenetablakok
- ShowMessage eljárás egyszeru üzenet
megjelenítése. - Megjelenik a paraméterként megadott üzenet egy
kis ablak-an, egy OK gombbal. - A szintaktikája (ld. Delphi help)
- Declaration
- procedure ShowMessage(const Msg string)
- A használatára egy példa (ld. Delphi help)
- procedure TForm1.Button1Click(Sender TObject)
- begin
- ShowMessage('Push this button')
- end
31- MessageDlg függvény egyszeru dialógusablak.
- function MessageDlg(const Msg string
- ATypeTMsgDlgType AButtons TMsgDlgButtons
- HelpCtx Longint) Word
- A függvény paraméterei
- Msg a megjelenített üzenet,
- AType az üzenet doboz külalakját határozza meg.
Lehet - mtWarning figyelmeztetés
- mtError hiba
- mtInformation információ
- mtConfirmation megerosítés
- mtCustom felhasználó által definiált.
- AButtons egy halmaz, mely meghatározza, hogy
milyen nyomógombok legyenek a boxban. Elemei
lehetnek mbYes, mbNo, mbOk, mbCancel, (ld.
help). - HelpCtx akkor szükséges, ha programunk tartalmaz
help-et. Egyébként 0.
32- A függvény visszatérési értéke a leütött gombtól
függ. Lehet mrYes, mrNo, mrOk, mrCancel, (ezek
nevesített konstansok). - A használatára egy példa (ld. Delphi help)
- procedure TForm1.Button1Click(Sender TObject)
- begin
- if MessageDlg('Welcome. Exit now?',
- mtInformation, mbYes, mbNo, 0) mrYes
then - Close
- end
- Megj. Van egy a ShowMessage eljáráshoz hasonló,
de alacsonyabb szintu függvény, a MessageBox. Ez
a Windows API része. Bovebben ld. help.
33Egyszeru adatbeviteli párbeszédablakok
- InputBox
- function InputBox(const ACaption,
- APrompt, ADefault string) string
- InputQuery Ha szükség van arra az
informá-cióra is, hogy a felhasználó az OK v. a
Cancel gom-bot nyomta-e meg. - function InputQuery(const ACaption,
- APrompt string, var Value string)
- Boolean
34Általános párbeszédablakok
- A Dialogs paletta lapon találhatók (OpenDialog,
SaveDialog, FontDialog, ColorDialog, PrintDialog,
PrinterSetupDialog, FindDialog, ReplaceDialog,
OpenPictureDialog, SavePictureDialog). - A tulajdonságok beállításával paramé-terezhetjük
az ablakok megjelenítését.
35Általános párbeszédablakok
- Az execute metódussal jelenítjük meg pl.
- if Párbeszédablak.Execute then
- begin
- //jóváhagyással történt a kilépés
- end
- else
- begin
- //jóváhagyás nélküli kilépés
- end
36Példa - OpenDialog
- procedure TForm1.SpeedButton1Click(Sender
TObject) - begin
- if OpenDialog1.Execute then Memo1.Lines.LoadFromF
ile(OpenDialog1.FileName) - end
37Új formként megjeleno párbeszédablakok
- Használhatjuk az elokészített párbeszéd-ablak
mintákat (File/New Dialogs fül), - vagy egy üres formot adhatunk hozzá a projecthez
(New Form). - A párbeszédablak általában modális, azaz be kell
zárni az aktivizáló ablakhoz való visszatéréshez.
38Új formként megjeleno párbeszédablakok
- A formot a ShowModal metódusával jelenítjük meg,
- visszatérési értéke a form bezárásakor a form
ModalResult tulajdonsága lesz, amit általában a
bezáró nyomógombtól kap (pl. mrOK, mrCancel), - tehát tervezéskor a gombok ModalResult
tulajdon-ságát állítjuk be (az elore elkészített
párbeszédablak mintáknál ezt már beállították).
39Grafika
- A Delphi grafikai lehetoségeit a Canvas objek-tum
testesíti meg, - pl. az Image objektum rendelkezik ilyen
tulaj-donsággal pl. Image1.Canvas .
procedure TForm1.Button1Click(Sender
TObject)begin with Image1.Canvas do begin
Pen.ColorclRed MoveTo(100,100)
LineTo(200,100) endend
40Canvas - tulajdonságok
- Brush
- Color (clBlack, clGreen, )
- Style (bsSolid, bsClear, bsCross, )
- Pen
- Color
- Width (integer)
- Style (psSolid, psDash, )
- Mode (pmCopy, pmXor, )
- Pixels (TColor típusú tömb), pl
pixels100,100clBlack
41Canvas - metódusok
- MoveTo
- LineTo
- TextOut, TextHeight, TexWidth
- Arc, Chord, Ellipse, Pie
- Rectangle, RoundRect
- FloodFill
- Procedure FloodFill(x,yinteger, ColorTColor,
FillStyleTFillStyle) - TFillStyle fsSurface, fsBorder