HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) Vereiste voorkennis Voldoende kennis van het besturingssysteem (in deze handleiding wordt uitgegaan van Windows) De basisprincipes van programmeren Vereiste software In deze handleiding wordt uitgegaan van Lazarus 1.6 Lazarus downloaden: @@@@@@@@@@@ LES 1 Introductie Start Lazarus; onderstaande verschijnt:
Een programma bestaat uit een of meerdere forms (die de GUI vormen), en een of meerdere units (code). Als je Lazarus opstart staat er meteen een Project voor je klaar waar je mee aan de slag kunt (standaard naam is: project1). Indien dit niet het geval is kun je een nieuw project starten via het hoofdmenu: File New Application (zie hieronder) Form1 is nog leeg:
Op deze Form gaan we een knop ofwel Button plaatsen. Een Button kun je vinden op het tabblad Standard: Plaats een knop op Form1 door op de Button-knop te klikken (zie de pijl in de figuur hierboven) en vervolgens ergens op Form1 te klikken (op de plaats waar je de knop wilt hebben, in dit geval rechts onderaan). Form1 moet er dan als volgt uit komen te zien: Nu staat er een knop op Form1 en we willen dat als er op de knop gedrukt wordt, het programma beeindigd wordt.
De knop Button1 kun je zien als een object met bepaalde properties (eigenschappen) en events (gebeurtenissen). De properties en events van een object kun je bekijken in de Object Inspector. Deze staat mits je hem niet verplaatst hebt links in het scherm en ziet er uit als de afbeelding links. Je ziet: één van de properties van een button is de Caption, dat is de tekst die op de knop staat. Nu is die tekst: Button1. Verander de Caption van Button1 in Afsluiten
Form1 zou er nu ongeveer als volgt uit moeten zien: Nu gaan we er voor zorgen dat als er op de knop geklikt wordt (= een event, gebeurtenis), het programma afgesloten wordt. Open in de Object Inspector het tabblad Events
De Object Inspector zou er nu ongeveer als volgt moeten uitzien:
Met een button kunnen verschillende dingen gebeuren. De gebruiker van je programma kan bijvoorbeeld met de muis over de button heen bewegen. Deze event heet OnMouseMove. Meestal echter gaat het er om dat er op een button geklikt (of gedrukt) wordt. Deze event heet OnClick. Dubbelklik in de Object Inspector op het grijze vakje naast OnClick Je zult zien dat Form1 nu naar de achtergrond verdwijnt en dat er een venster verschijnt met in de titelbalk Unit1.pas. Dat ziet er ongeveer zo uit:
Wat je nu ziet is de code die hoort bij Form1. Met behulp van de verticale scrollbalk kun je deze code rustig bekijken. In deze code staat nu onder andere de volgende tekst: procedure TForm1.Button1Click(Sender: TObject); begin end; In dit stukje tekst (of: code) staan 3 erg belangrijke woorden, nl. procedure, begin en end. Deze 3 woorden zijn voorbeelden van door Pascal gereserveerde woorden. Deze woorden hebben een speciale betekenis, ze worden dan ook vetgedrukt weergegeven. Tussen begin en end komt te staan wat er moet gebeuren als er op Button1 geklikt of gedrukt wordt. We willen dat het programma dan afgesloten wordt. Een programma kun je afsluiten met het volgende commando: Application.Terminate Zet dit commando tussen begin en end
Je zou nu ongeveer het volgende op je scherm moeten zien: Je hebt nu een simpel programmaatje gemaakt dat je kunt afsluiten door op Button1 te klikken. Het wordt hoog tijd om dit programma op te slaan! Het opslaan van een programma kun je doen via de menu-balk.
Bekijk de onderstaande afbeelding: Ga naar de menu-balk en kies dan: File Save As
Nu verschijnt ongeveer het volgende scherm: Bovenaan wordt, zoals je dat van meer Windows-programma s gewend bent, gevraagd in welke map je alles wilt gaan opslaan. Kies bij Save in in welke map je het programma wilt opslaan. Maak eventueel een eigen map aan op een logische plaats (vraag eventueel aan je docent). De File name project1 laten we staan. Klik op Save om project1 op te slaan onder de naam project1.lpi. Echter, nu heb je nog niet het volledige programma opgeslagen! Een programma dat nog niet omgezet is in een werkbaar programma (ook wel gecompileerd genoemd) bestaat uit meerdere bestanden waarvan de belangrijkste het.lpi bestand is. Een programma bestaat in ieder geval uit een.lpi bestand en een of meer.pas bestanden. Meer uitleg hierover volgt later. Omdat zo n programma uit meer bestanden bestaat, verschijnt er dan ook automatisch na het opslaan van project1.lpi nog een venster, met als titel Save unit1 (*.pas). Nu gaan we het.pas bestand opslaan. Zie hieronder:
Sla de unit op als unit1.pas. Nu we het programma opgeslagen hebben als project1.lpi betekent dit dat, wanneer we het programma compileren, dit wordt omgezet naar project1.exe, ofwel een door de computer uitvoerbaar programma. LET OP: het op de juiste manier opslaan van een programma is erg belangrijk. Sla de bestanden van een programma altijd op in 1 map en verdeel het niet over meerdere mappen. Ook is het niet erg verstandig om een programma op te slaan in een map, waarin al een ander programma opgeslagen is.
ONTHOUD HET VOLGENDE: Als je een programma voor de eerste keer opslaat doe je dat in het menu van Lazarus via File Save as, je moet nu twee dingen opslaan: eerst Project1.lpi (het hoofdprogramma ; je kunt ook een andere naam dan Project1 gebruiken) en daarna Unit1.pas (de code die hoort bij Form1; je kunt ook een andere naam dan Unit1 gebruiken) Indien je iets wijzigt of toevoegt aan je programma dan kun je het beste ineens alles opslaan in het menu van Lazarus via File Save All Indien je het programma ook nog ergens anders wilt opslaan, bijvoorbeeld op een USB stick, doe dat dan niet via het menu van Lazarus!!! Gebruik dan de Verkenner en kopieer daarin al je bestanden naar de USB stick. Als je je programma op de harde schijf netjes in een aparte map hebt opgeslagen, kun je natuurlijk in 1 keer de hele map naar de USB stick kopieren, zodat je eventueel ook nog andere programma s overzichtelijk op de USB stick kunt zetten Nu we het programma hebben opgeslagen, wordt het natuurlijk tijd om het programma te laten werken, ook wel runnen genoemd. Dat kun je doen door op de toets F9 te drukken (of door op de Afspeelknop te klikken of door in de Menubalk te kiezen voor Run Run). Als je dat doet dan gaat Lazarus je programma compileren, dat wil zeggen: controleren op fouten en dan omzetten naar een programma dat door de computer uitgevoerd kan worden (populair gezegd: omzetten in nullen en enen, er een.exe file van maken). Run je programma door op F9 te drukken of op een van de andere manieren die hierboven geschreven zijn. Als je foutmeldingen krijgt probeer je die eerst zelf op te lossen. Lukt dit niet dan vraag je hulp aan je docent.
Je krijgt dan als het goed is het volgende te zien: Als het goed is, dan moet het programma als je op de knop Afsluiten klikt, het programma stoppen. Probeer dit uit Nu gaan we ons programma uitbreiden. Het is de bedoeling dat als je op een knop klikt, de tekst van een label op Form1 verandert. Die knop en dat label moeten we nu eerst op Form1 plaatsen. Plaats een knop (button) op Form1 net zoals we dat eerder gedaan hebben. Verander de tekst op deze knop (de Caption) in Actie!
Je moet nu ongeveer het volgende zien: Nu moeten we nog een label er op plaatsen. Een label kun je vinden op het tabblad Standard, zie de onderstaande figuur: Plaats een label midden op Form1 door eerst op de plaats waar de pijl in de bovenstaande figuur naar wijst te klikken en dan op het midden van Form1 Nu moet je ongeveer het volgende zien:
Nu gaan we er voor zorgen, zoals eerder gezegd, dat als er op de Actie!-knop geklikt wordt, dat dan de tekst van Label1 verandert. We willen dat de tekst veranderd wordt in Dit is een test!. Als er op de Actie!-knop geklikt wordt, dan is dat een event (gebeurtenis). Zorg dat de focus staat op de Actie!-button, dat doe je uiteraard door op de Actie-button te klikken. Nu zie je in de Object Inspector de properties en events die horen bij deze button. Ga in de Object Inspector naar het tabblad Events. Dubbelklik nu op het grijze vakje rechts naast OnClick.
Nu wordt een gedeelte van de code van Unit1 zichtbaar. Je ziet nu ongeveer het volgende: Nu gaan we, net als we eerder voor de Afsluiten-button gedaan hebben, tussen begin en end typen, wat er moet gebeuren als je op Button2 klikt. De tekst van Label1 moet dan Dit is een test worden. De tekst van een Label wordt, net als bij een Button, bepaald door zijn Caption. De tekst kun je veranderen door het volgende commando tussen begin en end te plaatsen: Label1.Caption:= Dit is een test! Doe dit. We gaan proberen of het werkt. Druk op F9 om het programma te runnen. Werkt het? Als het goed is, krijg je als je het programma runt, en dan op de Actie!-button klikt, het volgende te zien:
De lettergrootte van het label is wel erg klein. We gaan het mogelijk maken om, als je op een derde button klikt, de lettergrootte van Label1 verandert. Plaats een derde button op Form1, recht boven de Actie!-knop Verander de Caption van deze button in Vergroot! (in de Object Inspector op het tabblad properties) Dubbelklik nu op deze derde button. Nu wordt de code geladen waar komt te staan wat er moet gebeuren. Dat is dus een andere manier dan via de Object Inspector zoals we eerst gedaan hebben! Zet in deze code tussen begin en end de volgende code die er voor zorgt dat de lettergrootte van Label1 veranderd wordt in 24 in plaats van de standaardgrootte 8: Label1.Font.Size:=24 Run het programma door op F9 te drukken Klik op de Vergroot!-knop Als je precies gedaan hebt wat hierboven staat, zul je ongeveer het volgende zien:
Merk op dat als je het programma uitvoert dat je natuurlijk eerst de tekst van Label1 kunt veranderen met de Actie!-knop en dan de tekst kunt vergroten met de Vergroot!-knop, maar dat dat ook andersom kan. Stel, je zou willen dat de gebruiker van het programma alleen maar eerst de tekst kan veranderen door op de Actie!-knop te klikken en dan de tekst kan vergroten door op de Vergroot!-knop en niet andersom. Dat kun je bewerkstelligen door alleen maar bepaalde buttons op een bepaald moment beschikbaar te laten zijn. Of je op een bepaald moment op een button kunt klikken, hangt af van de propertie Enabled van die button. We willen nu, dat als je het programma opstart, dat je dan nog niet op de Vergroot!-button kunt klikken.