[[:oktatas:programozás:pascal|< Pascal]] ====== Delphi és Lazarus tananyag ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2008, 2012, 2013, 2014, 2015, 2018 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== A vizuális fejlesztői felület ===== Egy új projekt indításakor több ablakot kapunk. Felül egy eszköztár, jobb oldalon egy objektum felügyelő ablak. Középen két program ablak jelenik meg, amelyek egymás mögött vannak. Az egyik a program forrása, vagy Unit. A másik a programablak vizuális tervezőfelülete. A kettő között vagy az eszköztáron, vagy az F12 billentyűvel válthatunk. Alul egy üzenetablak jelenik meg, ahol a fordítási üzenetek láthatók. Az objektum felügyelő ablak több részre oszlik. * felül a már meglévő objektumok fastruktúrában * alatta egy négy füles panelt találunk. * Properties - beállítások * Event - Események * Favorites - Kedvencek * Restricted - Korlátozott dolgok A beállítások panelon az egyes objektumok tulajdonságait tudjuk beállítani. Az esemény fülön, minden objektumhoz különféle eseményeket rendelhetünk. ==== Vizuális tervező ==== A vizuális tervező felület egyetlen Form1 objektummal indul. Az eszköztárról különböző komponenseket tudunk elhelyezni az ablakon. ===== Ablak ===== A Delphi és Lazarus rendszerekben az ablakot Form névvel illetjük. A A formokat a TForm osztályból származtatjuk. Egy form feliratát, azaz címsorát a Caption tulajdonsággal változtathatjuk meg. Form1.Caption := 'Új cím'; ===== Nyomógomb ===== Button1.Caption := 'új felirat'; ===== Üzenetablak ===== ShowMessage('Teszt'); ===== Állománykezelés ===== Szöveges állományok kezeléséhez a következő változóra van szükség: f : TextFile; Állomány és változó összekötése: AssignFile(f, 'adat.txt'); Megnyitás: Reset(f); //Létező fájl megnyitása Rewrite(f); // Létrehozza az állományt vagy felülírja az előzőt. Append(f); // Létező fájl megnyitása hozzáfűzésre. Mindig a végére fűz. Állomány bezárása: CloseFile(f); ===== Vágólap ===== ... StartEdit.SelectAll; StartEdit.CopyToClipboard; ... ... var str : String; begin str := StartEdit.Text; Clipboard.AsText := str; ... ===== Lazarus telepítése ===== ==== Linux alatt ==== Debian alapú rendszereken: apt-get install lazarus fpc-source fp-units-gfx fp-units-gtk fp-units-db apt-get install fp-units-misc fp-units-math ==== Windows alatt ==== * http://www.lazarus-ide.org/ ===== Gettext rendszer ===== A gettext rendszer használatához a következőket tegyük: * készítsünk a projekt könyvtárában egy intl nevű könyvtárat. * állítsuk be a projektet * Projekt -> Projekt beállításai ... -> i18n * állítsuk be az intl könyvtárat * kattintsuk be a .po fájl automatikus létrehozását * Tegyük a using sorba a gettext unitot Mentéskor az intl könyvtárban létrejön a projekt1.po állomány. A projektet angol nyelven írjuk meg. A projekt1.po fájból készítsünk egy másolatot hu.po néven. Szerkesszük a poedit nevű programmal. Fordítsuk le az angol nyelvű szavakat. uses gettext, translations, DefaultTranslator; procedure TMainForm.FormCreate(Sender: TObject); var PODirectory, Lang, FallbackLang: String; begin PODirectory := 'intl/'; GetLanguageIDs(Lang, FallbackLang); Translations.TranslateUnitResourceStrings('project1', PODirectory + 'project1.%s.po', Lang, ''); end; A uses sor után a resourcestring direktívát követően adjuk meg azokat a karaktersorozatokat, amelyeket mi adunk meg a forráskódban. uses LResources, Translations; resourcestring MainLabelCaption = 'Changed'; Ezek után az állandó nevét adjuk meg az értékadás jobboldalán. Például: MainLabel.Caption := MainLabelCaption; Az elkészült .mo kiterjesztésű állományt másoljuk egy **locale** vagy egy **languages** nevű könyvtárba. ===== Függelék ===== ==== Formok, komponensek kezelése ==== Form1.Memo1.Hide; Form1.Memo1.Show; A Form1 elhagyható, ha az utasítást a Form1 állományán belül adjuk ki. Fókusz figyelésére példa: If Memo1.CanFocus = true then Form2.Show ==== Billentyűzet figyelése ==== Esc billentyű figyelése esetén kezeljük a OnKeyPress eseményt, majd: If Key = #27 then Application.Terminate; Esetleg így: procedure TForm1.Memo1KeyPress(Sender: TObject; var Key : Char); begin Case Key of #27 : Form1.Close; end; end; ==== Rádiógombok ==== A rádiógombokat GroupBoxban hozzuk létre. Egy eseménykezelő így nézhet ki: If RadioButton2.Checked = true then ShowMessage('Jó válasz') else ShowMessage('Rossz válasz'); Az else előtti ShowMessage végére természetesen nem kell (;). ==== Jelszóablak ==== A Form tulajdonságainál a következőket állítjuk be: * BorderIcons * biSystemMenu -> False * biMinmize -> False * biMaximize -> False * BorderStyle -> bsDialog A Mehet gomb eseménykezelője ilyen lehet: If Edit1.Text = 'titok' then begin Form2.ModalResult := 1; Form2.Hide; ShowMessage('Beléphet'); end else being ShowMessage('Rossz jelszó'); end; ==== Üzenetablakok ==== ShowMessage('Üzenet'); MessageDlg('Szöveg', mtInformation.[mbOK], 0); MessageBox('címsor', 'Üzenet', 0); ===== Linkek ===== * http://wiki.freepascal.org/Clipboard * http://wiki.freepascal.org/Autosize_/_Layout * http://wiki.freepascal.org/LCL_Internals_-_Resizing,_Moving * http://wiki.lazarus.freepascal.org/Main_Page/hu * http://wiki.freepascal.org/Lazarus_Tutorial/hu * http://wiki.freepascal.org/Translations_/_i18n_/_localizations_for_programs (gettext)