een component bestaat uit data en code. data zijn waarden, zoals 'height = 140' en code is lopend programma.
je hoeft in Delphi geen stukjes code te schrijven die steeds kijken of er een toets is ingedrukt. Delphi compileert hiervoor per component een standaard 'event handler'. zo heeft elk component een eigen Click handler, voor als er met de muis op wordt geklikt, en ook een eigen OnKeyDown handler voor toetsindruk.
ik heb een demootje voor je gemaakt. als je het goed doorneemt denk ik dat je er in ieder geval van leert. je hebt een Button1 en een Memo1 nodig op je form. je hoeft geen properties te veranderen, enkel de code toe te voegen zodat jouw unit er hetzelfde uitziet als de zometeen volgende.
de standaard event handler TForm1.FormCreate krijg je op je scherm door op je form te dubbelklikken. hierin komt in de regel alle initialisatie.
de standaard event handler TForm1.Button1Click krijg je op je scherm door op Button1 te dubbelklikken. hierin staat wat Windows moet doen als de gebruiker op de delphi-knop drukt.
de standaard event handler TForm1.Button1KeyDown krijg je op je scherm door de knop te selecteren in de Object Inspector, naar de tab 'Events' te gaan en daar vlak rechts van OnKeyDown in het wit te dubbelklikken.
hierin staat wat Windows moet doen als de gebruiker tijdens de tellende lus plotseling op een toets drukt. Hier zou je de twee handlers die ik hiervoor noemde ook kunnen krijgen door naast het OnClick event te dubbelklikken.
typ de aanvullende code in de code zodat het er als volgt uit komt te zien:
---------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
t: Integer;
ContLoop: Boolean;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ContLoop := true;
t := 0
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
repeat
Application.ProcessMessages; //nodig om de processor te dwingen
//te kijken of er events hebben plaatsgevonden
Memo1.Lines.Add(IntToStr(t));
Inc(t);
until (t > 4999) or (ContLoop = false)
end;
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ContLoop := False
end;
end.