Lazarus Tutorial/nl

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Deutsch (de) English (en) español (es) suomi (fi) français (fr) magyar (hu) italiano (it) 日本語 (ja) македонски (mk) Nederlands (nl) português (pt) русский (ru) slovenčina (sk) shqip (sq) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)

Inleiding

Lazarus is een "vrije" en opensourceontwikkelomgeving die gebruik maakt van de FreePascal Compiler (object pascal). De FreePascal Compiler is ook een open source project en "vrije software". De Lazarus Integrated Development Environment (IDE) is een stabiele en complete ontwikkelomgeving waarmee grafische en terminalprogramma's ontwikkeld kunnen worden. Lazarus draait onder Linux, FreeBSD, Windows, MAC-OS en ook op 64-bits platforms. Naast een instelbare code-editor heeft Lazarus ook een grafische tool voor het maken van de programmaschermen, alles volledig geïntegreerd met de FreePascal-compiler.

Het begin

(Thanks to User:Kirkpatc)

Je eerste Lazarus-programma

Download, installeer en start Lazarus. Voor een complete handleiding voor de installatie van Lazarus verwijzen we naar deze pagina, hier willen we alleen aantekenen dat bij de windows installer FPC automatisch geïnstalleerd wordt en dat je voor Linux FPC, de FPC-broncode en Lazarus apart moet installeren. Let hierbij dat de FPC versie past bij de gekozen Lazarus versie.

Nadat je Lazarus gestart hebt, zie je verschillende windows op je scherm: het hoofdmenu bovenin, de "Object Inspector" aan de linkerkant, de broncode-editor neemt het grootste deel van je scherm in, daar overheen zie je de basis voor je eerste scherm ("Form1").

Het scherm met het hoofdmenu bevat niet alleen een menu, maar ook een aantal knopjes en een rij met "tabs". Als de "Standard" tab nog niet geselecteerd is, doe dat dan door er op te klikken met de muis. Zoek dan de "Button" icon (een rechthoekje met 'OK' erop) en klik daarop. Klik daarna ergens links van het midden op het "Form1" scherm. Hierdoor zal er een rechthoek (een windowsknopje) verschijnen met de tekst 'Button1'. Klik nog eens op de "Button" icon op de "Standard" tab en daarna weer op "Form1" rechts van de eerste button. Er zal een tweede knop verschijnen, ditmaal met de tekst 'Button2'.

Klik nu op Button1 om deze te selecteren. In de Object Inspector worden de eigenschappen (properties) van de Button1 getoond. Bovenin de Object Inspector vind je de property 'Caption', deze heeft nu de waarde 'Button1'. Klik in dit vakje en wijzig de tekst in 'Press'. Als je nu op ENTER drukt of in een andere vakje klikt zul je zien dat de tekst op de knop nu wijzigt in 'Press'. Klik nu op de "Events" tab van de Object Inspector, hierdoor zie je een lijst van de verschillende Events waarop door de knop gereageerd kan worden. Deze Events bevatten onder meer OnClick, OnEnter, OnExit. (Events ontstaan als gevold van akties van de gebruiker van je programma. Wordt er op een knop geklikt dan wordt dus het OnClick event aangeroepen.) Klik in het vakje naast het OnClick, er verschijnen dan een knopje met een driehoekje en een knopje met een ellipsis (...). Als je op het ellipsis-knopje drukt, wordt er automatisch naar het editor scherm overgegaan en zal de cursor knipperen in een stukje code dat er als volgt uit ziet:

 procedure TForm1.Button1Click(Sender: TObject);
 begin
 
 end;

Type op de regel tussen begin en end het volgende:

 Button1.Caption := 'Press again'

Druk nu op F12 en je wordt weer terug gebracht naar het ontwerp van Form1.

