La boîte à Tutoriels de Christopher PECAUD

Installer et Utiliser Lazarus sous Raspberry Pi Os

Laisser un commentaire

SOMMAIRE


I Introduction
II Installation de Lazarus 4.2
III Petit tour d’horizon de l’interface
III Création d’une application simple
IV Conclusion

I Introduction

Dans ce document vous allez apprendre à installer et utiliser cet IDE de programmation en langage Pascal Objet. Nous verrons de même comment installer le paquet de composants Indy en vue de l’utiliser pour obtenir des informations sur notre Raspberry Pi. Si vous avez déjà travaillé sur l’IDE Delphi sous Windows, la transition devrait se faire sans trop de problème.

II Installation de Lazarus 4.2

Pour installer cet IDE il faut installer un paquet Debian avec ces paquets associés. La page du projet pour la plateforme Debian est disponible à cette adresse : https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20arm64%20DEB/Lazarus%204.2/

La page affiche les 3 paquets Debian à télécharger :

  • fpc-laz_3.2.3-240813_arm64.deb
  • fpc-src_3.2.3-240813_arm64.deb
  • lazarus-project_4.2.0-0_arm64.deb

Comme le notifie la section « Install them in order », il faut installer ces paquets dans cette ordre avec la commande dpkg

Pour installer le paquet fpc-laz, utilisez cette ligne de commandes :

$sudo dpkg -i fpc-laz_3.2.3-240813_arm64.deb

Installez ensuite le second paquet fpc-src :

$sudo dpkg -i fpc-src_3.2.3-240813_arm64.deb

Puis installez pour finir le paquet lazarus-project :

$sudo dpkg -i azarus-project_4.2.0-0_arm64.deb

Les packages sont alors installés voyons un peu comment se présente l’application.

III Petit tour d’horizon de l’interface

Pour lancer l’application Lazarus, ouvrez le menu « Démarrer » de Raspberry Pi Os et dans le menu «  Programmation », choisissez « Lazarus »

description image

L’interface de Lazarus s’affiche à l’écran.

Par défaut plusieurs fenêtres s’affichent à l’écran :

La fenêtre du haut affiche la barre de menu de l’application ainsi que sa barre d’outils :

description image

C’est par l’intermédiaire de ces deux barres que l’essentiel des actions vont être effectuées. Vous pouvez voir aussi la liste de tous les composants actuellement installées et qui vous serviront à créer et personnaliser vos fiches ou créer des composants. Vous allez donc pouvoir interagir avec votre code grâce à ces deux barres.

Une autre fenêtre essentielle est la fenêtre nommée « Inspecteur d’Objets » qui est placée par défaut à gauche. Celle-ci est essentielle pour paramétrer les propriétés des composants que vous placerez sur votre fiche. Par exemple pour un label (une étiquette) ; voici les propriétés associées :

description image

Comme vous pouvez le voir cette fenêtre est composée de 3 parties :

La partie du haut liste les différents composants qui ont été déposés sur la fiche ;

La partie du bas est composée de deux onglets, le premier liste les différentes propriétés de l’objet/Composant sélectionné ;

Le second onglet liste les événements associés à l’objet sélectionné (clic sur un bouton, chargement d’une fenêtre, etc.).

Comme vous pouvez le constater les objets sont hiérarchisés sous forme de TreeView en haut nous avons le composant Parent de type Tform qui représente en fait la fiche qui est en train d’être designée. Les objets qui viennent ensuite sont les objets déposés dessus. Comme vous pouvez le voir aussi certains composants peuvent contenir d’autres composants. Comme par exemple l’objet de type Tgroupbox. Enfin un dernier mot pour vous dire que tout est objet dans les IDE Pascal Objet.

Vient ensuite la partie centrale de l’application qui est l’éditeur de texte. C’est dans cette fenêtre que vous allez éditer votre code. Vous allez pouvoir de même interagir avec le debuger en y plaçant des points de débogage.

Vient ensuite la fenêtre « Messages » située en bas de la fenêtre d’édition de code qui est la fenêtre de débogage pr excellence. C’est dans celle-ci que vous verrez apparaître les erreurs qui peuvent se trouver dans votre code. Si c’est le cas vous obtiendrez des messages plus ou moins explicite sur l’erreur rencontrée.

Dans la fenêtre de droite vous pouvez voir l’explorateur de code. Celui-ci se présente sous forme d’une arborescence et est découpé en trois sessions :

La session « unit s » qui regroupe toutes les unités utiles à importer dans le code pour que le programme fonctionne correctement.

La session « Types » regroupe tous les types d’objet (composant) déposés sur votre fiche.

Enfin vient la session « Variables » qui liste toutes les variables que vous aurez créées pour le bon fonctionnement de votre code.

Et pour finir vient la fenêtre graphique correspondant à votre fiche, qui correspondra à la fenêtre principale lorsque l’application sera lancée.

