Tutorial 1, Delphi: Geldspraak

Vergelijkbare documenten
HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

Tutorial 2, Delphi: Parabool

Derde Delphi Programma verkenning

Een eerste applicatie

DELPHI VOOR ELEKTRONICI. Deel 2: Een rekenmachine programmeren CURSUS

Versturen van vanuit een Delphi VCL toepassing

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

Cursus Onderwijs en ICT. Programmeren met Visual Basic

Een eenvoudige webserver maken in Lazarus

Variabelen en statements in ActionScript

In deze leeropdracht leer je properties (of eigenschappen) van een component te veranderen met behulp van het properties panel.

DELPHI VOOR ELEKTRONICI. cursus. Deel 5 - Meten met de geluidskaart

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?

Opdracht 7a. Applicatiebouw 2014/2015

Formulieren maken met Dreamweaver CS 4/CS 5

Technische Fiche om een commando met een passend icoontje aan te maken in de Ribbon Interface.

Stel dat u 15 tellers nodig heeft. Dat kunt u een array van tellers als volgt declareren:

NetBeans tutorial, Rik Eshuis, Kees Huizing versie 2.2 Augustus 2009

Opdracht Informatica Tutorial Visual Basic

6.2 VBA Syntax. Inleiding Visual Basic

Handleiding JCreator. Inhoud. Een Workspace en een eerste project maken

Briefhoofd maken in Word. Handleiding van Helpmij.nl

Hoofdstuk 1: Een eerste Visual Basic project

Android apps met App Inventor 2 antwoorden

Handleiding Pétanque Competitie Beheer. (versie 1.1) April 2014

Als eerste moet u eenmalig per gebruiker van Intramed de Fastguide plug-in installeren.

6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken.

Hoofdstuk 1: Een eerste Visual Basic project

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1

Handleiding IrfanView. IrfanView is een applicatie om grafische bestanden te bekijken, te bewerken en opnieuw op te slaan.

Handleiding JEvents 1.0

Programmeerstructuren met App Inventor

Opstarten Word 2013 bij Windows 7 Opstarten Word 2016 bij Windows 10

Quick Guide VivianCMS

Parallelle Poort Aansturen Met Visual Basic

INSTRUCT Samenvatting Basis Word 2010, H1 SAMENVATTING HOOFDSTUK 1

Van CaseTalk naar een database in SQLite studio

MADASTER PLATFORM. IFC export in BIM software. Archicad 21 & Revit 2019

1. Introductie tot SPSS

Mails zenden met Lazarus

BEGINNER JAVA Inhoudsopgave

Bijlage bij Getting Started Guide International English Edition

Uursoortfinanciering importeren

Werken op afstand via internet

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

1 BUSINESS INTERNET SUPPORT

Windows 8, Windows 8.1, deel II

Inhoudsopgave Visual Basic 6.0

Kennismaken Greenfoot

Wat zijn de verschillen tussen SPSS 9 en SPSS 10?

Kwalitan op de Mac. Kwalitan op de Mac pagina 1

Programmeren onder RISC OS: de snelstart. in BBC-Basic

Hoofdstuk 9: Menu s toevoegen

Gebruikershandleiding CEN Editor

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

Stap 2. Dubbelklik op install_eeditor.exe. U krijgt het volgende scherm te zien, klik op Next >.

Handleiding ISaGRAF. Wil men het programma bewaren, dan is het verstandig een back-up te maken: C9 Back-up / Restore

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Handleiding Pivot docent Wendy Bruins versie 1.2 december 2008

Les 1: Inleiding tot Alice


1. Document Management

Acht stappen voor JSF

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

INSTRUCT Samenvatting Basis Word 2007, H1 SAMENVATTING HOOFDSTUK 1

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Configuratie Hieronder zie je hoe het hoofdscherm van NewsLeecher er uitziet als je Newsleecher opstart.

Handleiding CMS-systeem website

Quick Guide VivianCMS

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Windows is het meest gebruikte besturingssysteem ter wereld.

Seven segments of Pi

Formulieren maken met Dreamweaver CS 4

1 Grafische interfaces

Etiketten maken P&A Group

Je kan vanuit de RV SiteBuilder steeds terugkeren naar het controlepaneel, via de knop rechts bovenaan.

Manual Ingave Inkoopovereenkomst

Handleiding CMS VOORKANT

Snelstartgids FiloCAD2