Wijzig nu de properties van Button2 door er op te klikken en dan naar de Object Inspector te gaan. Wijzig het Caption property in 'Exit'. Ga dan naar de "Events" tab en klik op het vakje achter OnClick, klik dan op de ellipsis knop en je komt weer in het editor scherm. Wijzig de hierbij automatisch aangemaakte procedure zodat deze er als volgt uit ziet:

 procedure TForm1.Button2Click(Sender: TObject);
 begin
   Close;
 end;

Je hoeft dus alleen maar Close; in te typen.

Je bent nu klaar om je programma te compileren en uit te voeren. De makkelijkste manier is om van het 'Run'-menu de 'Run'-optie te kiezen, je kunt ook op F9 drukken of op het groene driehoekje klikken. In ieder geval zal je programma eerst gecompileerd worden en daarna gelinkt. Uiteindelijk zal je programma uitgevoerd worden, als tenminste alles is goed gegaan en er geen fouten in je code zaten.

Er zal nog een scherm verschijnen waarin allerlei meldingen van de compiler zullen verschijnen, maar uiteindelijk zal je scherm Form1 getoond worden (zonder alle puntjes, die je in de ontwerp fase ziet.) Dit is het "mainwindow" van je applicatie en het wacht op de dingen die komen gaan.

Klik eens op de knop met de tekst 'Press'. Als het goed is, zie je dat de tekst wijzigt in 'Press again'. Klik je er nog eens op, dan blijft de tekts 'Press again'!!

Klik nu op de knop met de tekst 'Exit'. Het scherm zal sluiten en daarmee wordt je programma afgesloten. Je komt weer in de IDE, waar het originele Form1 scherm weer te zien zal zijn met alle puntjes. Je kunt dan dus weer verder gaan met het wijzigen van je scherm en je programma.

Het is verstandig (en hopelijk niet te laat) om je werk op te slaan. Dit kun je doen door ctrl-shift-s te geven of in het 'Edit'-menu de keuze 'Save all' te maken. Maak er een gewoonte van om je werk regelmatig op te slaan, zodat je geen werk kunt verliezen!

Een kleine uitbreiding.

Heropen, indien nodig, je opgeslagen project. (Menu 'Project', keuze 'Open recent project') Klik in het "Form1" scherm op de "Press" knop (Button1) om het te selecteren. Ga naar op de Object Inspector en klik op het vakje achter het OnClick. Een klik op de ellipsis knop brengt je dan in de editor in de code van het OnClick event van deze knop. Wijzig de code zodat die er als volgt uitziet:

 procedure TForm1.Button1Click(Sender: TObject);
{We gebruiken hier het Tag property, die de waardes 0 of 1 krijgt.}
 begin
   if Button1.tag =0 then
   begin
     Button1.caption := 'Press again';
     Button1.tag := 1
   end else
   begin
     Button1.caption := 'Press';
     Button1.tag := 0
   end
 end;

Sla je werk weer op, laat het opnieuw compileren en run je programma. Als je nu op de eerste knop drukt, zie je dat de tekst wisselt tussen 'Press' en 'Press again'.

The rest is up to you!

Tekst georiënteerde programma's.

Als je een console of tekst georiënteerd programma moet schrijven (bijvoorbeeld als je een basis cursus Pascal volgt, of voor een programma dat door een batch file wordt uitgevoerd), kun je ook Lazarus gebruiken om dit programma te bewerken, compileren en uit te voeren. Lazarus is dus ook een ideale tool om Pascal-programma's te schrijven. Zie Console Mode Pascal.

De Editor

De onderdelen van de Editor

Als je Lazarus opstart, verschijnen er een aantal losse van elkaar onafhankelijke of te wel 'floating' schermen op je desktop.

Het scherm aan de bovenkant van je desktop heeft als titel: Lazarus Editor vXXXXXX - project1. Hierbij wordt de serie X-en vervangen door het versie nummer van de Lazarus omgeving en zal project1 de naam weergeven van het project waar je op dat moment mee bezig bent. Dit scherm is het hoofdscherm en bevat het hoofdmenu en de componenten pallet.

