09 novembre 2007
A la découverte de Lazarus
Présentation
Lazarus est un environnement de développement rapide open source largement inspiré par Delphi, et basé sur Free Pascal, une implémentation orientée objet du langage Pascal. Cependant, il possède un atout supplémentaire non négligeable: la portabilité. Bien que le langage soit compilé, il n'y a pas à se soucier des plateformes cibles dans le code.

L'un des principes de Lazarus est de "coder une fois, puis compiler n'importe où" (en opposition à Java où l'on "code une fois" , puis on "exécute n'importe où"). Le souci d'optimisation et la rapidité d'exécution sont nettement palpables lorsqu'on utilise Lazarus, par rapport à du Java ou du Dot Net. Pas besoin non plus de machine virtuelle.
Exemple
Voici maintenant un exemple de mini paintbrush fait avec Lazarus à télécharger ici (je n'en ai pas trouvé en farfouillant sur internet).

Son principe est relativement simple. L'ardoise magique est représentée par un composant TImage dans lequel on peut dessiner de manière persistante. Pour éviter les clignotements, il faut activer le mode Double Buffered :
procedure TFrmMain.FormCreate(Sender: TObject);
begin
Inherited;
self.DoubleBuffered := true;
(* ... *)
end;
On détermine si le crayon est levé ou non en utilisant les événements OnMouseDown (click souris) et OnMouseUp (fin du click souris) de l'image.
procedure TFrmMain.ImgWhiteBoardMouseDown(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
self.ImgWhiteBoard.Canvas.MoveTo(X, Y);
self._draw := true;
end;
procedure TFrmMain.ImgWhiteBoardMouseUp(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
self._draw := false;
end;
Ensuite, lors du déplacement de la souris sur l'ardoise (événement OnMouseMove), on dessine une ligne si le bouton est appuyé.
procedure TFrmMain.ImgWhiteBoardMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if (self._draw) then begin
self.ImgWhiteBoard.Canvas.LineTo(X,Y);
end;
end;
Voilà. Dans mon souvenir, faire la même chose en Java Swing est un tantinet plus compliqué...
Lazarus est un environnement de développement rapide open source largement inspiré par Delphi, et basé sur Free Pascal, une implémentation orientée objet du langage Pascal. Cependant, il possède un atout supplémentaire non négligeable: la portabilité. Bien que le langage soit compilé, il n'y a pas à se soucier des plateformes cibles dans le code.

L'un des principes de Lazarus est de "coder une fois, puis compiler n'importe où" (en opposition à Java où l'on "code une fois" , puis on "exécute n'importe où"). Le souci d'optimisation et la rapidité d'exécution sont nettement palpables lorsqu'on utilise Lazarus, par rapport à du Java ou du Dot Net. Pas besoin non plus de machine virtuelle.
Exemple
Voici maintenant un exemple de mini paintbrush fait avec Lazarus à télécharger ici (je n'en ai pas trouvé en farfouillant sur internet).

Son principe est relativement simple. L'ardoise magique est représentée par un composant TImage dans lequel on peut dessiner de manière persistante. Pour éviter les clignotements, il faut activer le mode Double Buffered :
procedure TFrmMain.FormCreate(Sender: TObject);
begin
Inherited;
self.DoubleBuffered := true;
(* ... *)
end;
On détermine si le crayon est levé ou non en utilisant les événements OnMouseDown (click souris) et OnMouseUp (fin du click souris) de l'image.
procedure TFrmMain.ImgWhiteBoardMouseDown(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
self.ImgWhiteBoard.Canvas.MoveTo(X, Y);
self._draw := true;
end;
procedure TFrmMain.ImgWhiteBoardMouseUp(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
self._draw := false;
end;
Ensuite, lors du déplacement de la souris sur l'ardoise (événement OnMouseMove), on dessine une ligne si le bouton est appuyé.
procedure TFrmMain.ImgWhiteBoardMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if (self._draw) then begin
self.ImgWhiteBoard.Canvas.LineTo(X,Y);
end;
end;
Voilà. Dans mon souvenir, faire la même chose en Java Swing est un tantinet plus compliqué...
Libellés : informatique, programmation, unix, windows