Pour la personnaliser, il suffit de glisser-déposer les composants présents dans les onglets de la barre d’outils et de les placer comme bon vous semble pour créer une interface ergonomique.

Dans la suite de ce tutoriel, nous verrons ensuite un petit exemple d’applications réalisé avec cet IDE.

III Création d’une application simple

Dans ce tutoriel nous allons commencer simplement en créant une application fenêtrée qui affichera dans un label « Hello » + le nom entrée dans un objet de type Tedit. Ce projet d’apparence simple vous permettra d’entrevoir quelques concepts comme création d’un projet dans Lazarus, le design de la fiche et en autre la gestion d’un événement.

Commençons par la création du projet dans Lazarus.

Si vous ne l’avez pas encore fait, lancez Lazarus depuis le menu Démarrez de raspberry Pi Os. L’interface s’affiche en montrant une boîte de dialogue de démarrage :

description image

Cliquez sur le bouton « Nouveau Projet » et la fenêtre suivante apparaît alors :

description image

Veillez à bien sélectionner le type « Application ».

Cliquez sur « Ok ».

L’IDE crée un nouveau projet nommé par défaut project1 avec une fiche nommée par défaut Form1 et un fichier unité nommé unit1.pas.

Dans un premier temps on va sauvegarder le projet et les fichiers associés avec un nom plus parlant. Dans le menu fichier sélectionnez la commande « Enregistrer sous... » :

description image

On peut renommer chaque fichier par « Helloword » comme ceci :

description image

Faites de même pour tous les fichiers associés.

Nous allons personnaliser la fiche pour que celle-ci ressemble à ceci :

description image

Dans un premier temps, allez dans l’onglet « Standard de la barre d’outils des composants, puis recherchez le composant TgroupBox :

description image

Double-cliquez dessus celui apparaît alors sur la fiche  et redimensionnez-le pour qu’il apparaisse maintenant comme ceci :

description image

Le texte qui s’affiche par défaut est « Groupbox1 », vous pouvez le modifier en vous rendant dans la fenêtre « Inspecteur d’objet » et en modifiant la valeur associée à la propriété « Caption ». Saisissez « Contact » par exemple et validez en appuyant sur la touche « Entrée » de votre clavier. La légende a changé sur la fiche aussi :

description image

Comme vous pouvez le constater, nous pouvons aussi pour modifier le nom de l’objet dans l’inspecteur d’objet en modifiant la propriété « Name’. Chaque composant a cette propriété. Une fois le nom modifié la modification se répercute directement dans le code de l’unité associé à votre fiche. Vous pouvez aussi faire de même avec le nom de la fiche qui est par défaut « Form1 ». Il suffit de cliquez sur un endroit de la fiche en dehors du composant TgroupBox que l’on vient de déposer. Renommez le composant « HellowordFrm » par exemple. Ici laissez des composants avec des noms par défaut n’a pas trop d’incidence mais pour de plus gros projets cela vous permettra d’avoir un meilleur suivi de votre code dans le temps et vous en perdrez beaucoup moins.

Voici à quoi correspond votre projet à ce moment précis :

description image

