410 likes | 550 Views
Delphi. A VB felhasználó barátságát kombinálja a C++ tág lehetősé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). Delphi.
E N D
Delphi • A VB felhasználó barátságát kombinálja a C++ tág lehetősé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)
Delphi • Eseményvezérelt programozás (Event Drive Programming): a programkód részleteit események aktivizálják (pl. egér, billentyűzet műveletek). • A Delphi rendszer nyelve az Object Pascal.
Object Pascal Főbb különbségek a Turbo Pascalhoz képest: • Megjegyzés: {…}, (*…*), új: // a sor hátralevő része • Globális változóknak kezdeti értéket adhatunk, pl: var sum: integer = 0; • Bővített típusválaszték. Integer: 32 bites, több boolean, char, string típus (alapértelmezés szerint 2GB méretű).
Object 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éretű paramétereknél helytakarékosság. Deklarálás pl.: const p: string • Rengeteg új függvény: stringkezelő (pl. StrToInt, IntToStr …), matematikai (Power, ArcSin …), tömb (MinValue, MaxValue, Sum, Mean…), üzleti, pénzügyi számítások.
Object Pascal • Objektumok • Class típus: adatok, metódusok, tulajdonságok. • Tulajdonság: elérhető ú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 ős
Object Pascal - komponensek • olyan objektumok, melyek jellemzői mind tervezési, mind futási időben elérhetők. • 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ítősáv, menü, stb.), • valamint készíthetünk is azokat, ill. letölthetünk az Internetről.
A komponensek rendelkeznek • tulajdonságokkal, (properties) speciális adatmezők, 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.
Object Pascal • Osztály operátorok: is (logikai eredmény), as (típus konverzió), (ld. később, Sender paraméter). • Tároló osztályok pl.: TList, TStrings (add, insert, clear, …); TStack, TQueue (push, pop, …).
Delphi, 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érlő, azaz a hozzájuk rendelt események (pl. egérkattintás) irányítják a programot. • Eseménykezelők: eljárások, melyeket az eseményekhez rendeltünk, és így meghatározzák az eseményre való reagálást.
Project • 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 • első mentéskor először a unit(ok)nak kell nevet adnunk, majd a projectnek • megnyitáskor ne a unit, hanem a project fájlt nyissuk meg
Project 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.
Egy 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énykezelő eljárások (és az ezeket kiszolgáló eljárások) megírása.
Delphi IDE • Menü, eszköztár • Komponens paletta • Form tervező ablak • Editor (kód) ablak • Objektum felügyelő (Object Inspector): tulajdonságok, események.
A tulajdonságok lehetnek • szám-, illetve szöveg típusú (pl. Caption, Height) • felsorolt típus, logikai (legördülő 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)
Unit szintaxisa Unit név; Interface Más unitokból is elérhető részek deklarációi (elj., fv.-ek fejlécei) Uses Const Type Var … Implementation Unit szintű deklarációk, elj., fv.-ek részletezései Initialization Induláskor egyszer lefut Finalization Befejezéskor egyszer lefut End.
A vezérlők (form) fontosabb tulajdonságai • Name: A vezérlők nevét tárolja, amely megegye-zik a programban a vezérlőt 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
A vezérlők (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 időben (Objektum felügyelő) • futási időben (programban pl.: width:=400;)
Néhány esemény • OnClick, OnDblClick, • OnMouseMove, OnMouseDown, OnMouseUp, • OnKeyDown, OnKeyUp, OnKeyPress, • OnEnter, OnExit, OnChange. • Alapértelmezett esemény (komponensre dupla kattintás)
Fontosabb 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érlő? • Milyen metódusok (methods) segítik a vezérlő használatát? • Mely eseményekkel (events) avatkozhatunk be a vezérlőelem működésébe?
Menü • Főmenü (ablakmenü), felbukkanó menü. TMainMenu, TPopupMenu vezérlőhalmaz, melynek elemei TMenuItem típusúak (OnClick) • Menütervező (dupla katt. a menü komponensre)Főbb tulajdonságok: Caption (&, -); ShortCut; Enabled; Checked; GroupIndex (ha azonos, a menü tételek rádiógomb szerűen működnek)Almenü: jobb egér gomb, majd értelemszerűen.
Vezérlőgombok • Nyomógomb (Button), Caption, OnClick • Jelölő 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).
Vá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énykezelővel rendelkezik (OnClick) • - RadioGroup-ban: • Items: nyomógombok feliratai • ItemIndex: melyik van bekapcsolva (0, 1, 2, …) • OnClick: egy eseménykezelő
ScrollBar • Position, • Min, Max, • SmallChange, LargeChange, • OnChange
Szövegmegjelenítők • Label (címke): Caption • Edit: egysoros szöveg szerkesztése. Text, ReadOnly, OnChange, Clear • Memo: többsoros szöveg szerkesztése
Memo • A Lines tulajdonság, mely TStrings típusú, soronként teszi elérhetővé a szöveget (tervezési időben is). A Lines tulajdonság LoadFromFile, ill. SaveToFile metódusait használhatjuk be- és kivitelre. • (A Text tulajdonság futás közben elérhető) • Clear, Modified, CutToClipboard, CopyToClipboard, PasteFromClipboard metódusok segítik az egyszerű edit funkciók megvalósítását.
Listás vezérlők • 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
Egyéb vezérlők • Csoportosító vezérlők • GroupBox • Panel: három dimenziós megjelenésű csoportosító keret. • Időzítő - Timer: System panel, nem vizuális vezérlő. Az Interval tulajdonságban megadott időközönként megtörténik az OnTimer esemény. Enabled
Egyéb vezérlők • 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
Üzenetablakok • ShowMessage eljárás: egyszerű ü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;
MessageDlg függvény: egyszerű dialógusablak. function MessageDlg(const Msg: string; AType:TMsgDlgType; 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 megerősí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.
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 szintű függvény, a MessageBox. Ez a Windows API része. Bővebben ld. help.
Egyszerű 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
Á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.
Á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
Példa - OpenDialog procedure TForm1.SpeedButton1Click(Sender: TObject); begin if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName); end;
Új formként megjelenő párbeszédablakok • Használhatjuk az előké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.
Új formként megjelenő 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 előre elkészített párbeszédablak mintáknál ezt már beállították).
Grafika • A Delphi grafikai lehetősé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);beginwith Image1.Canvas dobeginPen.Color:=clRed;MoveTo(100,100);LineTo(200,100);end;end;
Canvas - 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: pixels[100,100]:=clBlack;
Canvas - metódusok • MoveTo • LineTo • TextOut, TextHeight, TexWidth • Arc, Chord, Ellipse, Pie • Rectangle, RoundRect • FloodFill Procedure FloodFill(x,y:integer, Color:TColor, FillStyle:TFillStyle); TFillStyle: fsSurface, fsBorder