Lazmain.jpg

Onder de titelbalk zien we het Hoofdmenu, met de gebruikelijke keuze als File, Edit, Search enzovoort. Daarnaast zijn er een aantal keuze specifiek voor Lazarus. Daaronder vinden we aan de linkerkant een aantal knopjes die een snelle en eenvoudige toegang geven tot een aantal belangrijke en veel gebruikte functies. Naast deze knopjes vinden we het componenten palet. Net zoals een schilder gebruik maakt van een palet om een kleur verf te kiezen, hebben we in Lazarus een pallet om een te gebruiken component te kiezen.

Onder dit hoofdscherm zie je aan de linkerkant de Object Inspector, en de Lazarus Source Editor aan de rechterkant. Er kan nog een ander kleiner scherm, genaamd Form1 zichtbaar zijn, dat over de Lazarus Source Editor scherm ligt. Als dit niet gelijk zichtbaar is, kun je het oproepen door op F12 te drukken. De F12 toets schakelt heen en weer tussen een formulier (form) en de bijbehorende code unit. Het formulier is de grafische interface van je programma.

Als je een nieuw project start zal er een standaard "Form" worden aangemaakt. Dit formulier is niet meer dan een kaal scherm met titelbalk en op dat scherm een matrix van puntjes die je helpen bij het positioneren van de verschillende componenten. De titelbalk bevat ook de gebruikelijke Minimalisatie-, Maximalisatie- en Sluitknopjes. Als je op het form klikt, zie je in de Object Inspector aan de linkerkant van je desktop de properties (eigenschappen) van het form.

Er zijn nog meer schermen die je zichtbaar kunt maken of die zichtbaar worden tijdens het werken: de Project Inspector, die gegevens laat zien over de bestanden die onderdeel zijn van het project; het Messages scherm, waarin compiler meldingen, foutmeldingen en voortgang rapportage getoond worden. Als je Lazarus opstart vanuit een terminal scherm, dan blijft dit zichtbaar en worden de compiler meldingen hierin ook weergegeven.

Het Hoofdmenu

For a detailed description of every menu item which is accessible from the Lazarus IDE Main Menu, please refer to the Main menu/nl page.

Het knoppenpaneel (Button bar)

Een kleine "toolbar" met een aantal knopjes, die veelgebruikte menukeuzes snel beschikbaar maken:

New unit, Open (met een drop-down lijst van onlangs geopende bestanden), Save, Save all, New Form, Toggle Form/Unit (Schakelen tussen de unit en het form), View Units, View Forms, Run, Pause, Step Into, Step over.

De Componenten Palet

Een toolbar met tabs waarop een groot aantal iconen die de componenten weergeven.

De verschillende componenten zijn functioneel gegroepeerd op de tabs. Aan de uiterste linker kant zie je op iedere tab een pijl, genaamd 'Selection Tool'.

Als je de muis boven een icon houdt verschijnt er een hint met de naam van het component. Je zult zien dat iedere naam begint met een 'T'. De 'T' staat voor 'Type' of eigenlijk 'Class'. In de volgende lijst van Componenten zie je links naar bestanden die beschrijvingen bevatten van de units waarin ze gevonden worden. Als je iets wilt weten van een bepaald component is het ook verstandig om te kijken naar het component waarvan het is afgeleid. Zo is bijvoorbeeld een TMaskEdit is afgeleid van TCustomMaskEdit.

