< Pascal

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

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)