Maintenant déposez ces composants sur la fiche (toujours disponibles dans l’onglet :

  • Un composant Tlabel ayant pour nom « lblPrenom » ;
  • Un composant Tedit ayant pour nom « txtPrenom » ;
  • Un composant Tlabel ayant pour nom « lblNom » ;
  • Un composant Tedit ayant pour nom « txtNom ».

Le composant de type Tlabel est une simple étiquette alors que le composant de type Tedit est une zone de texte qui permet à l’utilisateur de saisir ce qu’il souhaite.

Normalement votre fiche devrait ressembler à ceci :

description image

Un autre composant Tlabel qui affichera le résultat.

Nous allons placer maintenant deux composants de type Tbutton :

  • Un nommé « btnCancel » qui permettra de supprimer le contenu des composants Tedit ;
  • Un nommé « btnHello » qui permettra d’afficher dans le composant nommé « lblHello » le message suivant : Hello suivi du Prénom renseigné et nom renseigné.

Voici à quoi ressemble votre fiche maintenant :

description image

Nous allons passer maintenant au code de l’application.

Nous allons entrevoir quelques concepts comme les méthodes de classe et les événements entre autre.

La gestion de ces concepts est très simplifiés avec un EDI comme Lazarus, tout comme avec Delphi sous Windows. Par exemple pour prendre en charge l’événement clic sur un bouton, il suffit de cliquer dessus et le gestionnaire d’événement est automatiquement créé dans le code.

description image

Comme vous pouvez le constater il crée automatiquement la procédure btnHelloClick associée au bouton sélectionné. Elle apparaît deux fois, une fois dans la définition de la classe et une autre fois dans le code et c’est à cette endroit que nous allons définir les actions à accomplir lorsque le bouton sera cliqué.

Ce que l’on veut réaliser dans notre cas présent est simple : prendre le contenu des deux composants Tedit et afficher un message dans le composant étiquette de type Tlabel ayant pour nom lblHello.

Placez le curseur dans le corps de la procédure qui vient d’être créée et saisissez le code suivant :

procedure THellowordFrm.btnHelloClick(Sender: TObject);
begin
   // Test si les zones d'édition ont été remplies
   if (txtNom.Text <> '') and (txtPrenom.Text <> '') then
   begin
     //Affichage du message
     lblHello.Caption := ‘Hello ‘ + txtNom.Text + ‘ ‘ + txtPrenom.Text;
   end;
end; 

Comme vous pouvez le remarquez on peut introduire des commentaires dans notre code source. Ces éléments ne sont pas interprétés par l’IDE mais sont essentiels au bon suivi du code. Ils sont introduits par l’intermédiaire de ces caractères « // ».

On teste ensuite si le contenu des deux zones d’édition n’est pas nul. Et si c’est le cas, on affiche le message de bienvenue dans l’étiquette prévue à cet effet.

On va faire de même avec le bouton « btnCancel ». Cette fois-ci son rôle va être de supprimer le contenu des deux zones d’éditions. Le contenu de la procédure associée doit ressembler à ceci  :

procedure THellowordFrm.btnCancelClick(Sender: TObject);
begin
  txtPrenom.Text:='';
  txtNom.Text:='';
end;

Nous pouvons aussi faire en sorte que les zone d’éditions soient vides lors du chargement de l’application. C’est un des événements les plus utilisées pour initialiser des variables, des propriétés d’objets, etc.

Pour créer la procédure liée à ce type d’événement, double-cliquez sur la fiche à n’importe quel endroit (mais en évitant de cliquez sur de ces composants), comme la barre de titre.

Comme les deux procédures précédemment ajoutées au code, elle est définie dans le corps de la classe et le corps de celle-ci est ajouté dans le bas du listing à la suite. Le contenu de cette procédure est très simple et est identique à celui de celle associée au composant « btnCancel » :

procedure THellowordFrm.FormCreate(Sender: TObject);
begin
  txtPrenom.Text:='';
  txtNom.Text:='';
end;         


Le code est maintenant terminé, voici le code complet de l’application :

unit Helloworld;

{$mode objfpc}{$H+}

interface

uses

  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { THellowordFrm }

  THellowordFrm = class(TForm)

    btnCancel: TButton;
    btnHello: TButton;
    lblHello: TLabel;
    txtPrenom: TEdit;
    txtNom: TEdit;
    gbxContactsDetails: TGroupBox;
    lblPrenom: TLabel;
    lblNom: TLabel;
 
	procedure btnCancelClick(Sender: TObject);
    procedure btnHelloClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);


  private

  public

  end;

var

  HellowordFrm: THellowordFrm;

implementation

{$R *.lfm}

{ THellowordFrm }


procedure THellowordFrm.btnHelloClick(Sender: TObject);

begin
   // Test si les zones d'édition ont été remplies
   if (txtNom.Text <> '') and (txtPrenom.Text <> '') then
   begin
     //Affichage du message
     lblHello.Caption := 'Hello ' + txtNom.Text + ' ' + txtPrenom.Text;
   end;
end;

procedure THellowordFrm.FormCreate(Sender: TObject);
begin
  txtPrenom.Text:='';
  txtNom.Text:='';
end;



procedure THellowordFrm.btnCancelClick(Sender: TObject);
begin
  txtPrenom.Text:='';
  txtNom.Text:='';
end;


end.      


On peut tester l’application maintenant. Nous devons dans un premier temps compiler notre projet. Allez dans le menu Exécuter puis choisissez la commande « Compiler », puis « Créer » :

description image

Si tout s’est bien déroulé vous devriez ce message dans la fenêtre « Messages » :

description image

Voyons maintenant les fichiers créés par Lazarus dans le dossier de votre projet.

description image

Et ensuite exécutez l’application en sélectionnant la commande « Exécuter » ou appuyez sur la touche F9.

La fiche apparaît et vous pouvez saisir un nom et un prénom et appuyer sur le bouton « Hello ! ».

Voilà nous avons fait un petit tour d’horizon de cette application.

IV Conclusion

Nous avons vu au cours de ce tutoriel, qu’il était possible d’installer un IDE tel que Lazarus et de programmer en langage Pascal Objet sous Raspberry Pi OS. Cet IDE nous permet de développer des applications faisant appel aux broches GPIO du Raspberry Pi. Nous verrons ceci dans un prochain tutoriel.

blog comments powered by Disqus
RapidWeaver Icon

Réalisé avec Rapidweaver