TABS (de namen zijn over het algemeen veelzeggend genoeg.):

  • Standard: Veel gebruikte componenten: TMainMenu, TPopupMenu, TButton, TLabel, TEdit, TMemo, TToggleBox, TCheckBox, TRadioButton, TListBox, TComboBox, TScrollBar, TGroupBox, TStaticText, TRadioGroup, TCheckGroup, TPanel, TActionList
  • Additional: Regelmatig gebruikte componenten: TBitBtn, TSpeedButton, TImage, TShape, TBevel, TPaintBox, TNotebook, TLabeledEdit, TSplitter, TMaskEdit, TCheckListBox, TScrollBox, TApplicationProperties, TStringGrid, TDrawGrid, TPairSplitter
  • Common Controls: TTrackBar, TProgressBar, TTreeView, TListView, TStatusBar, TToolBar, TUpDown, TPageControl, TImageList
  • Dialogs: TOpenDialog, TSaveDialog, TSelectDirectoryDialog, TColorDialog, TFontDialog, TOpenPictureDialog, TSavePictureDialog, TCalendarDialog, TCalculatorDialog

Een aantal veel gebruikte Dialoog procedures en functions zie je niet op de componenten palet, maar kunnen eenvoudig gebruikt worden met aanroep vanuit je eigen programma.

Bij de installatie van Lazarus zijn een aantal voorbeelden meegenomen, deze voorbeelden staan in de $LazarusPath/examples subdirectory. Veel van deze voorbeelden laten het gebruik van dialog en andere componenten zien zonder het gebruik van de IDE en de Componenten Palet, de gebruikte componenten worden expliciet gedefinieerd in het hoofd pascalunit. Andere voorbeelden maken weer wel gebruik van de IDE.

Waarschijnlijk zullen niet alle voorbeelden gelijk werken en zul je het een en ander moeten wijzigen aan toegangsrechten tot bestanden of directories. Het eenvoudigste is waarschijnlijk om de sources te kopieren naar een directory waar je volledige rechten hebt en van daaruit de projecten te compileren en runnen.

Kijk eens naar het 'testall' programma. Je kunt hiermee via de menukeuze Components bijna alle componenten aan het werk zien. Daarna kun je de source eens bestuderen om te zien hoe ze werken en hoe je ze kunt gebruiken.

  • Misc: TColorButton, TSpinEdit, TArrow, TCalendar, TEditButton, TFileNameEdit, TDirectoryEdit, TDateEdit, TCalcEdit, TFileListBox
  • Data Controls: Een aantal data-aware uitvoeringen van componenten die op the Standard en Additional tab staan: TDBNavigation, TDBText, TDBEdit, TDBMemo, TDBImage, TDBListBox,TDBComboBox, TDBCheckBox, TDBRadioGroup, TDBCalendar, TDBGroupBox, TdbGrid
  • Data Access: TDatasource
  • System: TTimer, TIdleTimer, TProcess
  • SynEdit: SynEdit bevat een set van componenten voor Delphi, Kylix, CB en Lazarus waaronder een edit control. Het ondersteunt Syntax Highlighting, Code Completion en heeft exportfuncties naar HTML, tex en RTF. Het is geen wrapper om een bestaand MS control maar een volledig losstaand component. Zie ook synedit op sourceforge. TSynEdit, TSynAutoComplete, TSynExporterHTML, TSynMacroRecorder, TSynMemo, TSynPasSyn, TSynCppSyn, TSynJavaSyn, TSynPerlSyn, TSynHTMLSyn, TSynXMLSyn, TSynLFMSyn, TSynUNIXShellScriptSyn, TSynCssSyn, TSynPHPSyn, TSynTeXSyn, TSynSQLSyn, TSynMultiSyn

Om de componenten van de palet te gebruiken moet er natuurlijk een form zijn om ze op te plaatsen. Als er nog geen form is kun je via File -> New Form een nieuw formulier laten aanmaken. Klik dan op het icoontje van het component dat je wilt gebruiken en klik daarna op het formulier op de plek waar je het component ongeveer wilt hebben. Daarna kun je het met de muis op de juiste plaats slepen en de gewenste afmetingen geven. Deze aanpassingen kun je natuurlijk ook maken door de relevante properties in de Object Inspector te wijzigen.

