Tartalomjegyzék
Delphi és Lazarus tananyag
- Szerző: Sallai András
- Copyright © 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
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);