User accounts maken in een Wandy Hotspot, d.m.v. een batch.

Lab Webdesign: Javascript 7 april 2008

Met deze module heeft u de mogelijkheid om gemakkelijk, snel en efficiënt uw documenten als naslag in Unit 4 Multivers te koppelen.

Table of contents 2 / 15

Formulieren o.b.v. Vrije Overzichten

PROS1E1 Handleiding ( ) Kf/Dd/Bd

Met deze module heeft u de mogelijkheid om gemakkelijk, snel en efficiënt uw documenten als naslag in Unit 4 Multivers te koppelen.

SMARTPHONE APPLICATIE HANDLEIDING

Handleiding DAM Edit Design

Diamanten jacht. Gamemaker Workshop. Hogeschool van Amsterdam. Benjamin van Arkel, Simon Karman en Koen Vrij

Transcriptie:

Tutorial 1, Delphi: Geldspraak Versie Datum Auteurs Opmerkingen 1 25-09-2001 Kees Hemerik (code) Gebaseerd op Delphi 5 Enterprise. Roel Vliegen (tekst) 2 17-03-2005 Kees Hemerik Aanpassingen: Delphi 7, van gulden naar euro, kleine tekstuele wijzigingen. 3 18-11-2008 Tom Verhoeff Aangepast voor Lazarus Inleiding Doelstelling Tot nu toe heb je alleen nog maar console-applicaties gemaakt. Het voordeel hiervan is dat ze erg eenvoudig en klein zijn. Een nadeel is dat het er allemaal niet zo mooi uitziet en lastig kan zijn in de bediening. Gelukkig is het tegenwoordig met moderne visuele ontwikkelingstools, zoals bijvoorbeeld Lazarus en Delphi, helemaal niet zo moeilijk om een mooiere interface te maken. Het doel van deze oefening is om een kleine interface te maken bij de unit Converteer die een numeriek geld bedrag in spreektaal kan omzetten. Benodigheden: - Lazarus of een Delphi versie, het maakt niet zoveel uit welke. Merk op dat deze oefeningen oorspronkelijk gemaakt zijn met Delphi 7 Enterprise Edition, en daarna met Lazarus op een Mac. Het kan er op je eigen machine een beetje anders uitzien. Mocht je hier onverhoopt problemen mee hebben, vraag het dan gewoon. - de unit Converteer, die bij deze tutorial wordt meegeleverd. Geldspraak Het is de bedoeling dat je in deze oefening een applicatie maakt met twee edit-boxen. In de ene moeten de euro s van een geldbedrag ingevuld kunnen worden en in de andere de centen. Alleen als er een correct bedrag in beide edit-boxen staat moet er op een knop gedrukt kunnen worden, waarna de numerieke representatie wordt omgezet naar spreektaal. Dit resultaat wordt dan in een derde edit-box weergegeven. Deze edit-box moet read-only gemaakt worden.

