Les 3: Let's code !

 
Onze EuroConvertor doet nog steeds niets zinvols. Daar brengen we in deze les verandering in.

In les 2 plaatsten we wat voorlopige code in de Event Handler van de knop EuroButton. Maar wat moet deze Event Handler nu echt gaan doen?
 

  • De tekst "Euro" moet getoond worden in MuntLabel.
  • De tekst van de Edit wordt om te beginnen omgezet worden in een getal.
  • Vanuit dit getal (de waarde in Euro) wordt de waarde in BEF berekend (vermenigvuldigen met 40.3399).
  • Dit getal wordt opnieuw omgezet naar tekst en getoond in BEFLabel.
  • Tenslotte wordt de tekst van de Edit ook getoond in EuroLabel.

Tussenwaarden van de berekeningen en teksten plaatsen we in de variabelen Euro, Fr, S1 en S2. Variabelen moet je eerst declareren: opgeven dat het variabelen zijn, en hun namen opgeven gevolgd door hun type. Dat doe je VOOR het woord begin in de routine.

  1. Let's code! Start Delphi en open het project euronl01.dpr via het menu File en Open Project...
  2. Verwijder de voorlopige tekst die we in les 2 in de event handler van de knop EuroButton plaatsten en typ nieuwe tekst, zodat het er als volgt uitziet:
    procedure TForm1.EuroButtonClick(Sender: TObject);
    var
      Euro, Fr: real;
      S1, S2: string;
    begin
      MuntLabel.Caption := 'Euro';
      Euro := StrToFloat(InputEdit.Text);
      Fr := Euro * 40.3399;
      S1 := FormatFloat('0.00', Euro);
      S2 := FormatFloat('0.00', Fr);
      EuroLabel.Caption := S1;
      BEFLabel.Caption := S2;
    end;
  3. Compileer en test: het werkt! ...als je geen typfouten maakte ;-)
  4. We stoppen de applicatie en programmeren verder.
    BEFButton moet het "omgekeerde" doen van EuroButton, dus: de tekst "BEF" in MuntLabel plaatsen en de ingevoerde waarde converteren van Euro naar BEF (delen door 40.3399). De rest is zo goed als identiek aan de handler die we schreven voor EuroButton. Doe het volgende:

    Selecteer BEFButton, selecteer in de Object Inspector zijn OnClick event en dubbelklik op het witte vakje er naast. Delphi geeft alvast een naam aan de event handler: BEFButtonClick.

    In de Editor vervolledig je deze event handler als volgt:
    procedure TForm1.BEFButtonClick(Sender: TObject);
    var
      Euro, Fr: real;
      S1, S2: string;
    begin
      MuntLabel.Caption := 'BEF';
      Fr := StrToFloat(InputEdit.Text);
      Euro := Fr / 40.3399;
      S1 := FormatFloat('0.00', Euro);
      S2 := FormatFloat('0.00', Fr);
      EuroLabel.Caption := S1;
      BEFLabel.Caption := S2;
    end;
  5. Compileer en test. Bravo!
  6. Sla het project op (Save All).

 

Commentaar toevoegen

In een Delphi programma kan je op verschillende manieren commentaar toevoegen:

// Deze notatie gebruik je voor 1 lijn commentaar

// Of zo:
S1 := Edit1.Text // de tekst van Edit1 even bewaren in S1

{ Dit is ook commentaar }
{ Commentaar tussen 'accolades' kan zich uitstrekken over
  meerdere regels.
  Het commentaar-blok stopt dus op het einde van deze regel. }

(* De combinatie van ronde haakjes en sterretjes (asterix)
   mag ook gebruikt worden in plaats van accolades. Dit kan
   interessant zijn indien je blokken commentaar wil 'nesten',
   wat niet gaat indien je slechts één soort commentaar-
   scheidingstekens zou gebruiken.
   Persoonlijk gebruik ik deze notatie niet voor commentaar, maar
   om stukken code tijdelijk uit te schakelen tijdens het testen,
   zoals in het volgende voorbeeld:                               *)

(*
  { Deze code geeft een fout. Eventjes
    uitschakelen om te kijken of het dan beter gaat... }

  Label1.Text := Edit1.Text;
*)

Merk op dat in de Editor commentaar anders weergegeven wordt: standaard in het blauw en Italic. Op deze pagina's toon ik het niet in Italic, dat is wat te veel van het goede.

Ook bepaalde andere elementen kan je op een "speciale" manier laten weergeven: gereserveerde woorden (reserved words) in bold, tekst (strings in Delphi-taal) in het blauw, getallen in het rood, enzovoorts... Dat stel je in via het menu Tools, commando Environment Options, steekkaart Color.

Ik voegde wat commentaar toe aan de unit euroform.pas, zodat ik later (hopelijk) nog zal begrijpen wat ik vandaag eigenlijk bedoelde. Bekijk de volgende code eens en voeg daarna naar eigen smaak ook wat commentaar toe aan jouw versie van de unit:

unit euroform;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    InputEdit: TEdit;
    MuntLabel: TLabel;
    Label2: TLabel;
    EuroLabel: TLabel;
    BEFLabel: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    EuroButton: TButton;
    BEFButton: TButton;
    procedure EuroButtonClick(Sender: TObject);
    procedure BEFButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ Event handler voor EuroButton: conversie van Euro naar BEF.
  Toont de naam van de start-munteenheid, converteert de tekst
  van de Edit-box naar Belgische frank, toont de resultaten    }
procedure TForm1.EuroButtonClick(Sender: TObject);
var
  Euro, Fr: real;
  S1, S2: string;
begin
  // Toon de naam van de start-munteenheid
  MuntLabel.Caption := 'Euro';

  // Converteer tekst van de EDIT naar een numerieke waarde
  Euro := StrToFloat(InputEdit.Text);

  // Converteer Euro naar BEF
  Fr := Euro * 40.3399;

  { Converteer de floating point getallen naar string-formaat.
    '0.00' is de "Format String" en betekent:
    'geef het resultaat met 2 cijfers na de komma'            }
  S1 := FormatFloat('0.00', Euro);
  S2 := FormatFloat('0.00', Fr);

  // Plaats de strings in de CAPTION van de LABELs
  EuroLabel.Caption := S1;
  BEFLabel.Caption := S2;
end;

{ Event handler voor BEFButton: conversie van BEF naar Euro.
  Toont de naam van de start-munteenheid, converteert de tekst
  van de Edit-box naar Euro, toont de resultaten              }
procedure TForm1.BEFButtonClick(Sender: TObject);
var
  Euro, Fr: real;
  S1, S2: string;
begin
  // Toon de naam van de start-munteenheid
  MuntLabel.Caption := 'BEF';

  // Converteer de tekst van de EDIT naar numerieke waarde
  Fr := StrToFloat(InputEdit.Text);

  // Converteer BEF naar Euro
  Euro := Fr / 40.3399;

  { Converteer de floating point getallen naar string-formaat.
    '0.00' is de "Format String" en betekent:
    "geef het resultaat met 2 cijfers na de komma"            }
  S1 := FormatFloat('0.00', Euro);
  S2 := FormatFloat('0.00', Fr);

  // Plaats de strings in de CAPTION van de LABELs
  EuroLabel.Caption := S1;
  BEFLabel.Caption := S2;
end;

end.

Tot volgende keer bij les 4!

[ TOP ]   [ HOME ]  

© Copyright 1999 - 2007
DelphiLand