Als je aanvullende componenten installeert (zelfgemaakte of uit een package van een andere bron) kunnen deze op nieuwe tab getoond worden. Deze kunnen dan op dezelfde wijze gebruikt worden als de standaardcomponenten. Zie Install Packages.

De Debugger

Moet nog geschreven worden.

De Lazarusbestanden

Een Lazarusproject voor een grafisch programma bestaat uit minimaal twee bestanden:

  xxx.pas (of xxx.pp) en yyy.lpr 

Eigenlijk worden er meer aangemaakt, maar dit zijn de bestanden die je een naam geeft. Het project bestand (lpr) en het unit bestand (pas of pp) mogen niet dezelfde naam hebben, omdat Lazarus de bijbehorende unit in de sources dezelfde naam zal geven.

Dus als je een project genaamd again opslaat, kun je de form unit niet meer als again.pas opslaan. Er zijn dan twee objecten met dezelfde naam. Dit kan niet en zal een "duplicate name" melding geven.

Uiteindelijk was dit mijn resultaat:

e:/lazarus/kj/lazhello:

total 4740  free 76500
-rwxrwxrwx   1 kjwh     root  4618697 Mar 24 11:19 again.exe
-rw-rw-rw-   1 kjwh     root     3002 Mar 24 11:21 again.lpi
-rw-rw-rw-   1 kjwh     root      190 Mar 24 11:18 again.lpr
-rw-rw-rw-   1 kjwh     root      506 Mar 24 11:08 againu.lfm
-rw-rw-rw-   1 kjwh     root      679 Mar 24 11:08 againu.lrs
-rw-rw-rw-   1 kjwh     root      677 Mar 24 11:08 againu.pas
-rw-rw-rw-   1 kjwh     root     2124 Mar 24 11:08 againu.ppu
-rwxrwxrwx   1 kjwh     root      335 Mar 24 11:07 ppas.bat

Zoals je ziet zijn het een paar meer dan je in eerste instantie dacht op te slaan.

Hieronder voor elk bestand een kleine beschrijving::

again.exe: Het uitvoerbare binaire bestand. Onder Windows zal het de ".exe"-extensie krijgen, onder Linux krijgt het geen extensie. In eerste instantie zullen deze bestanden erg groot zijn, omdat ze de volledige debug informatie bevatten. Met behulp van de "strip"-tooltje kan deze informatie verwijderd worden en zal het bestand aanzienlijk kleiner worden.

again.lpi: Dit is een bestand met informatie met betrekking tot je project, vergelijk baar met de .dsk file in Delphi. Het wordt opgeslagen in XML-formaat en bevat informatie over de plaats van de verschillende schermen, informatie over welke bestanden waren geopend in de editor, de cursorpositie in de verschillende bestanden, etc etc.

again.lpr: De broncode van het programma. Dit is een gewoon Pascal-bestand en wordt volledig door Lazarus onderhouden. Het is over het algemeen niet nodig dat je in deze file zelf wijzigingen aanbrengt.

againu.lfm: Dit is een tekstbestand met daarin de beschrijving van je form. Het wordt gebruikt om de resource file te genereren die in de initialisation sectie van againu.pas wordt ge-include. Delphi dfm-bestanden kunnen naar het Lazarus formaat worden omgezet met behulp van de Tools->Convert DFM file to LFM utility.

again.lrs: Dit is dan de door Lazarus gegenereerde en gebruikte resource-file. NB: Het is geen Windows resource file!

againu.pas: Het bestand dat de broncode bevat van het formulier. Dit is dus het bestand dat je in de source editor bewerkt.

again.ppu: De gecompileerde versie van agianu.pas.

ppas.bat: Dit is een script dat er voor zorgt dat je programma gelinkt wordt zodat er een uitvoerbaar bestand ontstaat. Als dit laatste succesvol was wordt het automatisch verwijderd.