Oefening Geldspraak 1. Start Lazarus op. Je krijgt nu een scherm als in Figure 1. 2. Bij het opstarten van Lazarus wordt een project voor een GUI applicatie gecreëerd (tenzij de standaard instelling is aangepast; in dat geval creëer je zo'n project door via New Project in het Project menu te kiezen voor Application). 3. Bij aanvang bestaat de GUI applicatie uit het kale form (venster) dat in Figure 1 rechtsonder te zien is. Maak nu een nieuwe map voor dit project en sla het project op met Save Project As uit het project menu. Je zult nu eerst gevraagd worden om een unit op te slaan. Noem deze unit Main.pas en sla hem op in de goede map. Nu word je gevraagd om het project een naam te geven. Geef het project de naam Geldspraak.lpi. De projectnaam is tevens de naam van je applicatie. Je project kan uit meerdere units bestaan, die elk weer eventueel een of meerdere forms kunnen bevatten. Figure 1

4. Het is van belang om de juiste compiler opties in te stellen. Doe dit via Project > Compiler options. Zie Figure 2. Figure 2 5. Het project dat we net hebben opgeslagen is al een volledig uitvoerbaar project. Je kunt het dan ook al compileren en runnen. Tot nu toe is het slechts een leeg form dat je kunt minimaliseren, maximaliseren, verplaatsen en afsluiten. In feite is dit de kleinste grafische Lazarus applicatie, vergelijkbaar met het standaard Pascal programma: end. Compileer en run het programma eens. Je kunt dit doen door in het Run-menu Run te kiezen of met de play knop in de knoppenbalk. Je kunt het programma beëindigen door het venster af te sluiten. 6. Het form dat je net op beeld zag, wordt beschreven door Pascal code die staat in de unit die je opsloeg in punt 2. Je kunt met Lazarus een form op een interactieve grafische manier ontwerpen. Veel aanpassingen die je verricht aan het form zullen automatisch code genereren of een verandering in de code doorvoeren. Verander de naam van het form ( Form1 dus) in MainForm. Je kunt dit doen door in de Object Inspector (zie figure 1) onder Property de Name MainForm in te vullen. Let hierbij op de code van de unit, hierin zal automatisch de naam ook worden aangepast.

7. Plaats nu een edit-box op je form. Je kunt dit doen door de component Edit te selecteren (van het type TEdit) zoals in Figure 3. Klik vervolgens op het form op de plaats waar je wilt dat de edit-box komt te staan. Let hierbij weer op de code die automatisch gegenereerd wordt. Geef de edit-box de naam EditEuro en maak hem met behulp van de Text-property leeg. Figure 3 8. Plaats nu een label (in Figure 3 de Abc links naast de edit box) erboven met de naam LabelEuro en als caption &Euro. Zoals je ziet komt er een streepje onder de E, dit betekent dat er nu een sneltoets (<alt-e>) is die naar dit label verwijst. Omdat het natuurlijk niet veel zin heeft als een label de focus zou krijgen, kunnen we met de property FocusControl aangeven welke control de focus moet krijgen in plaats van het label, in dit geval willen we dus dat EditEuro de focus krijgt als we <alt-e> indrukken. 9. Plaats nu op dezelfde manier een edit-box en een label waar de centen van het bedrag in gezet kunnen worden. Geef ook aan deze componenten zinnige namen en koppel er een sneltoets aan. Je hebt nu pas een klein stukje van het programma gemaakt, toch kun je dit nu al uitvoeren. Als je alles goed gedaan hebt, zou je geen foutmeldingen moeten krijgen en krijg je het schermpje dat je hebt gemaakt met de twee edit-boxen. Je kunt er nu al getallen in typen en de sneltoetsen zouden ook al moeten werken. 10. Zet nu een knop (Button) erbij. Ook hier kun je heel makkelijk een sneltoets aan toekennen door in de Caption-property weer een &-tekentje neer te zetten voor de letter die je wilt. 11. De laatste component die nog nodig is is een Edit-box voor het resultaat. Geef deze de naam EditResultaat. De gebruiker mag de tekst van deze edit-box niet kunnen aanpassen. Ook dit kun je weer met een property (Read-Only) instellen. 12. Je hebt nu alle componenten op beeld staan die je nodig hebt voor deze oefening. Als het goed is ziet het ongeveer uit als in Figure 4. Je hebt nu dus een form waarvan alle standaard functionaliteiten het al doen. De edit-boxen en knoppen functioneren bijvoorbeeld zoals je zou verwachten. Er is alleen nog geen koppeling tussen het form en de code die je erbij zou willen uitvoeren uit de unit Converteer. Deze koppeling wordt in interactieve Lazarus-applicaties (en ook de

meeste andere Windows applicaties) gemaakt door het afhandelen van Events. Elke component op het form heeft enkele Events die kunnen optreden. Zo kan er bijvoorbeeld op de Button geklikt worden, als dit gebeurt dan wordt de eventhandler voor het OnClick-event van de Button uitgevoerd. Als er een wijziging in een edit-box optreedt zal het OnChange-event worden uitgevoerd. In de Object Inspector kunnen niet alleen alle Properties worden aangepast, maar ook alle Events. Open in de Object Inspector nu het form en dubbelklik in het Eventstabblad rechts naast OnCreate op het vlakje. Er wordt nu automatisch een paar regels code gegenereerd. Voeg aan de body van deze nieuwe procedure de volgende regel toe: Button1.Enabled := False; Het OnCreate-event wordt aangeroepen op het moment dat een object wordt gecreëerd. Door deze regel toe te voegen zal op het moment dat het form gecreëerd wordt de Enabled-property van Button1 op false gezet worden, wat tot effect heeft dat er dan niet op de knop gedrukt kan worden. Dit levert dus de volgende procedure op: procedure TMainForm.FormCreate(Sender: TObject); Button1.Enabled := False; Start je programma nog maar eens op en je zult zien dat je niet meer op de knop kunt drukken.

Figure 4 13. Kijk nu maar eens naar de rest van de code die er al staat. Je hoeft nog niet alle code te snappen die er staat, maar zoals je ziet lijkt het erg veel op een normale pascal unit. Om de unit Converteer te kunnen gebruiken, moet deze worden toegevoegd aan je project. Kopieer daarom eerst Converteer.pas naar de juiste map. Vervolgens kun je hem toevoegen aan het project door hem te openen (via File > Open) en dan in het Project menu Add to editor file to project te kiezen. Om de unit Converteer vervolgens aan te kunnen roepen moet je hem nog achteraan toevoegen achter uses in Main.pas, net als bij standaard Pascal: uses,,converteer; 14. Het is de bedoeling dat de knop alleen gebruikt kan worden indien er geldige getallen zijn ingevoerd in de twee edit-boxen. In de euro-editbox mag een getal staan van ten hoogste 6 cijfers en minimaal 1 cijfer. In de centen-editbox moeten altijd precies 2 cijfers staan. Maak nu een functie ValidEuro die een boolean teruggeeft die aangeeft of de tekst in EditEuro geldig is. Dit doe je door aan de public declarations (bovenin de code van de unit in de definitie van TForm1) de functie ValidEuro toe te voegen. Met behulp van Code Completion (Ctrl+Shift+C, of door rechter muisknop en Refactor > Complete Code ) kun je aan het implementatie deel automatisch het skelet van de code laten toevoegen, dit gaat bijna hetzelfde als het genereren van een event-handler. Hieronder volgt een complete specificatie en implementatie van ValidEuro: function TMainForm.ValidEuro: Boolean; { pre: true ret: 1 <= Length(S) <= 6 /\ (forall i:1<=i<=length(s). S[i] in Digit), waarin S=EditEuro.Text } var S: String; { tekst van EditEuro } I: Integer; { doorloopt S } S := EditEuro.Text; Result := (1 <= Length(S)) and (Length(S) <= 6); if Result then for I := 1 to Length(S) do Result := Result and (S[I] in Digit); 15. Doe hetzelfde nu voor ValidCent: function TMainForm.ValidCent: Boolean; { pre: true ret: Length(S) = 2) /\ (S[1] in Digit) /\ (S[2] in Digit), waarin S=EditCent.Text

} var S: String; S := EditCent.Text; Result := (Length(S) = 2) and (S[1] in Digit) and (S[2] in Digit); 16. En voor ValidBedrag: function TMainForm.ValidBedrag: Boolean; { pre: true ret: ValidEuro /\ ValidCent } Result := ValidEuro and ValidCent; 17. Als het goed is kan er nu gecontroleerd worden of er een geldig bedrag staat. Als dit zo is moet er op de knop gedrukt kunnen worden. Voeg een OnChange-event toe aan de beide edit-boxen, zodanig dat de knop wordt aangezet (met de enabledproperty) indien de functie ValidBedrag true teruggeeft en de knop wordt uitgezet indien de functie false terug geeft. 18. Run je programma nog maar eens. Als je alles goed hebt gedaan zul je zien dat je de knop nu kan gebruiken indien je een correct bedrag invoert. Het enige dat er nu nog moet gebeuren is dat het resultaat in de derde edit-box wordt gezet indien er op de knop gedrukt wordt. Je zou op dezelfde manier als bij 15 naar het OnClickevent kunnen gaan, maar je kunt ook gewoon dubbelklikken op de knop, dan wordt dat event automatisch gekozen omdat het het standaard event is bij een Button. Deze event-handler heeft de volgende specificatie: procedure TMainForm.Button1Click(Sender: TObject); { pre: ValidBedrag post: EditResultaat bevat tekst bij bedrag in EditEuro en EditCent } 19. Als het goed is doet je programma het nu. Probeer het nu eens uit te breiden zodat je niet meer op de knop hoeft te drukken om het resultaat op beeld te krijgen als er een geldig bedrag staat. 20. In de meeste windows-programma s kun je door middel van de tab toets de focus wisselen tussen de verschillende componenten op je scherm. Het is prettig als dit in een handige volgorde gebeurt. Deze volgorde kun je instellen met de property TabOrder. Dit is een waarde die uniek is voor alle componenten op je form. De component met de waarde 0 zal na het opstarten de focus hebben. Indien er op tab wordt geduwd zal de component met de volgende TabOrder de focus krijgen.