Sign in Join
Wiki copytemporary

Lazarus Tutorial/nl: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Inleiding
22
33Lazarus 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.
44
55## Het begin
66
77(Thanks to User:Kirkpatc)
88
99### Je eerste Lazarus-programma
1010
1111Download, [[Installing Lazarus|installeer]] en start Lazarus. Voor een complete handleiding voor de installatie van Lazarus verwijzen we naar deze [[Installing Lazarus|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.
1212
1313Nadat 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").
1414
1515Het 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'.
1616
1717Klik 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:
1818
19-` procedure TForm1.Button1Click(Sender: TObject);`\
20-` begin`\
21-` `\
22-` end;`
19+``` pascal
20+ procedure TForm1.Button1Click(Sender: TObject);
21+ begin
22+
23+ end;
24+```
2325
2426Type op de regel tussen begin en end het volgende:
2527
26-` Button1.Caption := 'Press again'`
28+``` pascal
29+ Button1.Caption := 'Press again'
30+```
2731
2832Druk nu op F12 en je wordt weer terug gebracht naar het ontwerp van Form1.
2933
3034Wijzig 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:
3135
32-` procedure TForm1.Button2Click(Sender: TObject);`\
33-` begin`\
34-`   Close;`\
35-` end;`
36+``` pascal
37+ procedure TForm1.Button2Click(Sender: TObject);
38+ begin
39+ Close;
40+ end;
41+```
3642
3743Je hoeft dus alleen maar Close; in te typen.
3844
3945Je 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.
4046
4147Er 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.
4248
4349Klik 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'!!
4450
4551Klik 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.
4652
4753Het 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!
4854
4955### Een kleine uitbreiding.
5056
5157Heropen, 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:
5258
53-` procedure TForm1.Button1Click(Sender: TObject);`\
54-`{We gebruiken hier het Tag property, die de waardes 0 of 1 krijgt.}`\
55-` begin`\
56-`   if Button1.tag =0 then`\
57-`   begin`\
58-`     Button1.caption := 'Press again';`\
59-`     Button1.tag := 1`\
60-`   end else`\
61-`   begin`\
62-`     Button1.caption := 'Press';`\
63-`     Button1.tag := 0`\
64-`   end`\
65-` end;`
59+``` pascal
60+ procedure TForm1.Button1Click(Sender: TObject);
61+{We gebruiken hier het Tag property, die de waardes 0 of 1 krijgt.}
62+ begin
63+ if Button1.tag =0 then
64+ begin
65+ Button1.caption := 'Press again';
66+ Button1.tag := 1
67+ end else
68+ begin
69+ Button1.caption := 'Press';
70+ Button1.tag := 0
71+ end
72+ end;
73+```
6674
6775Sla 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'.
6876
6977The rest is up to you!
7078
7179### Tekst georiënteerde programma's.
7280
7381Als 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]].
7482
7583## De Editor
7684
7785### De onderdelen van de Editor
7886
7987Als je Lazarus opstart, verschijnen er een aantal losse van elkaar onafhankelijke of te wel 'floating' schermen op je desktop.
8088
8189Het 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.
8290
8391![](/wiki-images/2/2d/Lazmain.jpg)
8492
8593Onder 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.
8694
8795Onder dit hoofdscherm zie je aan de linkerkant de **[Object Inspector](http://lazarus-ccr.sourceforge.net/kbdata/objinsp.jpg)**, en de **[Lazarus Source Editor](http://lazarus-ccr.sourceforge.net/kbdata/editor.jpg)** aan de rechterkant. Er kan nog een ander kleiner scherm, genaamd **[Form1](http://lazarus-ccr.sourceforge.net/kbdata/blankform.jpg)** 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.
8896
8997Als 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.
9098
9199Er zijn nog meer schermen die je zichtbaar kunt maken of die zichtbaar worden tijdens het werken: de **[Project Inspector](http://lazarus-ccr.sourceforge.net/kbdata/projinsp.jpg)**, 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.
92100
93101### Het Hoofdmenu
94102
95103For a detailed description of every menu item which is accessible from the Lazarus IDE Main Menu, please refer to the [[Main menu/nl]] page.
96104
97105### Het knoppenpaneel (Button bar)
98106
99107Een kleine "toolbar" met een aantal knopjes, die veelgebruikte menukeuzes snel beschikbaar maken:
100108
101109
102110**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**.
103111
104112## De Componenten Palet
105113
106114Een toolbar met tabs waarop een groot aantal iconen die de componenten weergeven.
107115
108116De verschillende componenten zijn functioneel gegroepeerd op de tabs. Aan de uiterste linker kant zie je op iedere tab een pijl, genaamd 'Selection Tool'.
109117
110118Als 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.
111119
112120**TABS** (de namen zijn over het algemeen veelzeggend genoeg.):
113121
114122- **[Standard](http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls)**: *Veel gebruikte componenten:* [TMainMenu](http://lazarus-ccr.sourceforge.net/index.php?wiki=MenuUnit), [TPopupMenu](http://lazarus-ccr.sourceforge.net/index.php?wiki=MenuUnit), [TButton](http://lazarus-ccr.sourceforge.net/index.php?wiki=ButtonsTxt), TLabel, TEdit, TMemo, TToggleBox, TCheckBox, TRadioButton, TListBox, TComboBox, TScrollBar, TGroupBox, TStaticText, [TRadioGroup](http://lazarus-ccr.sourceforge.net/index.php?wiki=ExtCtrls), TCheckGroup, [TPanel](http://lazarus-ccr.sourceforge.net/index.php?wiki=ExtCtrls), TActionList
115123- **[Additional](http://lazarus-ccr.sourceforge.net/index.php?wiki=ExtCtrls)**: *Regelmatig gebruikte componenten:* [TBitBtn](http://lazarus-ccr.sourceforge.net/index.php?wiki=ButtonsTxt), [TSpeedButton](http://lazarus-ccr.sourceforge.net/index.php?wiki=ButtonsTxt), [TImage](http://lazarus-ccr.sourceforge.net/index.php?wiki=ExtCtrls), TShape, TBevel, TPaintBox, TNotebook, TLabeledEdit, TSplitter, [TMaskEdit](http://lazarus-ccr.sourceforge.net/index.php?wiki=MaskEdit), TCheckListBox, [TScrollBox](http://lazarus-ccr.sourceforge.net/index.php?wiki=FormsTxt), [TApplicationProperties](http://lazarus-ccr.sourceforge.net/index.php?wiki=FormsTxt), TStringGrid, TDrawGrid, TPairSplitter
116124- **[Common Controls](http://lazarus-ccr.sourceforge.net/index.php?wiki=ComCtrls)**: TTrackBar, TProgressBar, TTreeView, TListView, TStatusBar, TToolBar, TUpDown, TPageControl, TImageList
117125- **[Dialogs](http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogsTxt)**: TOpenDialog, TSaveDialog, TSelectDirectoryDialog, TColorDialog, TFontDialog, TOpenPictureDialog, TSavePictureDialog, TCalendarDialog, TCalculatorDialog
118126
119127Een aantal veel gebruikte **[Dialoog](http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogExamples)** procedures en functions zie je niet op de componenten palet, maar kunnen eenvoudig gebruikt worden met aanroep vanuit je eigen programma.
120128
121129Bij 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.
122130
123131Waarschijnlijk 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.
124132
125133Kijk 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.
126134
127135- **Misc**: [TColorButton](http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogsTxt), TSpinEdit, TArrow, TCalendar, TEditButton, TFileNameEdit, TDirectoryEdit, TDateEdit, TCalcEdit, TFileListBox
128136- **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
129137- **Data Access**: TDatasource
130138- **System**: [TTimer](http://lazarus-ccr.sourceforge.net/index.php?wiki=ExtCtrls), TIdleTimer, TProcess
131139- **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](http://synedit.sourceforge.net). TSynEdit, TSynAutoComplete, TSynExporterHTML, TSynMacroRecorder, TSynMemo, TSynPasSyn, TSynCppSyn, TSynJavaSyn, TSynPerlSyn, TSynHTMLSyn, TSynXMLSyn, TSynLFMSyn, TSynUNIXShellScriptSyn, TSynCssSyn, TSynPHPSyn, TSynTeXSyn, TSynSQLSyn, TSynMultiSyn
132140
133141Om 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.
134142
135143Als 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]].
136144
137145## De Debugger
138146
139147
140148*Moet nog geschreven worden*.
141149
142150## De Lazarusbestanden
143151
144152Een Lazarusproject voor een grafisch programma bestaat uit minimaal twee bestanden:
145153
146-`  xxx.pas (of xxx.pp) en yyy.lpr `
154+```text
155+ xxx.pas (of xxx.pp) en yyy.lpr
156+```
147157
148158Eigenlijk 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.
149159
150160Dus 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.
151161
152162Uiteindelijk was dit mijn resultaat:
153163
154164e:/lazarus/kj/lazhello:
155165
156-`total 4740  free 76500`\
157-`-rwxrwxrwx   1 kjwh     root  4618697 Mar 24 11:19 again.exe`\
158-`-rw-rw-rw-   1 kjwh     root     3002 Mar 24 11:21 again.lpi`\
159-`-rw-rw-rw-   1 kjwh     root      190 Mar 24 11:18 again.lpr`\
160-`-rw-rw-rw-   1 kjwh     root      506 Mar 24 11:08 againu.lfm`\
161-`-rw-rw-rw-   1 kjwh     root      679 Mar 24 11:08 againu.lrs`\
162-`-rw-rw-rw-   1 kjwh     root      677 Mar 24 11:08 againu.pas`\
163-`-rw-rw-rw-   1 kjwh     root     2124 Mar 24 11:08 againu.ppu`\
164-`-rwxrwxrwx   1 kjwh     root      335 Mar 24 11:07 ppas.bat`
166+```text
167+total 4740 free 76500
168+-rwxrwxrwx 1 kjwh root 4618697 Mar 24 11:19 again.exe
169+-rw-rw-rw- 1 kjwh root 3002 Mar 24 11:21 again.lpi
170+-rw-rw-rw- 1 kjwh root 190 Mar 24 11:18 again.lpr
171+-rw-rw-rw- 1 kjwh root 506 Mar 24 11:08 againu.lfm
172+-rw-rw-rw- 1 kjwh root 679 Mar 24 11:08 againu.lrs
173+-rw-rw-rw- 1 kjwh root 677 Mar 24 11:08 againu.pas
174+-rw-rw-rw- 1 kjwh root 2124 Mar 24 11:08 againu.ppu
175+-rwxrwxrwx 1 kjwh root 335 Mar 24 11:07 ppas.bat
176+```
165177
166178Zoals je ziet zijn het een paar meer dan je in eerste instantie dacht op te slaan.
167179
168180Hieronder voor elk bestand een kleine beschrijving::
169181
170182**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.
171183
172184**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.
173185
174186**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.
175187
176188**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.
177189
178190**again.lrs:** Dit is dan de door Lazarus gegenereerde en gebruikte resource-file. NB: Het is geen Windows resource file!
179191
180192**againu.pas:** Het bestand dat de broncode bevat van het formulier. Dit is dus het bestand dat je in de source editor bewerkt.
181193
182194**again.ppu:** De gecompileerde versie van agianu.pas.
183195
184196**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.
185197
186198---
187199*From the Free Pascal wiki, page "Lazarus Tutorial/nl", as it stood on 2021-12-08 after a change by Kupferstecher, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history