A TButton is one of the most basic controls on a Form. Clicking with the mouse on it (or change with the Tab ⇆ key on the button and pressed it with ↵ Enter), an action is triggered. This click is called an event. For this you need event handler that are called after the jump.
The event handler for a mouse click can be quite easily reached in which a double-click on the pasted Button (or in the Object Inspector, select the event OnClick of your Button). The event handler for a Button1 on a form Form1 will look like this:
procedure TForm1.Button1Click(Sender: TObject); begin end;
Almost all available beginner tutorials use TButtons as an easy entry into the Object Oriented Programming with Lazarus. Following tutorials are well suited for beginners to understand the use of buttons:
- The first GUI application for absolute beginners
- Your first Lazarus program tutorial for Lazarus
- Programming Example Object Oriented Programming with Free Pascal and Lazarus
A simple example
- Create a new application and drop a TButton on the form.
- Doubleclick this Button1 on the form (the default handler: OnClick is created for Button1, the source text editor opens).
- Add following code in the event handler:
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Lazarus makes my day'); //A message will be displayed with the content... end;
- Start your program (with Key F9).
Sometimes, instead of creating buttons (or other components) with the Lazarus form designer, it is easier to create them dynamically at run time. This approach is useful especially if you have continually repeated buttons on a form.
This can be achieved as in the the following example (a quick calculator):
- Create a new blank GUI application with the form Form1 and add StdCtrls to the uses clause (here the TButton is).
- Change caption Form1 to QuickAdd.
- Create the OnCreate event handler of Form1 (go in the Object Inspector to the event OnCreate and click the button [...]).
- Add following code:
procedure TForm1.FormCreate(Sender: TObject); var i: Integer; aButton: TButton; begin for i := 0 to 9 do begin // create 10 Buttons aButton := TButton.Create(Self); // create Button, Owner is Form1, where the button is released later aButton.Parent := Self; // determine where it is to be displayed aButton.Width := aButton.Height; // Width should correspond to the height of the buttons aButton.Left := i * aButton.Width; // Distance from left aButton.Caption := IntToStr(i); // Captions of the buttons (0.9) aButton.OnClick := @aButtonClick; // the event handler for the button -> will be created yet end; Self.Height := aButton.Height; // Height of the form should correspond to the height of the buttons Self.Width := aButton.Width * 10; // Width of the form to match the width of all buttons end;
- Now you must create the event handler for the button clicks.
- In the source editor, entering your class TForm1 in the section
procedure aButtonClick(Sender: TObject);and then press the keys Ctrl+⇧ Shift+c (the code completion becomes active and creates the procedure
- Paste following code:
procedure TForm1.aButtonClick(Sender: TObject); const Cnt: Integer = 0; var i: Integer; begin if (Sender is TButton) and // called the event handler of a button out? TryStrToInt(TButton(Sender).Caption, i) // then try to convert the label in a integer then begin Cnt := Cnt + i; // the adding counter is incremented by the number of entrechende Caption:='QuickAdd: '+IntToStr(Cnt); // write the result to the caption of the form end; end;
- Start your application.