[[: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)